Skip to content

andre-brandao/gpui-shell

Repository files navigation

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

showcase.mp4

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