Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hyprland

Sottomano follows Hyprland through its request and event sockets (HYPRLAND_INSTANCE_SIGNATURE). It sends its requests as Lua dispatchers (hl.dsp) and writes a Lua rule file, so it needs Hyprland 0.56 or newer with a Lua config (hyprland.lua). It is tested with Hyprland 0.56.2. For installing Hyprland itself, follow its installation guide.

Start with the session

Hyprland does not start graphical-session.target by itself, which the sottomano user service from the session page waits for. Start a target bound to it from your Lua config, after exporting the session environment to systemd:

hl.on("hyprland.start", function()
    hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP && systemctl --user start hyprland-session.target")
end)

with ~/.config/systemd/user/hyprland-session.target:

[Unit]
BindsTo=graphical-session.target
Wants=graphical-session.target
After=graphical-session-pre.target

Window styling rules

The window styling group writes ~/.config/sottomano/hyprland.lua: gaps, rounding, blur for the panel and toasts, and the switch-heat border colours. Load it at the end of your hyprland.lua:

local sottomano_rules = os.getenv("HOME") .. "/.config/sottomano/hyprland.lua"
local sottomano_rules_file = io.open(sottomano_rules)
if sottomano_rules_file then
    sottomano_rules_file:close()
    dofile(sottomano_rules)
end

The home-manager module does not add this, because home-manager’s Hyprland module writes a hyprland.conf. Sottomano asks Hyprland to reload after each change.

What Hyprland does not offer

  • There is no overview: pressing the active workspace does nothing, and toggling the overview from a gamepad reports that Hyprland has no equivalent.
  • Workspaces cannot be reordered: dragging one in the bar reports that the compositor has no equivalent. Dragging a window onto another workspace moves it, but windows have no columns to reorder within a workspace.

Apps launched from the bar start in their own transient user service through systemd-run --user.