diff options
| author | Mike Vink <ivi@vinkies.net> | 2025-06-25 11:31:32 +0800 |
|---|---|---|
| committer | Mike Vink <ivi@vinkies.net> | 2025-06-25 11:31:32 +0800 |
| commit | eb827a945cb7035859a47ca243559659d48d87dc (patch) | |
| tree | c375219d10ab3ccf074c76574ff262661fce15ef | |
| parent | c9d19864ed260a2b7f734b06265fce1137dd0c75 (diff) | |
make osc copy paste work on darwin
| -rwxr-xr-x | .local/bin/vis-clipboard | 42 |
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" } |
