Zenith Shell is a modern, modular, high-performance desktop shell custom-built for Hyprland using Quickshell (Qt6/QML). Designed with sleek glassmorphism aesthetic, anti-aliased dynamic animations, real-time system monitoring, and instant control popups over IPC.
![]() |
|||
![]() |
![]() |
![]() |
![]() |
Zenith Shell leverages native Wayland protocols and modular QML singletons for near-zero idle resource utilization:
- UI Framework: Quickshell (Qt6 QML engine with native Wayland Layer Shell, Foreign Toplevel, and Screencopy bindings).
- Compositor Integration: Hyprland IPC sockets for real-time workspace state, active window tracking, and monitor scaling.
- Design System: Responsive QML design system with dynamic scaling (
Theme.scaled()), glassmorphic overlays, and customizable Catppuccin-inspired color palettes. - IPC Control System: Non-blocking asynchronous Named Pipe (FIFO) IPC at
~/.cache/zenith_fifomanaged vialaunch.sh. - Media Engine: Native Python &
ffmpegpipeline for high-performance rounded-corner wallpaper thumbnail generation.
Ensure the following packages are installed on your Linux system:
| Component | Package / Dependency | Purpose |
|---|---|---|
| Shell Engine | quickshell |
Qt6/QML shell environment |
| Compositor | hyprland |
Wayland window manager |
| GUI Framework | qt6-declarative, qt6-svg, qt6-5compat |
QML engine and vector icon rendering |
| Category | Dependencies | Description |
|---|---|---|
| Wallpapers | awww / swww, mpvpaper, ffmpeg |
Static/animated wallpapers & thumbnail generator |
| Network | networkmanager (nmcli) or iwd (iwctl), rfkill |
Wi-Fi scanning, connecting & airplane mode |
| Bluetooth | bluez, bluez-utils (bluetoothctl) |
Device discovery and connection management |
| Audio & Media | pipewire, wireplumber, playerctl |
System volume control & MPRIS metadata |
| Power | upower, power-profiles-daemon |
Battery level tracking & power profile switching |
| Helper Runtime | python3, python-pillow, jq |
Async backend scripts & JSON parsing |
Clone Zenith Shell into your user configuration directory:
git clone https://github.com/zaeemali272/zenith-shell.git ~/.config/quickshellchmod +x ~/.config/quickshell/launch.sh
chmod +x ~/.config/quickshell/scripts/*.shAdd the following line to your hyprland.conf:
exec-once = ~/.config/quickshell/launch.sh startZenith Shell includes a flake.nix with Home Manager module support.
In your NixOS system or Home Manager flake.nix:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
zenith-shell.url = "github:zaeemali272/zenith-shell"; # or "git+file:///path/to/local/zenith-shell"
};
outputs = { self, nixpkgs, zenith-shell, ... }: {
homeConfigurations."user" = home-manager.lib.homeManagerConfiguration {
modules = [
zenith-shell.homeManagerModules.default
{
programs.zenith-shell.enable = true;
}
];
};
};
}To automatically fetch and apply updates to Zenith Shell whenever you run nixos-rebuild:
-
Updating Remote Flake: Pass
--update-inputtonixos-rebuild:sudo nixos-rebuild switch --flake . --update-input zenith-shellor update lock file explicitly:
nix flake update zenith-shell sudo nixos-rebuild switch --flake . -
Live Local Development: Point your input to your local git repository:
zenith-shell.url = "git+file:///home/zaeem/.config/quickshell";
Every time you commit changes locally and run
sudo nixos-rebuild switch --flake ., Nix automatically builds and applies your latest version.
Zenith Shell comes with a built-in launcher script (launch.sh) that communicates directly with the running shell via IPC. You can bind these commands to Hyprland keybindings or run them from terminal.
| Action / Menu | Command | Description |
|---|---|---|
| Dashboard / Launcher | ~/.config/quickshell/launch.sh overview |
Toggle app grid & overview workspace window |
| Wallpaper Selector | ~/.config/quickshell/launch.sh wallpaper |
Open static & live wallpaper chooser |
| Quick Settings | ~/.config/quickshell/launch.sh controlcenter |
Toggle main Quick Settings control center |
| Wi-Fi / Network | ~/.config/quickshell/launch.sh wifi |
Open Wi-Fi scan and connection menu |
| Bluetooth | ~/.config/quickshell/launch.sh bluetooth |
Open Bluetooth paired & available devices menu |
| Volume / Audio | ~/.config/quickshell/launch.sh volume |
Open audio output/input sliders popup |
| Power Profile | ~/.config/quickshell/launch.sh powerprofile |
Switch between Performance, Balanced & Power-saver |
| Battery Details | ~/.config/quickshell/launch.sh battery |
Open battery health & status popup |
| Power Menu | ~/.config/quickshell/launch.sh power |
Open Lock, Logout, Reboot, Shutdown menu |
| Pomodoro & Todo | ~/.config/quickshell/launch.sh pomodoro |
Open Pomodoro timer & task manager |
| Settings App | ~/.config/quickshell/launch.sh settings |
Open Zenith Shell configuration window |
| Close All Menus | ~/.config/quickshell/launch.sh close |
Instantly close any open popups or overlays |
Add these bindings to your ~/.config/hypr/hyprland.conf or keybinds.conf:
# Zenith Shell Keybindings
$qs = ~/.config/quickshell/launch.sh
bind = SUPER, TAB, exec, $qs overview
bind = SUPER, W, exec, $qs wallpaper
bind = SUPER, V, exec, $qs volume
bind = SUPER, N, exec, $qs wifi
bind = SUPER, B, exec, $qs bluetooth
bind = SUPER, P, exec, $qs powerprofile
bind = SUPER, ESCAPE, exec, $qs power
bind = SUPER, S, exec, $qs settings- Dynamic Top Bar: Active workspace indicator, window title, system stats, media ticker, tray icons, and clock.
- Wallpaper Manager: Real-time thumbnail preview for images and live video wallpapers (
.mp4,.mkv,.webm) usingmpvpaper. - Control Center: Integrated quick toggles for Wi-Fi, Bluetooth, Airplane mode, Night Light, and Volume.
- Workspaces Overview: Visual app launcher grid and workspace switcher integrated with Hyprland IPC.
- System Stats & Monitoring: Live CPU, RAM, Disk, Temperature, and Network speed meters.
- MPRIS Media Controller: Album artwork, track info, seekbar, and playback controls.
- Pomodoro & Todo Widget: Built-in focus timer with task list management.
- Adaptive Theme System: Modular Catppuccin color palette with smooth glassmorphism borders and blur.





