anush ([ɑˈnuʃ]) is a desktop shell named after my wife (Անուշ) built with Quickshell to make any X11 wm as beautiful as she makes my life. It provides the bar, launcher, notifications, desktop controls, wallpaper and theme integration while leaving window management to the active WM.
anush has dedicated adapters for:
- skarwm
- bspwm
- herbstluftwm
- i3
- spectrwm
- dwm
- Openbox
Unknown EWMH-compatible window managers use the generic adapter. Features are shown only when the active adapter supports them.
Core requirements:
- Quickshell
- Python 3
xprop- ImageMagick (
magick) for wallpaper palettes and Alt+Tab window previews - Fontconfig (
fc-list) - JetBrainsMono Nerd Font (default UI font; other installed Nerd Fonts are selectable)
- Symbols Nerd Font Mono
- the active WM's control utility, such as
skarwm-msg,bspc, orherbstclient
Picom is recommended for transparency and window corner effects. Individual widgets may need additional programs; each requirement is documented in the widget guide.
sudo make installThis installs the shell, helpers, assets, defaults, and anushctl. Package data
is read from the installation prefix; mutable files remain in the user's config,
state, and data directories.
Start the shell as the desktop user:
anushctl startThe window manager should run that command from its normal autostart mechanism. For skarwm:
autostart : "anushctl start"
After upgrading, reload the installed QML with:
anushctl reloadUse anushctl restart only when a complete process restart is needed.
| Data | Default location |
|---|---|
| Optional user overrides | ${XDG_CONFIG_HOME:-$HOME/.config}/skarwm/anush/config.json |
| Persistent shell state | ${XDG_STATE_HOME:-$HOME/.local/state}/anush/shell-state.json |
| Notepad files | ${XDG_DATA_HOME:-$HOME/.local/share}/anush/notepad/ |
Installed defaults come from config/defaults.json. User overrides merge over
those defaults, and settings changed from the shell are stored in the state
file. See configuration.md for precedence, environment
overrides, and file ownership.
The backend defaults to automatic WM detection. It can be overridden in
config.json:
{
"windowManager": {"backend": "bspwm"}
}anushctl status
anushctl launcher toggle
anushctl notes toggle
anushctl popup network
anushctl wallpaper set ~/Pictures/wallpaper.jpg
anushctl theme mode dark
anushctl lockSee anushctl.md for the complete command reference.
config/ installed defaults and application templates
shell/common/ shared QML services and WM adapters
shell/components/ UI grouped by feature
shell/scripts/ helper programs grouped by feature
shell/shell.qml Quickshell entry point
tools/ development and real-WM testing tools
The desktop setup was inspired by drew/butterdwm.

