LinuxCommandLibrary

eww

Create and manage custom desktop widgets

TLDR

Start the daemon

$ eww daemon
copy

Open a widget
$ eww [[-c|--config]] [path/to/source_code_directory] open [window_name]
copy

Close a widget
$ eww [[-c|--config]] [path/to/source_code_directory] close [window_name]
copy

Reload the configuration
$ eww reload
copy

Kill the daemon
$ eww kill
copy

Print and watch logs
$ eww logs
copy

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)

Copied to clipboard