Skip to content
bitterhaltPublic

About

Slim and raw

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Slimshell: a slim rat walking along a thin bar

A compact, keyboard-first desktop shell for Niri, built with Quickshell.

Features · Gallery · Launcher · Dmenu mode · Installation

Slimshell

Slimshell brings my bar, notifications, and some useful menus together—replacing a collection of separate tools and increasingly complicated Bash scripts.

It is built for my own desktop: compact, opinionated, and comfortable to use from the keyboard. It isn't a desktop environment with endless customization or every bell and whistle. Borrow what you like, and adapt the rest.

Why?

Why does this exist? Because all the well-known Quickshell setups focus too much on large Material Design Menus and features that, at the end of the day, no productive user actually needs. If a widget has functions, it must also work 100% with the keyboard. Bluetooth or the Wi-Fi menus do not need to take half of your 1440p screen space. So the goal was simple = Make the most of the best features of the Quickshell in terms of usability and lightness.

Features

What's included
Bar Workspaces, Window title, Clock and Weather, Battery, Connections, Tray etc.
Menus Keyboard-driven menus for Bluetooth, Wi-Fi, Audio, Power, and Notifications
launcher Application launcher with: File Search, Calculator, Binary Runner, Emoji, Timers and Dmenu-mode
Tools Clipboard, DeepL translation, and Screen recording
Session Lock Screen, Wallpaper Picker, and Dynamic theming with Hellwal
IPC reference
Target Calls Effect
audio toggle, open, close Show or hide the audio popup
bar toggle, hide, show, isVisible Control or query bar visibility
bluetooth toggle, open, close Show or hide the Bluetooth popup
clipboard toggle, open, close, refresh, copySelected, deleteSelected Control the clipboard picker
idle toggle, isDisabled, settings Control idle handling or open its settings
launcher toggle, open, close Control the application launcher
lock lock Lock the session
locker isSecure Query whether the separate lock-screen process is secure
menu packages, settings, system, close Open a main-menu page or close it
network toggle, open, close Show or hide the network popup
notificationCenter toggle, open, close Show or hide notification history
notifications toggleDnd, enableDnd, disableDnd, isDnd, clear, count Control DND or notification history
power toggle, open, close Control the power menu
recorder toggle, open, close, fullscreen, region, stop Control screen recording
theme refresh, usingHellwal Reload or query the active theme
translator toggle, open, close Control the translator
volume up, down, mute Adjust or mute the default audio output; shows the OSD
wallpaper toggle, open, close Control the wallpaper picker
weather toggle, open, close Show or hide the weather forecast

For example, qs ipc call volume up raises the volume by one step. launcher/dmenu-runner uses the launcher's IPC internally; call the script to open a picker.

Launcher

Launcher modes. Switch directly with the shortcuts below, or cycle with Ctrl+← / Ctrl+→.

Mode Shortcut What it does
Apps Ctrl+A Search and launch desktop applications
Run Ctrl+B Run binaries, with recently used commands first
Emoji Ctrl+E Search by name and copy the selected emoji
Timer Ctrl+T Start timers such as 25m Focus, 45s, 1:30, or 2h

In Apps mode, /<word> searches files and =expression calculates with qalc. Plain math works too.

Dmenu mode

For scripts that use dmenu-style pickers:

printf '%s\n' Search 'New Note' TODO Delete | ./launcher/dmenu-runner -p "Notes" -l 4 --minimal-lines
  • Supported options: -p / --prompt, -l N / --lines N (default 7), --minimal-lines, and --index (return the original zero-based input index; typed text returns -1).
  • Enter selects, Shift+Enter returns typed text, and Esc cancels with status 1. -l 0 opens an input-only picker.

Slimshell must be running. This is a small dmenu-compatible runner, not a full dmenu/rofi replacement.

Getting started

Follow the installation guide for dependencies, Niri startup, keybindings, and optional feature setup. Install into ~/.config/quickshell, then run:

qs -p "$HOME/.config/quickshell" --no-detailed-logs

Settings

Edit root-level settings.json for appearance and behavior defaults. Changes are loaded automatically; invalid values use safe defaults, and malformed JSON keeps the previous settings. Idle timeouts, wallpaper preferences and workspace layout are adjusted through the UI and saved separately.

Audio styles are classic or circle; animation styles are fade or slide. animations.style controls menus, while notificationStyle controls toasts. Optional animations.hostStyles overrides individual menu styles (audio, network, bluetooth, or notificationCenter).

Tests

Run the offline tests with python -B tests/run.py, or select a feature, for example python -B tests/run.py launcher network. Use --list to see the available features. These tests do not start or reload the desktop shell.

Structure

shell.qml       Shell entrypoint and service wiring
settings.json   Editable appearance and behavior defaults
bar/            Bar and its modules
components/     Reusable UI and popup components
services/       Shared desktop state and integrations
launcher/       Launcher, dmenu runner, and search helpers
menus/          System and wallpaper menus
notifications/  Notification popups and history
clipboard/      Clipboard picker and previews
lock/           Lock screen components and PAM setup
recorder/       Screen recording and region selection
translator/     DeepL translator
wallpaper/      Wallpaper helpers
weather/        Weather forecast popup and helper
osd/            Volume overlay

Gallery

Slimshell desktop

Clipboard picker
Clipboard picker
Translator
Translator
Wallpaper picker
Wallpaper picker
Audio controls
Audio controls
Bluetooth menu
Bluetooth menu
Network menu
Network menu
Notification history
Notification history
Weather forecast
Weather forecast

Transparency

This shell was developed with LLM assistance under my supervision. I direct the design, review the changes, and test them on my own desktop. These are personal dotfiles, so review and adapt them before using them on yours.

This repository is mainly for hobby and learning, so don't expect everything to work out of the box.

ISSUES 🔨

  • dmenu-runner can't display special symbols (Nerd fonts etc.)
  • File structure is messy and files needs to be commented better
  • There are probably plenty of other things as well. Maybe yoy can show me how to fix them or do better :)

TODO

  • Put there something

About

Slim and raw

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages