summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Vink <ivi@vinkies.net>2025-06-25 11:31:32 +0800
committerMike Vink <ivi@vinkies.net>2025-06-25 11:31:32 +0800
commiteb827a945cb7035859a47ca243559659d48d87dc (patch)
treec375219d10ab3ccf074c76574ff262661fce15ef
parentc9d19864ed260a2b7f734b06265fce1137dd0c75 (diff)
make osc copy paste work on darwin
-rwxr-xr-x.local/bin/vis-clipboard42
1 files changed, 32 insertions, 10 deletions
diff --git a/.local/bin/vis-clipboard b/.local/bin/vis-clipboard
index c1b9582..4642761 100755
--- a/.local/bin/vis-clipboard
+++ b/.local/bin/vis-clipboard
@@ -22,6 +22,11 @@ Options:
}
vc_determine_command() {
+ if command -v osc >/dev/null 2>&1; then
+ echo 'osc'
+ return 0
+ fi
+
if [ -n "$WAYLAND_DISPLAY" ]; then
for c in wl-copy wl-paste; do
if command -v "$c" >/dev/null 2>&1; then
@@ -52,11 +57,6 @@ vc_determine_command() {
return 0
fi
- if command -v osc >/dev/null 2>&1; then
- echo 'osc'
- return 0
- fi
-
if [ -c /dev/clipboard ]; then
echo 'cygwin'
return 0
@@ -149,15 +149,37 @@ vc_xclip_paste() {
vc_osc_copy() {
d="/dev/tty"
- [ -n "$kak_client_pid" ] && d="/proc/$kak_client_pid/fd/0"
- echo "$kak_client_pid" >> ~/logs
- echo osc copy -d "$d" >> ~/logs
- osc copy -d "$d"
+ if [ -n "$kak_client_pid" ]
+ then
+ if [ "$(uname -s)" = "Darwin" ]
+ then d="$(lsof -p "$kak_client_pid" |
+ while read -r cmd pid user fd type dev size node name
+ do if [ "$fd" = "0u" ]
+ then
+ echo "$name"
+ fi
+ done)"
+ else d="/proc/$kak_client_pid/fd/0"
+ fi
+ fi
+ osc copy -d "$d"
}
vc_osc_paste() {
d="/dev/tty"
- [ -n "$kak_client_pid" ] && d="/proc/$kak_client_pid/fd/0"
+ if [ -n "$kak_client_pid" ]
+ then
+ if [ "$(uname -s)" = "Darwin" ]
+ then d="$(lsof -p "$kak_client_pid" |
+ while read -r cmd pid user fd type dev size node name
+ do if [ "$fd" = "0u" ]
+ then
+ echo "$name"
+ fi
+ done)"
+ else d="/proc/$kak_client_pid/fd/0"
+ fi
+ fi
osc paste -d "$d"
}