smathles/wayle

Wayland Elements - A compositor agnostic shell with extensive customization

★ 0Forks 0RustGitHub ↗Compare

README

Wayle

⚠️ Work in Progress: Wayle is under active development. Core infrastructure is functional, but UI components and many services are not yet implemented. Not ready for daily use.

A fast, configurable desktop environment shell for Wayland compositors. Built in Rust with Relm4 and focused on performance, modularity, and a great user experience. A successor to HyprPanel without the pain or dependency on Hyprland.

Progress

Core Infrastructure

  • Configuration System - Reactive TOML config with schema validation
  • CLI Interface - Complete command-line management interface
  • Documentation Generator - Auto-generated config docs from schemas

Services

  • MPRIS
  • PulseAudio
  • Network
  • Bluetooth
  • Battery
  • Notification Daemon
  • Power Profiles
  • System Tray
    • GTK4 Adapter
  • Hyprland
  • Cava

UI Components

  • Component Library - Base Relm4 widgets and containers
  • Bar Modules (WIP):
    • Battery
    • Dashboard
    • Hyprland workspaces
    • Window title
    • Media
    • Notification
    • Volume
    • Network
    • Bluetooth
    • Clock
    • System tray
    • World clock
    • Separator
    • Microphone
    • RAM
    • CPU
    • CPU
    • Storage
    • Network
    • Keyboard input
    • Updates
    • Weather
    • Hyprland submap
    • Hyprsunset
    • Hypridle
    • Power

Dropdown Interfaces

  • Audio Panel
  • Network Panel
  • Bluetooth Panel
  • Media Panel
  • Notifications Panel
  • Calendar Panel
  • Weather Panel
  • Energy Panel
  • Dashboard

Additional Features

  • Settings Dialog
  • Notifications
  • OSD
  • Custom Modules

Configuration

Configuration is managed through TOML files, UI or CLI with live reloading and imports:

# main config.toml
imports = ["@themes/dark", "@modules/bar"]

[general]
theme = "dark"

# themes/dark.toml
[colors]
background = "#1e1e2e"
foreground = "#cdd6f4"

# modules/bar.toml
[bar]
position = "top"

[modules.clock]
format = "%H:%M"

Use the CLI to manage configuration:

# General help
wayle help

# Category help
wayle config help

# Get current config values
wayle config get modules.clock.format

# Set values with validation
wayle config set general.theme dark

Building

Switch to nightly Rust:

rustup toolchain install nightly
rustup default nightly

Then clone the repository and build:

git clone https://github.com/Jas-SinghFSU/wayle
cd wayle
cargo install --path wayle

Icons

Wayle uses GTK symbolic icons that support CSS color theming.

To manually manage icons:

# Install bundled icons (automatic on first launch)
wayle icons setup

# Install additional icons from CDN sources
wayle icons install tabler home settings bell
wayle icons install simple-icons firefox spotify

# See all available sources
wayle icons install --help

Icons are installed to ~/.local/share/wayle/icons/ as GTK symbolic icons.

License

MIT

Contributors

Jas-SinghFSUYilmaz4

Issues