Zenith is a full-featured desktop shell built on Pulpkit, a Rust + WebView shell framework for Wayland compositors. It delivers a translucent bar with backdrop blur, 11 popup panels, toast notifications, and a lock screen -- all rendered in HTML, CSS, and JavaScript with zero UI toolkit dependencies.
Designed around the Catppuccin color system and extended with 12 total themes, Zenith provides a polished, cohesive desktop experience that stays out of your way until you need it.
Bar
- Translucent frosted-glass top bar with configurable height
- Workspace indicators, window taskbar, clock, and system tray
- Contextual status indicators: VPN, Do Not Disturb, Caffeine, Gaming/GPU mode, Microphone, Screen Share
Popup Panels
- Quick Settings -- Toggles for WiFi, Bluetooth, DND, Night Light, Caffeine, Airplane Mode; brightness and volume sliders
- Networks -- WiFi network list with signal strength and connected status
- Session -- Shutdown, reboot, suspend, log out, lock
- App Launcher -- Searchable application grid with frecency sorting
- Audio Mixer -- Per-app volume control with output device selection
- Calendar -- Month view with weather integration
- Notifications -- Notification history with clear-all and per-notification dismiss
- Windows -- Overview of open windows with close actions
- System Monitor -- Live CPU, memory, GPU, VRAM, fan speed, thermals, network throughput, containers, and process list
- Media Controls -- MPRIS-based now-playing display with album art, seek bar, and playback controls
- Settings App -- Full settings application with 11 pages: Display, Sound, Network, Bluetooth, Power, Appearance, Notifications, Storage, About, Gaming, and Containers
Toast Notifications
- Slide-in animation with configurable auto-dismiss timing
- Supports urgency levels, icons, and action buttons
Lock Screen
- PAM-authenticated lock screen with time and date display
Popup Backdrop
- Configurable dim overlay keeps your desktop visible behind popups
# Install Pulpkit first
git clone https://github.com/JacobWLMS/pulpkit
cd pulpkit && cargo build --release -p pulpkit-webshell-poc
# Clone Zenith into the shells directory
git clone https://github.com/JacobWLMS/zenith poc/shells/zenith
# Run
./target/release/pulpkit-webshell-poc zenithZenith requires a running Wayland compositor. It communicates with the compositor and system services through Pulpkit's backend.
Zenith is configured through config.json in the shell root:
{
"bar_height": 36,
"bar_position": "top",
"popup_width": 560,
"popup_height": 560,
"popup_backdrop": "dim",
"popup_dim_opacity": 0.25
}| Key | Type | Description |
|---|---|---|
bar_height |
number |
Bar height in pixels |
bar_position |
string |
Bar position: "top" or "bottom" |
popup_width |
number |
Popup panel width in pixels |
popup_height |
number |
Popup panel height in pixels |
popup_backdrop |
string |
Backdrop mode: "dim", "blur", or "none" |
popup_dim_opacity |
number |
Backdrop dim opacity (0.0 to 1.0) |
zenith/
config.json Shell configuration
bar.html Top bar (workspaces, clock, status, indicators)
popup.html All popup panels
toast.html Toast notification renderer
lock.html Lock screen with PAM authentication
theme.css Color theme definitions (12 themes)
components/
clock.js Clock display logic
status.js System status indicators
taskbar.js Window taskbar
tray.js System tray
workspaces.js Workspace switcher
panels/
config.js Settings app (11 pages)
launcher.js App launcher with search
power.js Power/session menu
settings.js Quick settings toggles
wifi.js WiFi network panel
Changing the theme -- Open the Settings popup, navigate to the Appearance page, and select a theme. Themes are defined in theme.css as CSS custom property sets under [data-theme="name"] selectors.
Adding a panel -- Define a new <div id="panel-yourname" class="panel"></div> in popup.html, write a render function that populates it, and register it in the panel router at the bottom of the file.
Modifying bar components -- Each bar section (clock, workspaces, tray, status, taskbar) is a standalone script in components/. Edit the relevant file and the corresponding HTML section in bar.html.
Creating a theme -- Add a new [data-theme="yourtheme"] block in theme.css defining all required CSS custom properties (--bg, --bg-surface, --bg-overlay, --fg, --fg-muted, --fg-dim, --accent, --blue, --green, --red, --yellow, --peach, --teal, --pink, --mauve, --text-on-color).
Zenith ships with 12 color themes:
| Theme | Accent |
|---|---|
| Catppuccin Mocha | |
| Catppuccin Macchiato | |
| Catppuccin Frappe | |
| Catppuccin Latte | |
| Tokyo Night | |
| Nord | |
| Gruvbox | |
| Rose Pine | |
| One Dark | |
| Dracula | |
| Solarized | |
| Flexoki |