aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:34 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:34 +0100
commit6b29fe2b16f2bc66f4921321644e87ec89c4b344 (patch)
treeedc6e2d6e383ab12f400d1b18559b6ce442e4bd4
parent7bcd28569189858a493227696e5479c577d72368 (diff)
downloaddotfiles-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.md26
-rw-r--r--dot_config/sway/config25
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.