diff options
| author | 2026-05-13 13:43:30 +0100 | |
|---|---|---|
| committer | 2026-05-13 13:43:30 +0100 | |
| commit | 651ec1f8b7470e2ffac848b4fe99ce7ccdb826dd (patch) | |
| tree | 59982c62e660dae5b1ec5504867bfcac4260f152 | |
| parent | 0a5c53a1198e9645501ec17af06478e0efb3bcc3 (diff) | |
| download | dotfiles-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.md | 5 | ||||
| -rw-r--r-- | dot_config/sway/config | 7 | ||||
| -rw-r--r-- | dot_config/waybar/executable_clip-picker.sh | 32 | ||||
| -rw-r--r-- | dot_config/waybar/executable_webcam-status.sh | 2 | ||||
| -rw-r--r-- | dot_config/wofi/config | 8 | ||||
| -rw-r--r-- | meta/wayland.txt | 3 | ||||
| -rw-r--r-- | run_onchange_after_deploy-flatpak-overrides.sh.tmpl | 4 |
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 |
