{ config, lib, pkgs, ... }: { services.swayosd = { enable = true; topMargin = 0.05; stylePath = pkgs.writeText "swayosd.css" '' window#osd { padding: 10px 15px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, .08); background: alpha(#303030, 0.8); } window#osd #container { margin: 10px; } window#osd #container > image { -gtk-icon-transform: scale(1.2); } window#osd image, window#osd label { color: rgba(255, 255, 255, .20); } window#osd progressbar:disabled, window#osd image:disabled { opacity: 0.5; } window#osd progressbar { min-height: 6px; border-radius: 999px; background: transparent; border: none; } window#osd trough { min-height: inherit; border-radius: inherit; border: none; background: rgba(255, 255, 255, .06); } window#osd progress { min-height: inherit; border-radius: inherit; border: none; background: rgb(74, 169, 108); } ''; }; programs.niri.settings.binds = with config.lib.niri.actions; { "XF86AudioRaiseVolume".action = spawn "swayosd-client" "--output-volume" "raise" "--max-volume" "150"; "XF86AudioLowerVolume".action = spawn "swayosd-client" "--output-volume" "lower" "--max-volume" "150"; "XF86MonBrightnessUp".action = spawn "swayosd-client" "--brightness" "raise"; "XF86MonBrightnessDown".action = spawn "swayosd-client" "--brightness" "lower"; }; }