1
0
Fork 0

bin: Merge clipboard wrappers

This commit is contained in:
Jeremy Kaplan 2026-04-11 22:52:26 -04:00
commit 303c3ab55e
9 changed files with 108 additions and 20 deletions

View file

@ -1,11 +0,0 @@
#!/bin/sh
cb_clear() {
wl-copy --foreground --clear "$@"
}
if cb_clear --primary && cb_clear; then
notify-send -t 1000 'cb-clear'
else
notify-send -t 1000 -h 'string:bgcolor:#ff0000' 'cb-clear failed to clear'
fi

29
bin/cbclear Executable file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env bash
set -euo pipefail
wl_clear() {
wl-copy --foreground --clear "$@"
}
pbclear() {
pbcopy -pboard "$1" < /dev/null
}
OSTYPE="$(uname -s)"
case "${OSTYPE}" in
Linux)
wl_clear --primary
wl_clear
;;
Darwin)
pbclear general
pbclear ruler
pbclear find
pbclear font
;;
*)
>&2 echo "Unknown OS type: ${OSTYPE}"
exit 1
;;
esac

17
bin/cbcopy Executable file
View file

@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -euo pipefail
OSTYPE="$(uname -s)"
case "${OSTYPE}" in
Linux)
exec wl-copy
;;
Darwin)
exec pbcopy
;;
*)
>&2 echo "Unknown OS type: ${OSTYPE}"
exit 1
;;
esac

10
bin/cbedit Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
# Somehow (last observed on a Mac), this pipeline ends up with a bunch of
# newlines at the end that make pasting it annoying. Use sed to remove all
# trailing newlines.
#
# https://stackoverflow.com/a/7359879/2472163
cbpaste | vipe | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' | cbcopy

17
bin/cbpaste Executable file
View file

@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -euo pipefail
OSTYPE="$(uname -s)"
case "${OSTYPE}" in
Linux)
exec wl-paste --no-newline
;;
Darwin)
exec pbpaste
;;
*)
>&2 echo "Unknown OS type: ${OSTYPE}"
exit 1
;;
esac

22
bin/cbwatch Executable file
View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -euo pipefail
cmd="$@"
if [ -z "$cmd" ]; then
cmd=cat
fi
OSTYPE="$(uname -s)"
case "${OSTYPE}" in
Linux)
exec wl-paste --watch $cmd
;;
Darwin)
>&2 echo "TODO: Make this work on macOS"
;;
*)
>&2 echo "Unknown OS type: ${OSTYPE}"
exit 1
;;
esac

View file

@ -1,12 +1,5 @@
#!/bin/sh #!/bin/sh
clear_pasteboard() { cbclear
pbcopy -pboard "$1" < /dev/null
}
clear_pasteboard general
clear_pasteboard ruler
clear_pasteboard find
clear_pasteboard font
osascript -e 'display notification "Clipboard cleared" with title "pbclear"' osascript -e 'display notification "Clipboard cleared" with title "pbclear"'

11
bin/wl-clear Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
wl_clear() {
wl-copy --foreground --clear "$@"
}
if wl_clear --primary && wl_clear; then
notify-send -t 1000 'wl-clear'
else
notify-send -t 1000 -h 'string:bgcolor:#ff0000' 'wl-clear failed to clear'
fi

View file

@ -177,7 +177,7 @@ focus_on_window_activation smart
mouse_warping output mouse_warping output
seat seat0 hide_cursor 5000 seat seat0 hide_cursor 5000
bindsym $super+x exec cb-clear bindsym $super+x exec wl-clear
bindsym $super+Backspace exec makoctl dismiss bindsym $super+Backspace exec makoctl dismiss
bindsym $super+Ctrl+Backspace exec makoctl dismiss --all bindsym $super+Ctrl+Backspace exec makoctl dismiss --all