Sitka Shell is a Niri-first desktop shell built with Quickshell. It began as a fork of Niri Caelestia Shell and Caelestia Shell, but its configuration, window-manager integration, visual language, and service layer have diverged substantially.
- Left-side bar with workspaces, tray, status, clock, and configurable entries
- Launcher with application, command, calculator, and wallpaper search
- Dashboard, control center, notifications, OSDs, session menu, and lock screen
- Niri window/workspace models with measured state and polling diagnostics
- Wallpaper browsing, audio visualization, and optional shader effects
- JSON configuration and a Home Manager module
Sitka Shell is an experimental personal shell rather than a polished desktop distribution. Niri is the primary target. Some Hyprland paths remain, but they are best-effort and are not kept at feature parity.
See TODO.md for the current maintenance roadmap.
Run the current package directly:
nix run github:bigFin/sitka-shellOn non-NixOS systems, use the arch output so the application is wrapped with
nixGL:
nix run github:bigFin/sitka-shell#arch --impureAdd the flake and import its module in your Home Manager configuration:
{
inputs.sitka-shell.url = "github:bigFin/sitka-shell";
# In the relevant Home Manager module:
imports = [inputs.sitka-shell.homeManagerModules.default];
programs.sitka = {
enable = true;
settings = {
general.theme = "EverforestDark";
bar.revealMode = "corner";
};
};
}The module installs the shell, writes ~/.config/sitka/shell.json, and can run
Sitka Shell as a user service.
Clone the repository and enter the development shell:
git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix developRun the current checkout instead of the packaged source:
qs -p .Build the package before submitting changes:
nix build .#sitka-shellRuntime configuration belongs outside the repository:
~/.config/sitka/shell.json
Start from the annotated example:
mkdir -p ~/.config/sitka
cp config/shell.json.example ~/.config/sitka/shell.jsonThe repository intentionally ignores config/shell.json and
config/shell.json.backup so local preferences do not become source files.
Useful environment overrides:
| Variable | Purpose |
|---|---|
SITKA_CONFIG_DIR |
Override the configuration directory |
SITKA_WALLPAPERS_DIR |
Override the wallpaper directory |
SITKA_LIB_DIR |
Locate Sitka helper libraries |
Built-in themes are EverforestDark, EverforestLight, and RosePine.
Theme selection is declarative:
{
"general": {
"theme": "EverforestDark"
},
"appearance": {
"transparency": {
"mode": "opaque",
"enabled": false,
"base": 0.58,
"layers": 0.24,
"scrim": 0.5
}
}
}Transparency modes:
opaque: disable shell surface alphanormal: useenabled,base,layers, andscrimtransparent: force the lower-alpha rice-oriented defaults
Leave shader effects and the background visualizer disabled unless they are in active use; both add continuous rendering or audio work.
Start a packaged shell:
sitka-shellNiri startup example:
spawn-at-startup "sitka-shell"Inspect and call IPC targets with the stable package wrapper:
sitka-ipc show
sitka-ipc call drawers toggle launcher
sitka-ipc call lock lock
sitka-ipc call stateStats get
sitka-ipc call stateStats mark
sitka-ipc call stateStats deltaWhen running directly from a checkout, use Quickshell:
qs -p . ipc show
qs -p . ipc call drawers toggle launcherThe Nix package supplies the shell's main runtime dependencies. Features also expect the corresponding system services or tools to exist:
- NetworkManager for network state
- PipeWire, libcava, and aubio for audio visualization
brightnessctlorddcutilfor brightness controlsgrimandswappyfor screenshotslm-sensorsand supported GPU tools for hardware metrics- Material Symbols and a Nerd Font for icons and glyphs
The dashboard profile image is read from ~/.face. Wallpapers default to
~/Pictures/Wallpapers.
- Caelestia Shell
- Niri Caelestia Shell
- Quickshell
- Niri
- All upstream and Sitka Shell contributors
