Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Sitka Shell

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.

Sitka Shell desktop

Features

  • Left-side bar with workspaces, tray, coding-agent quotas, 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

Status

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.

Install

Nix

Run the current package directly:

nix run github:bigFin/sitka-shell

On non-NixOS systems, use the arch output so the application is wrapped with nixGL:

nix run github:bigFin/sitka-shell#arch --impure

Home Manager

Add 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. The service restarts when a rebuild changes the package path; do not also launch sitka-shell from the compositor startup configuration.

Development

Clone the repository and enter the development shell:

git clone https://github.com/bigFin/sitka-shell.git
cd sitka-shell
nix develop

Run the current checkout instead of the packaged source:

qs -p .

Build the package before submitting changes:

nix build .#sitka-shell

Configuration

Runtime 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.json

Workspace labels support "symbol" (the default), "number", "name", and "both" through bar.workspaces.displayMode. Names come from the active window-manager backend and fall back to the workspace number when unavailable.

The repository intentionally ignores config/shell.json and config/shell.json.backup so local preferences do not become source files.

Useful environment overrides:

VariablePurpose
SITKA_CONFIG_DIROverride the configuration directory
SITKA_WALLPAPERS_DIROverride the wallpaper directory
SITKA_LIB_DIRLocate Sitka helper libraries

Themes and transparency

Built-in themes are EverforestDark, EverforestLight, RosePine, and HighTest. 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 alpha
  • normal: use enabled, base, layers, and scrim
  • transparent: 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.

Running and IPC

Start a packaged shell:

sitka-shell

Niri 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 delta

When running directly from a checkout, use Quickshell:

qs -p . ipc show
qs -p . ipc call drawers toggle launcher

Runtime integrations

The 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
  • brightnessctl or ddcutil for brightness controls
  • grim and swappy for screenshots
  • lm-sensors and supported GPU tools for hardware metrics
  • Material Symbols and a Nerd Font for icons and glyphs
  • Codex CLI for Codex quota data; Claude Code plus script/timeout for Claude quota data

Coding-agent quotas are shown in the dashboard's Usage tab. Opening that tab refreshes immediately, then every minute while it remains visible. Provider visibility is configured under services.agentUsage. The primary Codex weekly limit is enabled by default; Claude and additional Codex model buckets are opt-in:

{
"services": {
"agentUsage": {
"showCodex": true,
"showAdditionalCodexLimits": false,
"showClaude": false
}
}
}

The dashboard profile image is read from ~/.face. Wallpapers default to ~/Pictures/Wallpapers.

Credits

About

A very segsy desktop shell ported to niri wm.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages