Sottomano
Sottomano is Italian for “at hand”: avere tutto sottomano, to have everything within reach. It is my desktop shell: a top panel, a bottom panel, an optional workspace sidebar and notification toasts, in one binary.
Why
After twenty years of GNOME and KDE Plasma I wanted a desktop that never asks for attention but answers when I look, with the widgets I kept missing there. Sottomano is written in Rust, so readings arrive as streams from compositor IPC, D-Bus, PipeWire and native libraries instead of polled commands, and each one explains itself in a hover card whose top line says what a click does.
Previous work:
- niri-waybar-windowlist: a hard fork of a Waybar window list module, where styling meant fighting GTK CSS.
- Odin: two Qt Quick panels on Quickshell, with a subprocess spawned and polled for every reading.
Tour
Weather: Conditions
Hovering the info icon of the temperature opens the forecast for the coming hours.
Tailscale: Exit node
The tailnet: how each peer is reached, when the key expires, and which exit node carries the traffic, next to the switch that offers this machine as one.
Dictation: Speech model
The speech model the dictation daemon loaded.
Toast: Next to its window
When the sending window is visible, the toast sits in its top corner.
The other groups, each in its menu next to pinned in the bar, are in the guide. The recordings use fixtures, so the numbers are made up.
Built on
- iced, through a fork that carries a small rendering patch.
- Wayland layer surfaces from
iced_exwlshellin waycrate’s exwlshelleventloop, through a fork with the patches the shell needs until they land upstream. - niri-ipc and swayipc-types for compositor IPC, zbus for D-Bus services, PipeWire for audio, and a CLI only where nothing else is available.
Get started
- Try it from a checkout:
cargo rinsidenix develop. - Install it with the home-manager and NixOS modules: installation.
- Configure it with one TOML file whose complete default the shell prints: configuration.
- Work on it: development and style.