silere, from Latin: to be silent.
Silere is a Quickshell desktop shell for Hyprland and niri built around one idea: nothing runs without a reason.
Bar, notifications, OSD, calendar and tray, all in one process — and it sits under 1% of a CPU core when you are not touching it.
You need git, Hyprland or niri, and Quickshell 0.3.1 or newer.
git clone https://github.com/s3rven/silere-shell
cd silere-shell
bash scripts/install.shRestart your compositor, or start it right away with silere run. Before the optional
maintenance-command link exists, use scripts/silere run from the checkout.
Then click the active workspace diamond. That is the way into the menu and every setting, so bind a key to it early:
qs ipc -p ~/.config/silere-shell/shell.qml call menu togglePreview it first with bash scripts/install.sh --dry-run. After installation,
silere doctor checks the runtime and integrations without changing them. Fonts, optional tools,
the maintenance command, unattended installs, Matugen wiring and removal:
docs/install.md.
- Work starts when there is work. Every timer and poll runs only while something needs it, and animations end on their own once the session goes idle.
- One process, not a stack. No separate bar, notification daemon or OSD helper to install, theme, and keep in step with each other.
- Settings live in the shell. A panel with every option, applying the moment you change it — no restart, no reload.
- Nothing third-party runs inside it. There is no plugin system. Hooks run your own commands as separate, time-bounded processes.
- Bar — workspaces, media, network, bluetooth, volume, microphone, brightness, battery, clock, tray, updates. Drag them between left, centre and right, per monitor.
- Menu — live controls, every setting, and notification history in one panel.
- Notifications — actions, images, history, quiet hours, source-window jumping.
- Theming — Matugen from your wallpaper or a hand-picked accent, over three dark base tones.
- Calendar from the clock, OSD for volume and brightness, and quick actions for night light, power profiles and airplane mode.
Silere is pointer-driven: Escape and text fields are its keyboard paths. Every widget's controls are listed below.
| area | pointer |
|---|---|
| workspaces | click switches · on the active diamond, click opens the menu and right-click opens quick actions · middle-click sends the focused window there · on the trailing +, click opens the next empty workspace · scroll switches too, once you turn it on under Settings › Workspaces |
| clock | click opens the calendar · middle-click cycles seconds and date |
| calendar | scroll changes the month · click the header to jump back to today |
| media | click plays or pauses · scroll changes track · middle-click jumps to the player |
| volume | scroll changes volume · click mutes · middle-click moves to the next output · right-click opens Sound settings · in the menu, expand it for output, input and per-app levels |
| microphone | click mutes · scroll changes the input level · middle-click moves to the next input · right-click opens Sound settings · it appears while an app is listening |
| brightness | scroll changes brightness |
| tray | click jumps to the app · right-click opens its menu · middle-click runs the app's secondary action · scroll is passed through to the app |
| notifications | click runs the default action · right-click dismisses · middle-click jumps to the app that sent it · a reply action opens an inline text field when the sender supports one |
| menu | Escape steps back, then closes · click anywhere outside to close |
| history | click an entry to read it in full |
Settings live in the shell and save themselves. If you want the file, it is
$XDG_CONFIG_HOME/silere-shell/settings.json, wherever the checkout sits, and it holds
only what differs from the defaults. Values are type-checked and numeric ranges clamped on
load, and a file Silere cannot read is left alone rather than overwritten.
To start over, use Settings › System › Maintenance, or replace the file with
{ "__version": 1 }. Deleting a single key resets that one option.
Every surface is scriptable over Quickshell IPC, and Silere can run an executable of your
own on events like battery-critical or workspace-changed.
SILERE_DIR="$HOME/.config/silere-shell"
qs ipc -p "$SILERE_DIR/shell.qml" call menu toggle
qs ipc -p "$SILERE_DIR/shell.qml" call calendar toggle
qs ipc -p "$SILERE_DIR/shell.qml" call settings set osdTimeout 3000The full IPC surface, the settings section names, and hooks:
docs/scripting.md.
Nothing installs on its own. Shell updates follow stable tags, accept only releases signed by the key bundled in the checkout, and show you the pending commits behind a two-step confirmation. A signature proves where a release came from, not that its code is harmless. Package updates only move the badge.
Idle use on a reference session measured about 87 MB PSS before the menu is first opened
and about 96 MB after, at well under 1% of one CPU core — much of that the Qt and GPU
driver floor rather than Silere. The menu builds its pages on first open
and keeps them: a one-time cost, not a leak. Measure your own checkout with
bash scripts/bench.sh 30, or --warm for the post-menu number. Full numbers and the
animation-driver note: docs/performance.md. Per-release history:
docs/perf-history.md.
bash scripts/check.shThat runs the dependency, autostart and configuration checks. For startup errors, run
qs -p shell.qml directly. Common problems: docs/troubleshooting.md.
| page | what's in it |
|---|---|
| install.md | doctor/maintenance command, optional tools, Matugen, removal |
| scripting.md | the IPC surface, settings over IPC, section names, hooks |
| troubleshooting.md | symptom by symptom, starting with check.sh |
| performance.md | reference numbers, how to measure, fonts, the animation driver |
| perf-history.md | per-release numbers, reference machines, how to record a row |
| forking.md | the tree, what a change touches, what a rename has to get right |
| releasing.md | maintainer notes: cadence, tags, AUR, key rotation |
| CHANGELOG.md | unreleased work, and every release archived under docs/releases |
Ideas, fixes, and new features are all welcome. See CONTRIBUTING.md to
get started. Forking or making it your own? docs/forking.md maps the
tree, lists what a change actually touches, and names the few things a rename has to get
right.
I use AI tools to build Silere, and I think it makes the project better. It's just me working on this. With the help, bugs get fixed the same day I find them instead of sitting around for weeks.
I still decide what goes in, and I read every change myself. Silere is the only desktop I use, so anything broken breaks my own machine first.
AI-assisted pull requests are welcome too. See CONTRIBUTING.md.
MIT (c) s3rven

