diff options
| author | 2026-05-13 13:43:34 +0100 | |
|---|---|---|
| committer | 2026-05-13 13:43:34 +0100 | |
| commit | 6b29fe2b16f2bc66f4921321644e87ec89c4b344 (patch) | |
| tree | edc6e2d6e383ab12f400d1b18559b6ce442e4bd4 | |
| parent | 7bcd28569189858a493227696e5479c577d72368 (diff) | |
| download | dotfiles-6b29fe2b16f2bc66f4921321644e87ec89c4b344.tar.gz dotfiles-6b29fe2b16f2bc66f4921321644e87ec89c4b344.tar.bz2 dotfiles-6b29fe2b16f2bc66f4921321644e87ec89c4b344.zip | |
feat(sway): non-XF86 alternatives for media/hardware keybinds
Every sway action that was reachable only via an XF86 keysym now has
a Super-based alternative, so all bindings work on keyboards without
a multimedia row.
Frequent (direct binds, vim-direction layout on Super+Ctrl):
Super+Ctrl+k/j = volume +/-
Super+Ctrl+space = play/pause
Super+Ctrl+l/h = next/previous track
Super+Ctrl+]/[ = brightness +/-
Rare (submode 'system' via Super+x; one letter runs and exits):
b bluetooth · w wifi · r rfkill · s suspend · d display
v pulsemixer · k KEYBINDS viewer · m mako history
Escape/Return exits
Existing Super+m / Super+Shift+m / Super+Shift+s already covered
mic-mute / sink-mute / lock; XF86 binds untouched so the laptop's
Fn-row keeps working. KEYBINDS.md updated.
| -rw-r--r-- | KEYBINDS.md | 26 | ||||
| -rw-r--r-- | dot_config/sway/config | 25 |
2 files changed, 51 insertions, 0 deletions
diff --git a/KEYBINDS.md b/KEYBINDS.md index 0bbcd50..128e17a 100644 --- a/KEYBINDS.md +++ b/KEYBINDS.md @@ -307,15 +307,22 @@ Mod key: `Super` (Mod4). Only personal additions beyond sway defaults listed. | Key | Action | | ----------------------- | ------------------------------------------------------------- | | `XF86AudioRaiseVolume` | Volume +5% | +| `Super+Ctrl+k` | Volume +5% (non-XF86 alt) | | `XF86AudioLowerVolume` | Volume -5% | +| `Super+Ctrl+j` | Volume -5% (non-XF86 alt) | | `XF86AudioMute` | Mute toggle | | `Super+m` | Mic mute toggle | | `Super+Shift+m` | Speaker mute toggle | | `XF86AudioPlay` | Play/pause | +| `Super+Ctrl+space` | Play/pause (non-XF86 alt) | | `XF86AudioNext` | Next track | +| `Super+Ctrl+l` | Next track (non-XF86 alt) | | `XF86AudioPrev` | Previous track | +| `Super+Ctrl+h` | Previous track (non-XF86 alt) | | `XF86MonBrightnessUp` | Brightness +5% (brightnessctl) | +| `Super+Ctrl+]` | Brightness +5% (non-XF86 alt) | | `XF86MonBrightnessDown` | Brightness -5% (brightnessctl) | +| `Super+Ctrl+[` | Brightness -5% (non-XF86 alt) | | `XF86AudioMicMute` | Mic mute toggle | | `XF86Bluetooth` | Bluetooth power toggle (bluetoothctl) | | `XF86ScreenSaver` | Lock screen + pause media (same as Super+Shift+s) | @@ -349,6 +356,25 @@ Mod key: `Super` (Mod4). Only personal additions beyond sway defaults listed. | `Super+z` then `r` | Scan QR via webcam, copy to clipboard (rqr) | | `Super+t` | Toggle Thunderbird (tiled on current workspace) | +### System submode (sway/config) + +`Super+x` enters `mode "system"` (mode name shown in waybar). One letter +runs the action and exits the mode; `Escape` or `Return` exits without +acting. Provides non-XF86 access to the rare hardware toggles and TUI +launchers. + +| In `system` mode | XF86 equivalent | Action | +| ----------------- | --------------- | --------------------------- | +| `b` | `XF86Bluetooth` | Bluetooth power toggle | +| `w` | `XF86WLAN` | Wi-Fi toggle (rfkill wifi) | +| `r` | `XF86RFKill` | Toggle all radios (rfkill) | +| `s` | `XF86Sleep` | Suspend (systemctl suspend) | +| `d` | `XF86Display` | Display mode toggle | +| `v` | `XF86Tools` | Floating pulsemixer | +| `k` | `XF86Keyboard` | Floating glow KEYBINDS.md | +| `m` | `XF86Favorites` | mako notification history | +| `Escape`/`Return` | — | exit submode | + ## Typing / Input Layout: `us(altgr-intl)` with Caps→Esc and Right Ctrl as Compose diff --git a/dot_config/sway/config b/dot_config/sway/config index 9b72031..109a25e 100644 --- a/dot_config/sway/config +++ b/dot_config/sway/config @@ -139,6 +139,8 @@ bindsym $mod+Shift+Tab workspace prev_on_output bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym $mod+Ctrl+k exec pactl set-sink-volume @DEFAULT_SINK@ +5% +bindsym $mod+Ctrl+j exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym $mod+Shift+m exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym $mod+m exec pactl set-source-mute @DEFAULT_SOURCE@ toggle @@ -146,10 +148,15 @@ bindsym $mod+m exec pactl set-source-mute @DEFAULT_SOURCE@ toggle bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous +bindsym $mod+Ctrl+space exec playerctl play-pause +bindsym $mod+Ctrl+l exec playerctl next +bindsym $mod+Ctrl+h exec playerctl previous # Brightness bindsym XF86MonBrightnessUp exec brightnessctl set +5% bindsym XF86MonBrightnessDown exec brightnessctl set 5%- +bindsym $mod+Ctrl+bracketright exec brightnessctl set +5% +bindsym $mod+Ctrl+bracketleft exec brightnessctl set 5%- # ThinkPad multimedia keys bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle @@ -205,6 +212,24 @@ mode "qr" { } bindsym $mod+z mode "qr" +# System / hardware submode — non-XF86 alternatives for the rarely used +# hardware toggles and TUI launchers above. Enter with Super+x; mnemonic +# letters (b=bluetooth, w=wifi, r=rfkill, s=sleep, d=display, +# v=volume-mixer, k=keybinds, m=mako-history). +mode "system" { + bindsym b exec ~/.config/sway/bt-toggle.sh, mode "default" + bindsym w exec ~/.config/waybar/wifi-toggle.sh, mode "default" + bindsym r exec rfkill toggle all, mode "default" + bindsym s exec systemctl suspend, mode "default" + bindsym d exec ~/.config/sway/display-toggle.sh, mode "default" + bindsym v exec $term --class=floating -e pulsemixer, mode "default" + bindsym k exec $term --class=floating -e glow -p ~/dotfiles/KEYBINDS.md, mode "default" + bindsym m exec ~/.config/waybar/mako-history.py, mode "default" + bindsym Escape mode "default" + bindsym Return mode "default" +} +bindsym $mod+x mode "system" + # Thunderbird toggle: main window stashed in the scratchpad; this pulls it to # the current workspace (tiled) or sends it back. Child windows (compose, # viewer, calendar, prefs) tile normally wherever Thunderbird spawns them. |
