MCPcopy Index your code
hub / github.com/andre-brandao/gpui-shell

github.com/andre-brandao/gpui-shell @v0.0.7

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.0.7 ↗ · + Follow
1,096 symbols 2,395 edges 140 files 400 documented · 36% updated 39d agov0.0.7 · 2026-04-22★ 1061 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GPUi Shell (Placeholder name)

A Wayland desktop shell built with GPUI (Zed's UI framework) in Rust. Provides a system bar, command launcher, and control center for Hyprland and Niri compositors.

[!WARNING] Early Development Notice This project is in early development and contains a significant amount of AI-generated code. It started as an experiment to test the latest AI models' capabilities and went much further than expected in a surprisingly short time. I'm actively working on fixing bugs and optimizing the codebase, but as I'm still learning Rust, there may be rough edges. Contributions and feedback are welcome!

Scope

GPUi Shell aims to be a lightweight, modular desktop shell replacing components like waybar, swaync, rofi/walker, and wlogout. It integrates deeply with Linux desktop ecosystems via D-Bus while providing a modern, GPU-accelerated UI.

Showcase

Bar

https://github.com/user-attachments/assets/71003c4b-8b02-4585-8ddb-17560c27b389

Features

Bar & Widgets

  • Wayland layer-shell status bar (top/bottom/left/right)
  • Workspaces — workspace switcher with click to switch
  • Active Window — shows focused window title
  • System Tray — D-Bus system tray integration (libtray)
  • Clock — configurable datetime display
  • Keyboard Layout — current keyboard layout indicator
  • Battery — battery percentage and charging status
  • SysInfo — CPU/memory overview widget

Launcher

  • Command launcher with prefix-based view routing
  • Apps — application search and launcher (freedesktop desktop files)
  • Shell — run shell commands
  • Workspaces — workspace management
  • Theme — switch between light/dark and accent colors
  • Wallpaper — set desktop wallpaper
  • Web — quick web search
  • Help — keyboard shortcuts reference

Control Center

  • Audio — volume control with PulseAudio (libpulse-binding)
  • Brightness — screen brightness control
  • Network — WiFi/Bluetooth toggle via NetworkManager (libnm)
  • Bluetooth — device pairing and connection (bluez)
  • Power — battery status and session power actions (UPower)
  • Notifications — notification center with Do Not Disturb
  • Media — MPRIS media player controls

OSD (On-Screen Display)

  • Volume and brightness indicators on key press

System Integration

  • Compositor abstraction — auto-detects Hyprland or Niri
  • Single-instance — running again opens launcher (via socket)
  • Privacy mode — temporarily disable screenshare/camera indicators
  • Applications — desktop file parsing and icon loading

Quick Start

Try GPUi Shell without installing:

nix run github:andre-brandao/gpui-shell

Documentation

Full documentation is available at https://andre-brandao.github.io/gpui-shell/

Thanks

  • zed: rendering and ui design (gpui).
  • gpui-component: ui code copied from here.
  • mgs: For the initial idea and inspiration.
  • ashell: For the initial idea and inspiration.

My other attempts

  • iced-shell: A shell written in Rust using the iced framework. (i did not like iced that much)
  • svelte-shell: A shell written using Tauri + Svelte. (Too slow)

And some others that are not on github using ags or quickshell

Extension points exported contracts — how you extend this code

LauncherView (Interface)
A launcher view that provides custom rendering and input handling. Views are responsible for: - Declaring their prefix [8 …
crates/app/src/launcher/view.rs
LabelCommon (Interface)
Trait for label-like elements that support size and color. [1 implementers]
crates/ui/src/components/label.rs
BrightnessCtrl (Interface)
(no doc)
crates/services/src/brightness/mod.rs
BarWidget (Interface)
Shared rendering contract for widgets that live in the bar. Widgets provide vertical and horizontal content variants. T [11 …
crates/app/src/bar/modules/bar_widget.rs
Colorize (Interface)
Trait for color manipulation operations. Provides methods for adjusting opacity, lightness, and mixing colors. [1 implementers]
crates/ui/src/theme/colorize.rs
Notifications (Interface)
(no doc)
crates/services/src/notification/mod.rs
ActiveConfig (Interface)
Trait for accessing active app configuration from `App`. [1 implementers]
crates/app/src/config/mod.rs
ActiveTheme (Interface)
Trait for accessing the active theme. This is implemented on `App` to provide convenient access to theme values. [1 implementers]
crates/ui/src/theme/mod.rs

Core symbols most depended-on inside this repo

text_color
called by 169
crates/app/src/bar/modules/battery/mod.rs
theme
called by 83
crates/ui/src/theme/mod.rs
is_empty
called by 81
crates/services/src/tray/mod.rs
notify
called by 71
crates/services/src/notification/mod.rs
size
called by 55
crates/ui/src/components/switch.rs
get
called by 51
crates/services/src/tray/mod.rs
find
called by 44
crates/services/src/tray/mod.rs
color
called by 39
crates/ui/src/components/label.rs

Shape

Method 637
Function 223
Class 160
Enum 47
Interface 29

Languages

Rust100%

Modules by API surface

crates/services/src/notification/mod.rs36 symbols
crates/ui/src/components/input/buffer.rs29 symbols
crates/services/src/upower/mod.rs27 symbols
crates/app/src/state.rs23 symbols
crates/services/src/sysinfo/mod.rs22 symbols
crates/services/src/tray/mod.rs21 symbols
crates/services/src/mpris/mod.rs21 symbols
crates/app/src/launcher/modules/theme/mod.rs21 symbols
crates/app/src/launcher/mod.rs21 symbols
crates/app/src/bar/modules/tray/mod.rs20 symbols
crates/ui/src/theme/mod.rs19 symbols
crates/ui/src/theme/colorize.rs19 symbols

For agents

$ claude mcp add gpui-shell \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact