Skip to content

JacobWLMS/zenith

Repository files navigation

Zenith

A modern desktop shell for Pulpkit.

Pulpkit Wayland License: MIT


Overview

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.

Features

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

Installation

# 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 zenith

Zenith requires a running Wayland compositor. It communicates with the compositor and system services through Pulpkit's backend.

Configuration

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)

File Structure

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

Customization

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).

Themes

Zenith ships with 12 color themes:

Theme Accent
Catppuccin Mocha #cba6f7
Catppuccin Macchiato #c6a0f6
Catppuccin Frappe #ca9ee6
Catppuccin Latte #8839ef
Tokyo Night #7aa2f7
Nord #88c0d0
Gruvbox #d79921
Rose Pine #c4a7e7
One Dark #c678dd
Dracula #bd93f9
Solarized #268bd2
Flexoki #da702c

License

MIT

About

A modern desktop shell for Pulpkit — translucent bar, 10 popup panels, toast notifications, lock screen

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors