# eww A minimal top bar for [Quickshell](https://quickshell.outfoxxed.me/) on [Niri](https://github.com/YaLTeR/niri). ## Features - **Window strip** — shows all windows on the current workspace, ordered by niri column position. Focused window is highlighted, unfocused are greyscaled. Click to focus. - **System tray** — full StatusNotifier support with native DBusMenu popups (including submenus on hover). - **Audio widget** — shows current default sink volume, scroll to adjust by 1%, click to open a sink picker powered by PipeWire directly. - **Battery** — charge percentage with a level/charging icon (via UPower); turns red when low, green while charging. Hidden on machines with no battery. - **Wattage** — live power draw/charge rate in watts (via UPower); shows `-` while discharging, `+` while charging. Hidden when idle or on desktops. - **Clock** — current time, updates every second. Multi-monitor aware — one bar instance per screen, each showing only that screen's windows. ## Dependencies - [Quickshell](https://quickshell.outfoxxed.me/) ≥ 0.2.0 - [Niri](https://github.com/YaLTeR/niri) - PipeWire - `niri` in `$PATH` (for window tracking via IPC) - Fonts: [Inter](https://rsms.me/inter/), [Maple Mono](https://github.com/subframe7536/maple-font) (for the audio icon glyph) - An icon theme with app icons (e.g. [Papirus](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)) ## Usage ```sh qs -c ~/.config/quickshell/eww ``` Or add to your niri config for autostart: ```kdl spawn-at-startup "qs" "-c" "/home/callie/.config/quickshell/eww" ``` > **Note:** Quickshell must be launched with `UseQApplication` mode for system tray menus to work. This is handled automatically by the `//@ pragma UseQApplication` directive at the top of `shell.qml`. ## Structure ``` eww/ ├── shell.qml # everything, for now └── README.md ``` ## Theming Add a `theme` object to `~/.config/ebar/config.json`. Values are color strings; hex codes are recommended. The object may be partial: omitted keys keep the defaults below. ```json { "theme": { "background": "#1e1e2e", "foreground": "#cdd6f4", "muted": "#7f849c", "disabled": "#585b70", "surface": "#313244", "hover": "#45475a", "focus": "#585b70", "focusBorder": "#7f849c", "separator": "#45475a", "secondaryText": "#bac2de", "accent": "#fab387", "accentBackground": "#3b2f1f", "positive": "#a6e3a1", "negative": "#f38ba8", "transparent": "#00000000" } } ``` | Key | Used for | Default | |---|---|---| | `background` | Bar and popup backgrounds | `#000000` | | `foreground` | Normal text and icons | `#ffffff` | | `muted` | Muted audio, inactive controls, and adjacent windows | `#888888` | | `disabled` | Disabled tray-menu text | `#555555` | | `surface` | Window strip and popup hover surfaces | `#1a1a1a` | | `hover` | Window and workspace-control hover | `#2a2a2a` | | `focus`, `focusBorder` | Focused window pill fill and border | `#555555`, `#888888` | | `separator` | Tray separators | `#333333` | | `secondaryText` | Windows on the current but unfocused workspace | `#b0b0b0` | | `accent`, `accentBackground` | Idle-inhibit active state | `#c08030`, `#3a2a10` | | `positive` | Charging state | `#70c070` | | `negative` | Low-battery state | `#e06060` | | `transparent` | Transparent widget backgrounds and borders | `#00000000` | Fonts remain fixed (`Inter` and `Maple Mono`).