aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:30 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:30 +0100
commit651ec1f8b7470e2ffac848b4fe99ce7ccdb826dd (patch)
tree59982c62e660dae5b1ec5504867bfcac4260f152
parent0a5c53a1198e9645501ec17af06478e0efb3bcc3 (diff)
downloaddotfiles-651ec1f8b7470e2ffac848b4fe99ce7ccdb826dd.tar.gz
dotfiles-651ec1f8b7470e2ffac848b4fe99ce7ccdb826dd.tar.bz2
dotfiles-651ec1f8b7470e2ffac848b4fe99ce7ccdb826dd.zip
feat: vim nav in wofi, bemoji, clip picker, webcam glyph fix
- wofi config: key_up/key_down accept Up,k / Down,j; Ctrl-u/Ctrl-d for page jumps. Picker scripts auto-load this since they only pass --style. - waybar webcam glyph: U+F0D5D (camera/photo, looked Instagram-y) -> U+F0567 nf-md-video (handheld video camera). - Clipboard picker migrated from fuzzel to wofi for consistency with the notification picker. New driver dot_config/waybar/clip-picker.sh: pick (Mod+p) Enter pastes, Alt-d deletes delete (Mod+Shift+p) Enter deletes No clipboard "read" indicator: Wayland has no API for observing reads. - Emoji picker: bemoji on Mod+period, driven through wofi (so vim nav applies there too) and configured to type + copy via wtype. - LibreWolf flatpak: --device=all override so v4l2 webcams work. Flatpak has no finer-grained device flag. - KEYBINDS.md updated: Mod+p / Mod+Shift+p now describe wofi behavior; Mod+period documented.
-rw-r--r--KEYBINDS.md5
-rw-r--r--dot_config/sway/config7
-rw-r--r--dot_config/waybar/executable_clip-picker.sh32
-rw-r--r--dot_config/waybar/executable_webcam-status.sh2
-rw-r--r--dot_config/wofi/config8
-rw-r--r--meta/wayland.txt3
-rw-r--r--run_onchange_after_deploy-flatpak-overrides.sh.tmpl4
7 files changed, 56 insertions, 5 deletions
diff --git a/KEYBINDS.md b/KEYBINDS.md
index 892bbf4..7bf9745 100644
--- a/KEYBINDS.md
+++ b/KEYBINDS.md
@@ -331,8 +331,9 @@ Mod key: `Super` (Mod4). Only personal additions beyond sway defaults listed.
| `Super+Shift+n` | Dismiss all visible notifications (mark all seen) |
| `Super+Ctrl+n` | Restore last dismissed; pop it back into the pending set |
| `XF86Favorites` | Notification history picker (Enter re-shows + marks seen, Alt-c copies, Alt-d marks seen) |
-| `Super+p` | Clipboard history picker (cliphist + fuzzel) |
-| `Super+Shift+p` | Clipboard history delete entry |
+| `Super+p` | Clipboard history picker (wofi; Enter pastes, Alt-d deletes) |
+| `Super+Shift+p` | Clipboard history delete entry (Enter deletes) |
+| `Super+period` | Emoji picker (bemoji → wofi; types + copies) |
| `Super+Tab` | Next workspace |
| `Super+Shift+Tab` | Previous workspace |
| `Super+]` | Focus next window in container (monocle cycling) |
diff --git a/dot_config/sway/config b/dot_config/sway/config
index ee22e77..9cfb402 100644
--- a/dot_config/sway/config
+++ b/dot_config/sway/config
@@ -176,8 +176,11 @@ bindsym $mod+Shift+n exec ~/.config/waybar/dismiss-visible.sh all
bindsym $mod+Ctrl+n exec ~/.config/waybar/restore-pending.sh
# Clipboard history
-bindsym $mod+p exec sh -c 'cliphist list | fuzzel --dmenu | cliphist decode | wl-copy'
-bindsym $mod+Shift+p exec sh -c 'cliphist list | fuzzel --dmenu | cliphist delete'
+bindsym $mod+p exec ~/.config/waybar/clip-picker.sh pick
+bindsym $mod+Shift+p exec ~/.config/waybar/clip-picker.sh delete
+
+# Emoji picker (bemoji → wofi → wtype + clipboard)
+bindsym $mod+period exec env BEMOJI_PICKER_CMD="wofi --dmenu --hide-search --prompt Emoji --style $HOME/.config/wofi/style.css" bemoji -tc
# Display mode switching
bindsym --no-repeat XF86Display exec ~/.config/sway/display-toggle.sh
diff --git a/dot_config/waybar/executable_clip-picker.sh b/dot_config/waybar/executable_clip-picker.sh
new file mode 100644
index 0000000..11ebf4c
--- /dev/null
+++ b/dot_config/waybar/executable_clip-picker.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Clipboard picker on top of cliphist + wofi (vim-nav, hide-search,
+# Alt-d to delete the highlighted entry).
+#
+# Modes:
+# pick Enter pastes (cliphist decode | wl-copy)
+# delete Enter deletes (cliphist delete)
+#
+# Alt-d in pick mode deletes the highlighted entry without pasting.
+
+set -u
+
+mode=${1:-pick}
+style=$HOME/.config/wofi/style.css
+
+set +e
+selection=$(
+ cliphist list \
+ | wofi --dmenu --hide-search --prompt Clip \
+ --define key_custom_0=Alt-d \
+ ${style:+--style "$style"}
+)
+rc=$?
+set -e
+
+[ -z "$selection" ] && exit 0
+
+case "$mode:$rc" in
+ pick:0) printf '%s' "$selection" | cliphist decode | wl-copy ;;
+ pick:10) printf '%s' "$selection" | cliphist delete ;;
+ delete:0|delete:10) printf '%s' "$selection" | cliphist delete ;;
+esac
diff --git a/dot_config/waybar/executable_webcam-status.sh b/dot_config/waybar/executable_webcam-status.sh
index 997f97a..1b812a6 100644
--- a/dot_config/waybar/executable_webcam-status.sh
+++ b/dot_config/waybar/executable_webcam-status.sh
@@ -12,7 +12,7 @@ esac
# fuser exits 0 when at least one device has an opener, 1 otherwise. Stderr
# carries 'PID' for each match; redirect it away.
if fuser $devs >/dev/null 2>&1; then
- printf '{"text":"󰵝","tooltip":"webcam in use","class":"active","alt":"active"}\n'
+ printf '{"text":"󰕧","tooltip":"webcam in use","class":"active","alt":"active"}\n'
else
printf '{"text":"","alt":"idle"}\n'
fi
diff --git a/dot_config/wofi/config b/dot_config/wofi/config
new file mode 100644
index 0000000..a62893c
--- /dev/null
+++ b/dot_config/wofi/config
@@ -0,0 +1,8 @@
+# Wofi config (loaded automatically from ~/.config/wofi/config).
+# Vim nav alongside arrow keys, page-jumps with Ctrl-u/Ctrl-d.
+# Comma-separated key lists are supported by wofi >= 1.4.
+
+key_up=Up,k
+key_down=Down,j
+key_pgup=Page_Up,Ctrl-u
+key_pgdn=Page_Down,Ctrl-d
diff --git a/meta/wayland.txt b/meta/wayland.txt
index 2550083..b41668b 100644
--- a/meta/wayland.txt
+++ b/meta/wayland.txt
@@ -36,6 +36,9 @@ wf-recorder
# Wayland typing (used by dictate, etc)
wtype
+# Emoji picker (AUR; tiny shell script, multi-backend — we drive it through wofi)
+bemoji
+
# Image viewer
imv
diff --git a/run_onchange_after_deploy-flatpak-overrides.sh.tmpl b/run_onchange_after_deploy-flatpak-overrides.sh.tmpl
index d8be763..0456883 100644
--- a/run_onchange_after_deploy-flatpak-overrides.sh.tmpl
+++ b/run_onchange_after_deploy-flatpak-overrides.sh.tmpl
@@ -15,3 +15,7 @@ apply() {
apply org.pwmt.zathura --filesystem=xdg-config/zathura:ro
apply io.mpv.Mpv --filesystem=xdg-config/mpv:ro
+
+# LibreWolf needs raw /dev access for v4l2 webcams. Flatpak has no
+# finer-grained device option, so this opens video/dri/snd at once.
+apply io.gitlab.librewolf-community --device=all