eww
Create and manage custom desktop widgets
TLDR
Start the daemon
Open a widget
Close a widget
Reload the configuration
Kill the daemon
Print and watch logs
SYNOPSIS
eww [-c <dir>|--config=<dir>] [-h|--help] [-v|--version] <COMMAND> [<ARGS>]
PARAMETERS
-c <dir>, --config=<dir>
Set configuration directory (default: $XDG_CONFIG_HOME/eww or ~/.config/eww)
-h, --help
Print help and exit
-v, --version
Print version and exit
daemon [--wait]
Start/restart eww daemon (blocks until running; --wait waits for startup)
open <window>
Open named window (defined in config)
close <window>
Close named window
kill
Kill all eww daemons
reload
Hot-reload config files
update <var>=<val>
Set widget variable value
list-windows
List currently open windows
msg [-w <window>] <msg>
Send message to window(s) for event handling
DESCRIPTION
Eww (Elkowar's Wacky Widgets) is a powerful, configurable widget toolkit for Wayland compositors based on wlroots, such as Hyprland, Sway, and River.
It enables creation of custom status bars, dashboards, popups, and launchers using Yuck, a simple Lisp-like declarative language for defining widget trees and logic. Styling uses standard CSS or SCSS, with support for variables, events, and script execution for dynamic content like system monitors, weather, or media controls.
Eww runs as a daemon, rendering widgets efficiently via OpenGL or GTK backends. It leverages the wlr-layer-shell protocol for precise window positioning (overlay, background layers). Hot-reloading allows live config tweaks without restarts.
Ideal for ricing enthusiasts, it integrates scripts (e.g., Bash, Python) for data fetching. Configs live in ~/.config/eww/, with eww.yuck for defs and eww.scss for styles. Community shares presets on GitHub.
CAVEATS
Requires Wayland with wlr-layer-shell-unstable-v1 protocol; unsupported on X11. High CPU if misconfigured with frequent script polling. Daemon must run first. Some compositors need explicit layer-shell support.
CONFIG STRUCTURE
Main files: eww.yuck (widgets/vars), eww.scss (styles). Use (defwindow ...) for windows, (defvar ...) for state.
EXAMPLE USAGE
eww daemon &
eww open bar
Monitors CPU: (label :text (string "CPU: %{exec barscripts cpu}"))
HISTORY
Created by Elkowar in 2021 as a Hyprland companion. Open-sourced on GitHub (elkowar/eww). Evolved from simple bar to full widget system; v0.7+ added SCSS, better scripting. Actively maintained with community contributions.
SEE ALSO
waybar(1), yambar(1), swaybar(1)


