Key bindings
The 81 bindings the shipped configuration makes, as solium --check lists them, with where each is made and what it calls. None of them belongs to the compositor: each is a sol.bind call in a script, so any of them can be changed or removed from the bindings section of user.lua (how), and solium --check then lists what your configuration replaced or removed.
Two chords are the compositor’s own and are not listed: ctrl+alt+backspace ends the session whatever the configuration says, except while the screen is locked, and ctrl+alt+F1 to ctrl+alt+F12 switch virtual terminal.
Nor is a key a mode binds only while it is up, because solium --check lists what the configuration binds as it loads: escape leaves the overview, and is bound only while the overview is open, so that the rest of the time it reaches the application with the keyboard.
init.lua
Solium’s default configuration.
| Keys | What it does | Where |
|---|---|---|
super+return | open_terminal — Both Enters. | init.lua:145 |
super+kp_enter | open_terminal — Both Enters. | init.lua:146 |
super+q | Close the focused window. | init.lua:150 |
super+shift+q | sol.quit() — Ending the session. | init.lua:161 |
XF86AudioRaiseVolume | run("wpctl", "set-volume", "-l", "1.0", SINK, "5%+"), "laptop keys" | init.lua:181 |
XF86AudioLowerVolume | run("wpctl", "set-volume", SINK, "5%-"), "laptop keys" | init.lua:182 |
shift+XF86AudioRaiseVolume | run("wpctl", "set-volume", "-l", "1.0", SINK, "1%+"), "laptop keys" | init.lua:183 |
shift+XF86AudioLowerVolume | run("wpctl", "set-volume", SINK, "1%-"), "laptop keys" | init.lua:184 |
XF86AudioMute | run("wpctl", "set-mute", SINK, "toggle"), "laptop keys" | init.lua:185 |
XF86AudioMicMute | run("wpctl", "set-mute", SOURCE, "toggle"), "laptop keys" | init.lua:186 |
XF86MonBrightnessUp | run("brightnessctl", "set", "5%+"), "laptop keys" | init.lua:187 |
XF86MonBrightnessDown | run("brightnessctl", "set", "5%-"), "laptop keys" | init.lua:188 |
XF86AudioPlay | run("playerctl", "play-pause"), "laptop keys" | init.lua:189 |
XF86AudioPause | run("playerctl", "play-pause"), "laptop keys" | init.lua:190 |
XF86AudioNext | run("playerctl", "next"), "laptop keys" | init.lua:191 |
XF86AudioPrev | run("playerctl", "previous"), "laptop keys" | init.lua:192 |
Print | run("sh", "-c", SHOT .. 'grim "$file"' .. CLIP), "laptop keys" | init.lua:198 |
shift+Print | run("sh", "-c", SHOT .. 'area="$(slurp)" && grim -g "$area" "$file"' .. CLIP), "laptop keys" | init.lua:199 |
super+shift+d | require("tweaks").toggle() — Show or hide the Developer Tweaks panel. | init.lua:204 |
super+shift+k | Cycle the keyboard layout, when the configuration lists more than one. | init.lua:218 |
super+shift+r | sol.reload() — Read this file again, without ending the session. | init.lua:230 |
super+m | Dev: the genie. | init.lua:244 |
super+g | A tilted window, to see the compositor draw one as geometry rather than as a rectangle. | init.lua:271 |
direction.lua
Focus and move by direction (#150).
| Keys | What it does | Where |
|---|---|---|
super+left | sol.focus_direction("left") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:293 |
super+right | sol.focus_direction("right") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:294 |
super+up | sol.focus_direction("up") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:295 |
super+down | sol.focus_direction("down") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:296 |
super+h | sol.focus_direction("left") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:297 |
super+l | sol.focus_direction("right") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:298 |
super+k | sol.focus_direction("up") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:299 |
super+j | sol.focus_direction("down") — The arrows and vim’s h, j, k and l, as sway and Hyprland ship them: super to focus, super+shift to move. | direction.lua:300 |
super+shift+left | sol.move_direction("left") | direction.lua:302 |
super+shift+right | sol.move_direction("right") | direction.lua:303 |
super+shift+up | sol.move_direction("up") | direction.lua:304 |
super+shift+down | sol.move_direction("down") | direction.lua:305 |
super+shift+h | sol.move_direction("left") | direction.lua:306 |
super+shift+l | sol.move_direction("right") | direction.lua:307 |
super+alt+k | sol.move_direction("up") | direction.lua:308 |
super+shift+j | sol.move_direction("down") | direction.lua:309 |
modes.lua
Which layout is in charge.
| Keys | What it does | Where |
|---|---|---|
super+shift+space | modes.lua:141 | |
super+f | sol.toggle_fullscreen() | modes.lua:149 |
super+shift+m | sol.toggle_maximize() | modes.lua:152 |
overview.lua
Overview: every window scaled onto a grid.
| Keys | What it does | Where |
|---|---|---|
super+space | overview.toggle — Into the overview and out again; while it is up, Escape leaves it too. | overview.lua:137 |
scrolling.lua
Scrolling: columns and a moving view, as niri does it.
| Keys | What it does | Where |
|---|---|---|
super+s | scrolling.toggle | scrolling.lua:521 |
super+bracketleft | view:focus_sideways(-1, options(on)) — Move between columns, and within one. | scrolling.lua:524 |
super+bracketright | view:focus_sideways(1, options(on)) — Move between columns, and within one. | scrolling.lua:525 |
super+ctrl+bracketleft | view:move_column(-1, options(on)) — Move between columns, and within one. | scrolling.lua:526 |
super+ctrl+bracketright | view:move_column(1, options(on)) — Move between columns, and within one. | scrolling.lua:527 |
super+shift+bracketleft | view:focus_vertically(-1) — Move between columns, and within one. | scrolling.lua:528 |
super+shift+bracketright | view:focus_vertically(1) — Move between columns, and within one. | scrolling.lua:529 |
super+comma | view:consume() — Stack a window into this column, or push it back out into its own. | scrolling.lua:532 |
super+period | view:expel(options(on)) — Stack a window into this column, or push it back out into its own. | scrolling.lua:533 |
super+r | view:cycle_width(options(on)) — Cycle the column through the preset widths. | scrolling.lua:536 |
tiling.lua
Tiling: dwindle, as Hyprland does it.
| Keys | What it does | Where |
|---|---|---|
super+t | tiling.toggle | tiling.lua:900 |
super+minus | nudge("width", -0.05) | tiling.lua:931 |
super+equal | nudge("width", 0.05) | tiling.lua:932 |
super+ctrl+minus | nudge("height", -0.05) — Height on the same two keys, because the other axis was reachable before this change … | tiling.lua:956 |
super+ctrl+equal | nudge("height", 0.05) — Height on the same two keys, because the other axis was reachable before this change … | tiling.lua:957 |
workspaces.lua
Workspaces, as a presentation.
| Keys | What it does | Where |
|---|---|---|
super+1 … super+d | workspaces.go(index) | workspaces.lua:668 |
super+shift+1 … super+shift+9 | workspaces.send(index) | workspaces.lua:671 |
super+ctrl+left | workspaces.step(-1, 0) | workspaces.lua:676 |
super+ctrl+right | workspaces.step(1, 0) | workspaces.lua:677 |
super+ctrl+up | workspaces.step(0, -1) | workspaces.lua:678 |
super+ctrl+down | workspaces.step(0, 1) | workspaces.lua:679 |