Compare commits

...

2 commits

Author SHA1 Message Date
Damocles
c13a719145 cava: add to deps, fix config via temp file 2026-04-12 19:37:39 +02:00
Damocles
e75d7c7804 readme: add visualizer, overview, curved gradient 2026-04-12 19:33:42 +02:00
3 changed files with 12 additions and 4 deletions

View file

@ -16,7 +16,9 @@ exactly when you should be most suspicious.
- Context menus for tray icons with submenu support, network chooser (known available WiFi/ethernet), bluetooth device manager (connect/disconnect, battery levels)
- Privacy indicators — screenshare and microphone icons pulse red/green when PipeWire detects active video/audio capture streams. Finally, you'll know when your webcam is on, which is more than can be said for most laptop manufacturers
- Per-module accent colors that change based on state, with animated transitions. Battery blinks when critical and sends desktop notifications, because the robot cares about your hardware more than you do
- Screen corner rounding — tiny overlay windows with quarter-circle masks, click-transparent, configurable via `screenRadius` (set to 0 if you prefer your corners sharp and your desktop ugly)
- Audio visualizer on album art via cava — because the robot watched too many r/unixporn posts and couldn't help itself
- Screen corner rounding — tiny overlay windows with quarter-circle masks, click-transparent, configurable via `screenRadius`. The gradient top border curves to match, because the robot has opinions about pixel alignment
- Overview widgets — clock and date rendered on the background layer, visible in the gaps between workspace rows when niri's overview is active. Always there, never in the way
- Weather via wttrbar with configurable arguments and rich HTML tooltips
- Power menu with lock, suspend, logout, reboot, shutdown
- Event-driven updates for network, bluetooth, and power profiles via dbus-monitor/nmcli monitor — no more 5-second polling lag
@ -128,7 +130,7 @@ Full list of theme keys and their defaults:
| `barSpacing` | `12` | Gap between modules (px) |
| `moduleSpacing` | `4` | Icon-to-label gap within a module (px) |
| `radius` | `4` | Corner radius for flyouts and menus (px) |
| `screenRadius` | `15` | Screen corner rounding, 0 to disable (px) |
| `screenRadius` | `20` | Screen corner rounding, 0 to disable (px) |
### Systemd service

View file

@ -40,7 +40,12 @@ M.BarSection {
id: cavaProc
running: root.playing
command: ["sh", "-c",
"printf '[general]\\nbars=16\\nframerate=30\\n[output]\\nmethod=raw\\nraw_target=/dev/stdout\\ndata_format=ascii\\nascii_max_range=100\\n' | cava -p /dev/stdin 2>/dev/null"
"cfg=$(mktemp /tmp/nova-cava-XXXXXX.conf);" +
"cat > \"$cfg\" << 'CAVAEOF'\n" +
"[general]\nbars=16\nframerate=30\n[output]\nmethod=raw\nraw_target=/dev/stdout\ndata_format=ascii\nascii_max_range=100\n" +
"CAVAEOF\n" +
"trap 'rm -f \"$cfg\"' EXIT;" +
"exec cava -p \"$cfg\""
]
stdout: SplitParser {
splitMarker: "\n"

View file

@ -178,7 +178,8 @@ in
self.packages.${pkgs.stdenv.hostPlatform.system}.nova-shell-cli
pkgs.nerd-fonts.symbols-only
]
++ lib.optional cfg.modules.weather.enable pkgs.wttrbar;
++ lib.optional cfg.modules.weather.enable pkgs.wttrbar
++ lib.optional cfg.modules.mpris.enable pkgs.cava;
xdg.configFile."nova-shell/modules.json".source =
(pkgs.formats.json { }).generate "nova-shell-modules.json"