Introduction
Eww (ElKowars wacky widgets) is a standalone widget system for Linux written in Rust. It allows you to create custom desktop widgets, status bars, and overlays for any window manager using a Yuck configuration language and CSS styling.
What Eww Does
- Renders custom widget windows on X11 or Wayland compositors
- Uses a declarative Yuck language for defining widget structure and logic
- Supports full CSS styling for pixel-perfect visual customization
- Polls system data (CPU, RAM, battery, network) via built-in and script variables
- Manages multiple widget windows with independent positioning and layering
Architecture Overview
Eww parses Yuck configuration files that define widget trees with data bindings, then renders them using GTK. Variables can be bound to shell script output, polled at intervals, or updated via IPC commands. The daemon runs as a background process, and the CLI controls which windows are open or closed.
Self-Hosting & Configuration
- Requires Rust toolchain and GTK3 development libraries
- Configuration lives in
~/.config/eww/witheww.yuckandeww.scssfiles - Use
eww daemonto start the background process - Widget windows are opened and closed with
eww open <name>andeww close <name> - Variables update reactively when underlying data sources change
Key Features
- Works with any X11 or Wayland window manager
- Yuck language supports conditionals, loops, and custom widget definitions
- Script-based variables can run arbitrary shell commands for data
- IPC interface for controlling widgets from external scripts
- Hot-reload support for rapid configuration iteration
Comparison with Similar Tools
- Polybar — X11 only status bar with INI config; Eww supports Wayland and arbitrary widget layouts
- Waybar — Wayland-native bar; Eww offers more flexible widget types beyond bars
- Conky — system monitor with fixed rendering; Eww provides interactive GTK widgets
- AGS — JavaScript-based widgets for Hyprland; Eww uses its own Yuck DSL and works everywhere
FAQ
Q: Does Eww work on Wayland? A: Yes. Eww supports both X11 and Wayland compositors via GTK layer-shell.
Q: Can I use it as a full status bar replacement? A: Yes. Many users replace Polybar or Waybar with Eww-based bars that include workspaces, system trays, and clock modules.
Q: How do I get live system data into widgets?
A: Use defpoll variables that execute shell commands at set intervals, or deflisten for streaming data from long-running scripts.
Q: Is there a GUI editor for Eww configs? A: No. Configuration is done by editing Yuck and SCSS files directly. The hot-reload feature makes iteration fast.