Hardware keys and desktop actions
The profile ships one keymap for hardware keys and desktop actions, on with the profile. The compositor’s built-in defaults stay window management only, because hardware binds spawn tools scoot does not ship.
| Press | Does | Needs (beside the profile) |
|---|---|---|
XF86MonBrightnessUp / Down |
panel +5% / -5% |
brightnessctl (installed) |
XF86AudioRaiseVolume / LowerVolume |
default sink +5% / -5% |
PipeWire running |
XF86AudioMute |
default sink mute toggle | PipeWire running |
XF86AudioMicMute |
default source mute toggle | PipeWire running |
XF86AudioPlay / Pause / Stop / Next / Prev |
play-pause / pause / stop / next / previous | a player speaking MPRIS |
Super+Escape |
lock (through logind) | the locker |
Super+d |
launcher (XDG apps) | launcher. (scootlaunch panel) |
Ctrl+Alt+Space |
run mode (PATH executables alone) | launcher. (scootlaunch --run) |
Super+v |
clipboard picker | clipboard. |
Super+n |
dismiss visible notifications | notifications. |
Super+Shift+n |
do-not-disturb toggle | notifications. |
Super+Ctrl+n |
show hidden notifications | notifications. |
Super+p |
cycle the power profile | power. (opt-in, never with the profile) |
Print |
screenshot every output into ~/Pictures |
capture. |
Shift+Print |
screenshot a picked region into ~/Pictures |
capture. |
Ctrl+Print |
screenshot a picked region into the clipboard | capture. |
Super+w |
WiFi picker | apps. (NetworkManager running) |
Super+b |
Bluetooth picker | apps. (BlueZ running) |
On an Apple keyboard these are the Fn row: F1/F2 brightness,
F7/F8/F9 previous/play/next, F10 mute, F11/F12 volume
down/up. Volume, brightness and mic-mute show the
on-screen display;
every other bind runs silent. No hardware keysym or Super combo above
overlaps the compositor defaults, including Super+Shift+e (quit) and
Super+Space (float focus).
Super+Space stays the float-focus default, so the launcher is on
Super+d. Ctrl+Alt+Space is the run menu, the combo the old wofi
example used.
Every value is an option, applied on rebuild/switch plus a session
reload (scoot msg reload) or re-login:
| Option | Type | Default | Meaning |
|---|---|---|---|
desktop. |
bool | true with the profile |
render the keymap into [binds] |
desktop. |
bool | true |
bind that key (brightnessUp, brightnessDown, volumeUp, volumeDown, volumeMute, micMute, mediaPlay, mediaPause, mediaStop, mediaNext, mediaPrev, lock, launcher, launcherRun, clipboard, notifDismiss, notifDnd, notifHistory, powerProfile, captureOutput, captureRegion, captureClipboard, network, bluetooth); false leaves its combo unbound |
Each bind renders as a default that a value you set in settings.
wins over. Override or remove one bind like this:
programs.scoot.desktop.keys.binds.volumeUp.enable = false;programs.scoot.settings.binds."XF86AudioRaiseVolume" = "spawn wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%+";Overriding with a plain string like that drops the bind’s repeat and lock-screen behavior (a string carries no flags). To keep them, override with the table form, action plus flags:
programs.scoot.settings.binds."XF86AudioRaiseVolume" = { action = "spawn wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%+"; repeat = true; allow_when_locked = true;};A bind whose tool is missing fails quietly: scoot logs a warning and carries on, and input never wedges. A partial setup degrades to dead keys, never to a broken session.
Troubleshooting, by symptom:
- A Fn key does nothing. Check the tool first, not the bind:
brightnessctl get,wpctl get-volume @DEFAULT_AUDIO_SINK@,playerctl status. Then check the bind reached the file ([binds]in~/., after a reload). Then check scoot saw the key:config/scoot/config. toml scoot msg key XF86AudioRaiseVolumeshould do what the key does. If it does, the compositor never received the keystroke. - Volume or brightness keys die at the lock screen. Those binds
fire while locked by default. If yours do not, the bind
lost its flags: overriding one with a plain string drops
allow_when_locked, and removing it throughbinds.leaves the combo unbound entirely. Check the rendered<name>. enable = false [binds]in~/.: a working volume bind is a table withconfig/scoot/config. toml allow_when_locked = true. - Holding volume up steps once. It should keep stepping at 25 Hz
after a 200 ms delay. A bind that fires once per press lost its
repeatflag the same way: a plain-string override, which the rendered[binds]shows as a bare string instead of a table withrepeat = true. (Overriding with a plain string drops both flags; to keep them, override with the table form, action plus flags. See the bind grammar.) Super+dopens nothing. The launcher slot is off: that bind renders only withlauncher.beside the keymap (both on with the profile), and either off leaves the combo unbound. Same forenable Ctrl+Alt+Space(the run bind) and for the three capture binds (Screenshots).Super+vruns the clipboard picker (Clipboard) wheneverclipboard.is on beside the keymap, as does theenable Super+nfamily (the notification daemon’s own commands) whenevernotifications.is, andenable Super+w/Super+b(the pickers) wheneverapps./network. enable apps.is.bluetooth. enable
