commit b4bda85db509927832ccdc97e4375f3e1189f97d
parent cae75d197fd433191f14f6b4ec45101a33675d03
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Mon, 13 Oct 2025 18:11:52 +0200
parent cae75d197fd433191f14f6b4ec45101a33675d03
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Mon, 13 Oct 2025 18:11:52 +0200
config/home-manager/zaphyra: rice some stuff
11 files changed, 740 insertions(+), 302 deletions(-)
M
|
76
+++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
M
|
180
++++++++++++++++++++++++++++++++++++++-----------------------------------------
M
|
239
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
M
|
62
++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
M
|
214
++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
M
|
170
++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
diff --git a/config/home/zaphyra/colors.nix b/config/home/zaphyra/colors.nix @@ -0,0 +1,45 @@ +{ + + background = { + r = 30; + g = 40; + b = 30; + a = 0.9; + }; + + button = { + r = 255; + g = 255; + b = 255; + a = 0.06; + }; + + buttonHover = { + r = 255; + g = 255; + b = 255; + a = 0.1; + }; + + border = { + r = 255; + g = 255; + b = 255; + a = 0.08; + }; + + accent = { + r = 74; + g = 169; + b = 108; + a = 1; + }; + + accentBorder = { + r = 59; + g = 135; + b = 86; + a = 0.5; + }; + +}
diff --git a/config/home/zaphyra/configure/niri.nix b/config/home/zaphyra/configure/niri.nix @@ -7,6 +7,10 @@ ... }: +let + colors = import ../colors.nix; + +in { imports = @@ -49,37 +53,59 @@ "gtk" "gnome" ]; + config.preferred.default = [ + "gtk" + "gnome" + ]; extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-gnome ]; }; - gtk = { - enable = true; - - gtk3.extraConfig = { - gtk-theme = "adw-gtk3-dark"; - gtk-application-prefer-dark-theme = 1; - }; - - font = { - name = "Adwaita Sans"; - size = 11; - package = pkgs.adwaita-fonts; - }; - - iconTheme = { - name = "Adwaita-green"; - package = pkgs.tgc.adwaita-colors-icon-theme; + gtk = + let + extraCss = '' + @define-color background-color rgba(${toString colors.background.r}, ${toString colors.background.g}, ${toString colors.background.b}, ${toString colors.background.a}); + @define-color button-color rgba(${toString colors.button.r}, ${toString colors.button.g}, ${toString colors.button.b}, ${toString colors.button.a}); + @define-color button-hover-color rgba(${toString colors.buttonHover.r}, ${toString colors.buttonHover.g}, ${toString colors.buttonHover.b}, ${toString colors.buttonHover.a}); + @define-color border-color rgba(${toString colors.border.r}, ${toString colors.border.g}, ${toString colors.border.b}, ${toString colors.border.a}); + @define-color accent-border-color rgba(${toString colors.accentBorder.r}, ${toString colors.accentBorder.g}, ${toString colors.accentBorder.b}, ${toString colors.accentBorder.a}); + @define-color accent-color rgba(${toString colors.accent.r}, ${toString colors.accent.g}, ${toString colors.accent.b}, ${toString colors.accent.a}); + ''; + in + { + enable = true; + + gtk3.extraConfig = { + gtk-theme-name = "adw-gtk3-dark"; + gtk-application-prefer-dark-theme = 1; + }; + + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + + gtk3.extraCss = extraCss; + gtk4.extraCss = extraCss; + + font = { + name = "Adwaita Sans"; + size = 11; + package = pkgs.adwaita-fonts; + }; + + iconTheme = { + name = "Adwaita-green"; + package = pkgs.tgc.adwaita-colors-icon-theme; + }; + + cursorTheme = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + }; }; - cursorTheme = { - name = "Adwaita"; - package = pkgs.adwaita-icon-theme; - }; - }; - qt = { enable = true; platformTheme.name = "Adwaita-dark"; @@ -100,10 +126,14 @@ "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; accent-color = "green"; + theme-name = ""; }; "org/gnome/desktop/wm/preferences" = { button-layout = ""; }; + "org/gtk/Settings/Debug" = { + enable-inspector-keybinding = true; + }; }; }
diff --git a/config/home/zaphyra/home.nix b/config/home/zaphyra/home.nix @@ -31,7 +31,6 @@ imports = with homeManagerModules.zaphyra; [ homeManagerModules.common.programs.starship - homeManagerModules.common.programs.app2unit programs.fish programs.mcfly programs.zoxide
diff --git a/config/home/zaphyra/programs/fuzzel.nix b/config/home/zaphyra/programs/fuzzel.nix @@ -1,5 +1,9 @@ -{ ... }: +{ lib, ... }: +let + colors = import ../colors.nix; + +in { programs.fuzzel = { @@ -17,15 +21,42 @@ radius = 6; }; colors = { - background = "#00000080"; # Background color + background = "#${ + lib.concatStrings ( + lib.map (elem: lib.toHexString elem) [ + colors.background.r + colors.background.g + colors.background.b + (builtins.floor (100 * colors.background.a)) + ] + ) + }"; # Background color + border = "#${ + lib.concatStrings ( + lib.map (elem: lib.toHexString elem) [ + colors.accentBorder.r + colors.accentBorder.g + colors.accentBorder.b + (builtins.floor (100 * colors.accentBorder.a)) + ] + ) + }"; # The color of the match count stats printed at the right-hand side of the input prompt + selection = "#${ + lib.concatStrings ( + lib.map (elem: lib.toHexString elem) [ + colors.buttonHover.r + colors.buttonHover.g + colors.buttonHover.b + (builtins.floor (100 * colors.buttonHover.a)) + ] + ) + }"; # Background color of the selected entry text = "#d8daddff"; # Text (foreground) color of unselected entries prompt = "#d8daddff"; # Text (foreground) color of prompt character(s) input = "#d8daddff"; # Text (foreground) color of input string match = "#d8daddff"; # Text (foreground) color of the matched substring - selection = "#ffffff1a"; # Background color of the selected entry selection-text = "#d8daddff"; # Text (foreground) color of the selected entry selection-match = "#b7d4edf2"; # Text (foreground) color of the matched substring of the selected entry - border = "#4aa96cff"; # The color of the match count stats printed at the right-hand side of the input prompt }; }; };
diff --git a/config/home/zaphyra/programs/niri.nix b/config/home/zaphyra/programs/niri.nix @@ -67,13 +67,6 @@ prefer-no-csd = true; - workspaces = { - "01-Web".name = "Web"; - "02-Mail".name = "Mail"; - "03-Term".name = "Term"; - "04-Chat".name = "Chat"; - }; - window-rules = [ { shadow.enable = true; @@ -93,20 +86,20 @@ matches = [ { at-startup = true; - app-id = "org.gnome.Fractal$"; + app-id = "org.gnome.Fractal"; } { at-startup = true; - app-id = "im.dino.Dino$"; + app-id = "im.dino.Dino"; } { at-startup = true; - app-id = "org.gajim.Gajim$"; + app-id = "org.gajim.Gajim"; } ]; - open-on-workspace = "Chat"; default-column-display = "tabbed"; + open-on-workspace = "4"; } { matches = [ @@ -128,7 +121,7 @@ { app-id = "thunderbird$"; } ]; - open-on-workspace = "Mail"; + open-on-workspace = "2"; } { matches = [ @@ -149,104 +142,103 @@ } ]; - binds = with config.lib.niri.actions; { - "Mod+Shift+E".action = quit; - "Mod+Space".action = lib.mkDefault (spawn (lib.getExe pkgs.fuzzel)); - "Mod+Return".action = lib.mkDefault (spawn config.home.sessionVariables.TERMINAL); - - "Mod+L".action = spawn (lib.getExe' pkgs.systemd "loginctl") "lock-session"; - "Mod+Z".action = power-off-monitors; - # "Mod+Z".action = spawn (lib.getExe' pkgs.systemd "systemctl") "suspend"; - - "Mod+W" = { - action = close-window; - repeat = false; - }; + binds = + with config.lib.niri.actions; + { + "Mod+Shift+E".action = quit; + "Mod+Space".action = lib.mkDefault (spawn (lib.getExe pkgs.fuzzel)); + "Mod+Return".action = lib.mkDefault (spawn (lib.getExe pkgs.unstable.app2unit) "-T"); - "XF86AudioRaiseVolume" = { - allow-when-locked = true; - action = lib.mkDefault (spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "1%+"); - }; - "XF86AudioLowerVolume" = { - allow-when-locked = true; - action = lib.mkDefault (spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "1%-"); - }; - "XF86MonBrightnessUp" = { - allow-when-locked = true; - action = lib.mkDefault (spawn (lib.getExe pkgs.brightnessctl) "s" "+5%"); - }; - "XF86MonBrightnessDown" = { - allow-when-locked = true; - action = lib.mkDefault (spawn (lib.getExe pkgs.brightnessctl) "s" "5%-"); - }; + "Mod+L".action = spawn (lib.getExe' pkgs.systemd "loginctl") "lock-session"; + "Mod+Z".action = power-off-monitors; + # "Mod+Z".action = spawn (lib.getExe' pkgs.systemd "systemctl") "suspend"; - "Mod+Tab".action = toggle-overview; + "Mod+W" = { + action = close-window; + repeat = false; + }; - "Mod+1".action = focus-workspace "Web"; - "Mod+2".action = focus-workspace "Mail"; - "Mod+3".action = focus-workspace "Term"; - "Mod+4".action = focus-workspace "Chat"; - "Mod+5".action = focus-workspace 5; - "Mod+6".action = focus-workspace 6; - "Mod+7".action = focus-workspace 7; - "Mod+8".action = focus-workspace 8; - "Mod+9".action = focus-workspace 9; + "XF86AudioRaiseVolume" = { + allow-when-locked = true; + action = lib.mkDefault (spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "1%+"); + }; + "XF86AudioLowerVolume" = { + allow-when-locked = true; + action = lib.mkDefault (spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "1%-"); + }; + "XF86MonBrightnessUp" = { + allow-when-locked = true; + action = lib.mkDefault (spawn (lib.getExe pkgs.brightnessctl) "s" "+5%"); + }; + "XF86MonBrightnessDown" = { + allow-when-locked = true; + action = lib.mkDefault (spawn (lib.getExe pkgs.brightnessctl) "s" "5%-"); + }; - "Mod+Shift+1".action.move-column-to-workspace = "Web"; - "Mod+Shift+2".action.move-column-to-workspace = "Mail"; - "Mod+Shift+3".action.move-column-to-workspace = "Term"; - "Mod+Shift+4".action.move-column-to-workspace = "Chat"; - "Mod+Shift+5".action.move-column-to-workspace = 5; - "Mod+Shift+6".action.move-column-to-workspace = 6; - "Mod+Shift+7".action.move-column-to-workspace = 7; - "Mod+Shift+8".action.move-column-to-workspace = 8; - "Mod+Shift+9".action.move-column-to-workspace = 9; + "Mod+Tab".action = toggle-overview; - "Mod+Prior".action = focus-workspace-up; - "Mod+Next".action = focus-workspace-down; + "Mod+Prior".action = focus-workspace-up; + "Mod+Next".action = focus-workspace-down; - "Mod+Shift+Prior".action = move-window-up-or-to-workspace-up; - "Mod+Shift+Next".action = move-window-down-or-to-workspace-down; + "Mod+Shift+Prior".action = move-window-up-or-to-workspace-up; + "Mod+Shift+Next".action = move-window-down-or-to-workspace-down; - "Mod+Ctrl+Prior".action = focus-monitor-up; - "Mod+Ctrl+Next".action = focus-monitor-down; + "Mod+Ctrl+Prior".action = focus-monitor-up; + "Mod+Ctrl+Next".action = focus-monitor-down; - "Mod+Left".action = focus-column-left; - "Mod+Right".action = focus-column-right; - "Mod+Up".action = focus-window-or-workspace-up; - "Mod+Down".action = focus-window-or-workspace-down; + "Mod+Left".action = focus-column-left; + "Mod+Right".action = focus-column-right; + "Mod+Up".action = focus-window-or-workspace-up; + "Mod+Down".action = focus-window-or-workspace-down; - "Mod+Shift+Left".action = move-column-left; - "Mod+Shift+Right".action = move-column-right; - "Mod+Shift+Up".action = move-window-up; - "Mod+Shift+Down".action = move-window-down; + "Mod+Shift+Left".action = move-column-left; + "Mod+Shift+Right".action = move-column-right; + "Mod+Shift+Up".action = move-window-up; + "Mod+Shift+Down".action = move-window-down; - "Mod+R".action = switch-preset-column-width; - "Mod+Shift+R".action = switch-preset-window-height; - "Mod+Ctrl+R".action = reset-window-height; + "Mod+R".action = switch-preset-column-width; + "Mod+Shift+R".action = switch-preset-window-height; + "Mod+Ctrl+R".action = reset-window-height; - "Mod+C".action = center-window; + "Mod+C".action = center-window; - "Mod+F".action = maximize-column; - "Mod+Ctrl+F".action = expand-column-to-available-width; - "Mod+Shift+F".action = fullscreen-window; - "Mod+Alt+F".action = set-column-width "50%"; + "Mod+F".action = maximize-column; + "Mod+Ctrl+F".action = expand-column-to-available-width; + "Mod+Shift+F".action = fullscreen-window; + "Mod+Alt+F".action = set-column-width "50%"; - "Mod+Minus".action = set-column-width "-10%"; - "Mod+Equal".action = set-column-width "+10%"; - "Mod+Shift+Minus".action = set-window-height "-10%"; - "Mod+Shift+Equal".action = set-window-height "+10%"; + "Mod+Minus".action = set-column-width "-10%"; + "Mod+Equal".action = set-column-width "+10%"; + "Mod+Shift+Minus".action = set-window-height "-10%"; + "Mod+Shift+Equal".action = set-window-height "+10%"; - "Mod+Shift+Space".action = toggle-window-floating; + "Mod+Shift+Space".action = toggle-window-floating; - "Mod+Shift+Return".action = spawn (lib.getExe pkgs.tgc.nirius) "toggle-follow-mode"; + "Mod+Shift+Return".action = spawn (lib.getExe pkgs.tgc.nirius) "toggle-follow-mode"; - "Mod+T".action = toggle-column-tabbed-display; + "Mod+T".action = toggle-column-tabbed-display; - "Mod+Print".action = spawn (lib.getExe pkgs.hyprpicker) "--lowercase-hex" "--autocopy"; - "Print".action = screenshot; - "Alt+Print".action = screenshot-window; - }; + "Mod+Print".action = spawn (lib.getExe pkgs.hyprpicker) "--lowercase-hex" "--autocopy"; + "Print".action = screenshot; + "Alt+Print".action = screenshot-window; + } + // (lib.mergeAttrsList ( + lib.map + (num: { + "Mod+${toString num}".action.focus-workspace = num; + "Mod+Shift+${toString num}".action.move-column-to-workspace = num; + }) + [ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + ] + )); }; - }
diff --git a/config/home/zaphyra/programs/nmgui.nix b/config/home/zaphyra/programs/nmgui.nix @@ -1,17 +1,246 @@ -{ pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: { - home.packages = [ pkgs.unstable.nmgui ]; + home.packages = [ + (pkgs.writeShellScriptBin "nmgui" '' + windowID=`niri msg --json windows | jq -re '[.[] | select(.app_id == "com.network.manager") | .id][0]'` + + if [ $windowID != "null" ] + then + exec niri msg action close-window --id=$windowID + else + app2unit -- ${ + lib.getExe ( + pkgs.unstable.nmgui.overrideAttrs { + src = pkgs.fetchFromGitHub { + owner = "s-adi-dev"; + repo = "nmgui"; + rev = "08b2380e5b230a2215a6430878e2aa13c3d86d44"; + hash = "sha256-qRFJbzam48GTbQnLrZINE0vAvAJfVN4bJey8MZwCsm4="; + }; + } + ) + } + fi + '') + ]; + + xdg.configFile."nmgui/style.css".text = '' + * { + font-family: "Adwaita Sans", "Symbols Nerd Font"; + outline-color: @accent-color; + color: white; + } + + window { + border: 2px solid @accent-border-color; + background: @background-color; + } + + window { + border-top: unset; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + } + + #wifi-scan-label, + button, + entry { + border-radius: 4px; + } + + separator { + min-height: 2px; + margin: 0 -20px; + background: @border-color; + } + + entry { + min-height: 32px; + padding-left: 9px; + padding-right: 8px; + border: 1px solid; + border-spacing: 6px; + } + + entry:hover { + outline: none; + background: @button-hover-color; + border: 1px solid @border-color; + } + + text selection { + color: white; + background: @accent-color; + } + + button { + min-height: 24px; + min-width: 16px; + padding: 4px 9px; + background: @button-color; + border: 1px solid @border-color; + color: white; + } + + button.image-button { + padding: 8px 12px 8px 8px; + border: unset; + background: unset; + } + + button:hover { + background: @button-hover-color; + } + + button:disabled { + border-left: 4px solid @accent-color; + border-top: unset; + border-bottom: unset; + padding: unset; + } + + button:disabled box { + margin: -2px; + margin-right: 0; + background: @button-hover-color; + padding: 4px 10px 4px 8px; + border: 1px solid @border-color; + border-right: unset; + } + + switch { + border-radius: 4px; + border: 1px solid @border-color; + background: @button-color; + } + + switch:checked { + background: alpha(@accent-color, .5); + } + + switch slider { + border-radius: 4px; + border: 1px solid @border-color; + background: rgb(190, 190, 190); + margin: 3px; + min-height: 15px; + min-width: 15px; + } + + switch:hover slider, + switch slider:hover { + border 1px solid @border-color; + background: rgb(170, 170, 170); + } + + #wifi-label { + font-size: 15pt; + font-weight: 400; + } + + #wifi-networks-label { + font-size: 12pt; + font-weight: 300; + } + + #wifi-scan-label { + padding: 5px 8px; + background: @button-color; + border: 1px solid @border-color; + color: white; + } + + #wifi-scan-label:hover { + background: @button-hover-color; + color: white; + } + + #network-list-box #network-button { + margin-right: -5px; + border-right: 0; + border-top-right-radius: unset; + border-bottom-right-radius: unset; + } + + #network-list-box .more-details-button { + border-top-left-radius: unset; + border-bottom-left-radius: unset; + margin-left: unset; + } + + /* Details page */ + window > box .image-button { + margin-left:-10px; + } + + window > box > box > box > box:last-child { + margin: 0 -20px -20px; + } + + window > box > box > box > box:last-child > button:first-child { + margin-right: 15px; + } + + /* dialogs */ + .titlebar { + background: transparent; + } + + .dialog-vbox button { + margin: 10px; + } + + .dialog-vbox button:first-child { + margin-right: 5px; + } + + .dialog-vbox button:last-child { + margin-left: 5px; + } + + .dialog-vbox box > label:last-child { + margin: 0 10px 20px; + } + + .password { + background: @button-color; + border: 1px solid @border-color; + color: white; + } + ''; programs.niri.settings.window-rules = [ { matches = [ { app-id = "com.network.manager$"; } ]; - open-floating = true; + focus-ring.enable = false; + open-focused = true; - default-column-width.fixed = 500; - default-window-height.fixed = 600; + open-floating = true; + default-floating-position = { + x = 40; + y = 0; + relative-to = "top-right"; + }; + + geometry-corner-radius = { + "bottom-left" = 9.0; + "bottom-right" = 9.0; + "top-left" = 0.0; + "top-right" = 0.0; + }; + + min-width = 400; + max-width = 400; + min-height = 500; + max-height = 500; } ];
diff --git a/config/home/zaphyra/programs/pipewire.nix b/config/home/zaphyra/programs/pipewire.nix @@ -12,7 +12,7 @@ sonusmix ]; - home.file."${config.xdg.configHome}/pipewire/pipewire.conf.d/10-chloe-raop.conf".text = + xdg.configFile."pipewire/pipewire.conf.d/10-chloe-raop.conf".text = let raopSink = ipAddr: name: { name = "libpipewire-module-raop-sink"; @@ -39,10 +39,11 @@ { name = "libpipewire-module-combine-stream"; args = { - "node.name" = "combine_sink"; + "node.name" = "raop_multi_room"; "node.description" = "Multi-Room"; "combine.mode" = "sink"; "combine.latency-compensate" = false; + "combine.on-demand-streams" = true; "stream.rules" = [ { actions."create-stream" = { };
diff --git a/config/home/zaphyra/programs/wleave.nix b/config/home/zaphyra/programs/wleave.nix @@ -1,6 +1,5 @@ { config, - lib, pkgs, ... }: @@ -8,43 +7,90 @@ { home.packages = [ - (pkgs.writeShellScriptBin "wleave" '' - ${lib.getExe pkgs.wleave} --buttons-per-row 5 --column-spacing 10 --margin-bottom 440 --margin-top 440 $@ - '') + pkgs.tgc.wleave ]; - home.file."${config.xdg.configHome}/wleave/layout".text = lib.concatStringsSep "\n" ( - lib.map (elem: builtins.toJSON elem) [ + xdg.configFile."wleave/layout.json".text = builtins.toJSON { + no-version-info = true; + css = "${config.xdg.configHome}/wleave/style.css"; + close-on-lost-focus = true; + buttons-per-row = "1/1"; + margin-top = 380; + margin-bottom = 380; + buttons = [ { label = "lock"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/lock.svg"; action = "loginctl lock-session"; text = "Lock"; keybind = "l"; } { label = "suspend"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/suspend.svg"; action = "systemctl suspend"; text = "Suspend"; keybind = "u"; } { label = "logout"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/logout.svg"; action = "loginctl terminate-user $USER"; text = "Logout"; keybind = "e"; } { label = "shutdown"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/shutdown.svg"; action = "systemctl poweroff"; text = "Shutdown"; keybind = "s"; } { label = "reboot"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/reboot.svg"; action = "systemctl reboot"; text = "Reboot"; keybind = "r"; } - ] - ); + ]; + }; + + home.file."${config.xdg.configHome}/wleave/style.css".text = '' + * { + font-family: "Adwaita Sans", "Symbols Nerd Font"; + outline: none; + color: white; + } + + window { + background-color: @background-color; + } + + button { + color: rgb(190, 190, 190); + background: @button-color; + border: 1px solid @border-color; + border-radius: 10px; + padding: 10px; + margin: 10px; + } + + button:hover { + border-color: @border-color; + background: @button-hover-color; + } + + button:focus { + border: 2px solid @accent-border-color; + background: @button-hover-color; + } + + button label.action-name { + margin-top: 20px; + font-size: 18pt; + font-weight: 300; + } + ''; + }
diff --git a/config/home/zaphyra/services/swaync.nix b/config/home/zaphyra/services/swaync.nix @@ -1,4 +1,5 @@ { + config, lib, pkgs, homeManagerModules, @@ -33,43 +34,66 @@ "backlight" "volume" "title" + "notifications" + "mpris" ]; widget-config = { - volume.label = ""; + volume.label = ""; backlight.label = ""; title = { - text = "Notification Center"; + text = "Notifications"; clear-all-button = true; - button-text = " Clear"; + button-text = "Clear"; + }; + + mpris = { + autohide = true; + show_album_art = "never"; + blacklist = [ "^(?!playerctld)" ]; }; "buttons-grid#powerprofiles".actions = [ { type = "toggle"; - label = " Power Saver "; + label = " Power Saver "; update-command = "sh -c '[[ $(powerprofilesctl get) == \"power-saver\" ]] && echo true || echo false'"; - command = "sh -c 'swaync-client -cp; powerprofilesctl set power-saver'"; + command = lib.concatStringsSep " " [ + "swaync-client -cp;" + "powerprofilesctl set power-saver" + ]; } { type = "toggle"; - label = " Balanced "; + label = " Balanced "; update-command = "sh -c '[[ $(powerprofilesctl get) == \"balanced\" ]] && echo true || echo false'"; - command = "sh -c 'swaync-client -cp; powerprofilesctl set balanced'"; + command = lib.concatStringsSep " " [ + "swaync-client -cp;" + "powerprofilesctl set balanced" + ]; } { type = "toggle"; label = " Performance "; update-command = "sh -c '[[ $(powerprofilesctl get) == \"performance\" ]] && echo true || echo false'"; - command = "sh -c 'swaync-client -cp; powerprofilesctl set performance'"; + command = lib.concatStringsSep " " [ + "swaync-client -cp;" + "powerprofilesctl set performance" + ]; } ]; "buttons-grid#actions".actions = [ { type = "toggle"; - label = " ☕ "; - command = "systemctl --user is-active --quiet swayidle.service && systemctl --user stop swayidle.service || systemctl --user start swayidle.service"; + label = "☕"; update-command = "systemctl --user is-active --quiet swayidle.service && echo false || echo true"; + command = lib.concatStringsSep " " [ + "systemctl --user is-active --quiet swayidle.service" + "&&" + "systemctl --user stop swayidle.service" + "||" + "systemctl --user start swayidle.service" + ]; } { type = "toggle"; @@ -82,82 +106,119 @@ type = "toggle"; active = true; label = " "; - command = "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && ${lib.getExe pkgs.brightnessctl} --device='tpacpi::kbd_backlight' set 1 || ${lib.getExe pkgs.brightnessctl} --device='tpacpi::kbd_backlight' set 0'"; update-command = "sh -c '[[ $(${lib.getExe pkgs.brightnessctl} --device='tpacpi::kbd_backlight' get) == \"1\" ]] && echo true || echo false'"; + command = "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && ${lib.getExe pkgs.brightnessctl} --device='tpacpi::kbd_backlight' set 1 || ${lib.getExe pkgs.brightnessctl} --device='tpacpi::kbd_backlight' set 0'"; } { type = "toggle"; active = true; label = "直"; - command = "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'"; update-command = "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'"; + command = "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'"; } { type = "toggle"; label = ""; - # command = "swaync-client -cp; ${config.home.sessionVariables.TERMINAL} --confirm-close-surface=false -e ${lib.getExe pkgs.bluetui}"; - command = "swaync-client -cp; ${lib.getExe pkgs.overskride}"; update-command = "sh -c 'bluetoothctl show | grep -q \\\"Powered: yes\\\" && echo true || echo false'"; + command = lib.concatStringsSep " " [ + "swaync-client -cp;" + config.home.sessionVariables.TERMINAL + "--confirm-close-surface=false" + "-e" + (lib.getExe pkgs.bluetuith) + ]; } { label = ""; - command = "swaync-client -cp; wleave"; + command = lib.concatStringsSep " " [ + "swaync-client -cp;" + "wleave" + ]; } ]; }; }; style = '' - @define-color border-color rgba(255, 255, 255, 0.08); - * { - font-family: "Adwaita Sans", "Symbols Nerd Font"; + all: unset; + font-family: "AdwaitaSans Nerd Font"; } .control-center { - background-color: #222226; - border-radius: 0 0 10px 10px; - border: 2px solid @border-color; - border-top: 0; box-shadow: 0 0 10px 0 rgba(0,0,0,.80); + background: @background-color; + border-radius: 0 0 10px 10px; + border: 2px solid @accent-border-color; + border-top: unset; + } + + .control-center > box { + padding: 4px 8px; + } + + .control-center box:first-child { + margin-top: 4px; + } + + .actions button { + padding: 1px 0; + } + + .powerprofiles button { + margin: 0 4px; padding: 4px; } - .widget-title > button { - background: rgba(255, 255, 255, 0.06); + .widget-volume label, + .widget-brightness label { + padding: 2px; + } + + .widget-volume > box > label, + .widget-backlight > label { + padding: 0 4px; + } + + scale trough { + background: @button-color; border: 1px solid @border-color; border-radius: 4px; - } - .widget-title > button:hover { - background: rgba(255, 255, 255, 0.1); + min-height: 4px; } - .widget-backlight, .widget-volume, .widget-buttons-grid { - background: transparent; + scale slider { + min-height: 8px; + min-width: 8px; + background: white; + border-radius: 10px; + border: 1px solid @border-color; } - .widget-backlight, - .widget-volume { - margin: 0px; - padding: 5px 10px; + .widget-title { + border-top: 1px solid rgba(255,255,255,.1); } - /* Buttons */ - .widget-buttons-grid { - padding: 0px; + .widget-title > label { + margin: 4px; + font-size: 14pt; + font-weight: 300; } - .widget-buttons-grid > flowbox > flowboxchild > button { - background: rgba(255, 255, 255, 0.06); + /* Buttons */ + button { + background: @button-color; border: 1px solid @border-color; border-radius: 4px; + margin: 4px; + padding: 2px; } - .widget-buttons-grid > flowbox > flowboxchild > button:checked { - border-bottom: 2px solid rgb(74, 169, 108); + button:hover { + background: @button-hover-color; } - .widget-buttons-grid > flowbox > flowboxchild > button:hover { - background: rgba(255, 255, 255, 0.1); + button:checked { + border-bottom: 2px solid @accent-color; } /* Sliders */ @@ -167,41 +228,25 @@ } scale trough { - background: rgba(255, 255, 255, 0.06); + background: @button-color; } scale highlight { - background: rgb(74, 169, 108); + background: @accent-color; border-radius: 5px; } - /* Notification */ - .control-center .notification { - box-shadow: unset; - background: rgba(47, 47, 51, 0.95); - border: 1px solid @border-color; - } - - .close-button { - border-radius: 0; - margin-top: 0; - margin-right: -2px; - background: unset; - } - - .close-button:hover { - background: rgba(255, 255, 255, 0.1); - border-bottom-left-radius: 4px; - border-top-right-radius: 4px; - } - - .notification-group-headers { - margin-bottom: 4px; + .notification { + background: @background-color; + border: 2px solid @accent-border-color; + border-radius: 4px; + margin: 4px; } - .notification-group-icon { - opacity: 0; + .control-center .notification { + background: @button-color; + border: 1px solid @border-color; } .notification-group .notification-group-header { @@ -209,33 +254,6 @@ font-size: 16pt; } - .notification-group .notification-group-buttons { - margin: 4px; - } - - .notification-group-collapse-button, - .notification-group-close-all-button { - border-radius: 4px; - background: rgba(47, 47, 51, 0.95); - border: 1px solid @border-color; - margin: 0 4px; - } - - .notification-background { - padding: 5px 5px; - } - - .notification { - background: rgba(0, 0, 0, 0.5); - border: 2px solid rgba(59, 135, 86, 0.5); - border-radius: 4px; - } - - .notification .notification-default-action:hover, - .notification button:hover { - background: rgba(255, 255, 255, 0.06); - border-radius: 0; - } .notification .text-box { margin: 2px; @@ -248,7 +266,11 @@ .notification .text-box .time { font-weight: 200; font-size: 13px; - margin-right: 0; + } + + .notification .notification-default-action:hover, + .notification button:hover { + background: @button-hover-color; } ''; };
diff --git a/config/home/zaphyra/services/waybar.nix b/config/home/zaphyra/services/waybar.nix @@ -26,6 +26,7 @@ modules-left = [ "niri/workspaces" + "cffi/niri-taskbar" "custom/arrow1" ]; modules-center = [ @@ -33,8 +34,8 @@ "custom/notification" ]; modules-right = [ - "tray" "custom/arrow2" + "tray" "network" "wireplumber" "custom/airpodsctl" @@ -43,21 +44,40 @@ ]; "niri/workspaces" = { - format = "{index}: {value}"; + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; }; - "niri/language" = { - format = "{}"; - format-en = "US"; - format-de = "DE"; - format-ru = "RU"; + "cffi/niri-taskbar" = { + module_path = "${pkgs.tgc.niri-taskbar}/lib/libniri_taskbar.so"; + }; + + "custom/arrow1" = { + format = ""; + tooltip = false; }; clock = { on-click = "swaync-client -t -sw"; on-click-right = lib.getExe pkgs.gnome-calendar; format = "{:%d. %b %H:%M}"; - tooltip-format = "{:%x %T}"; + tooltip = false; + tooltip-format = "<tt><small>{calendar}</small></tt>"; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "left"; + format = { + months = "<span color='#ffead3'><b>{}</b></span>"; + days = "<span color='#fff'><b>{}</b></span>"; + weeks = "<span color='#99ffdd'><b>W{}</b></span>"; + weekdays = "<span color='#ffcc66'><b>{}</b></span>"; + today = "<span color='#ff6699'><b><u>{}</u></b></span>"; + }; + }; }; "custom/notification" = { @@ -84,7 +104,12 @@ spacing = 10; }; - "network" = + "custom/arrow2" = { + format = ""; + tooltip = false; + }; + + network = let format = [ "<b>Interface:</b> {ifname}" @@ -97,8 +122,8 @@ interval = 5; # family = "ipv4_6"; - # on-click = lib.getExe pkgs.networkmanager_dmenu; - on-click = lib.getExe pkgs.unstable.nmgui; + on-click-right = lib.getExe pkgs.networkmanager_dmenu; + on-click = "nmgui"; tooltip-format = lib.concatStringsSep "\n" format; tooltip-format-wifi = lib.concatStringsSep "\n" ( @@ -110,21 +135,22 @@ ] ); - format-ethernet = " "; - format-wifi = " {essid} ({signalStrength}%)"; - format-linked = " "; - format-disconnected = " "; + format-ethernet = ""; + format-wifi = " {essid} ({signalStrength}%)"; + format-linked = ""; + format-disconnected = ""; }; wireplumber = { max-volume = 150; scroll-step = 1; + on-click-right = lib.getExe pkgs.pwvucontrol; on-click = lib.concatStringsSep " " [ config.home.sessionVariables.TERMINAL "--confirm-close-surface=false" "-e" - (lib.getExe pkgs.ncpamixer) + (lib.getExe pkgs.unstable.wiremix) ]; format = "{icon} {volume}%"; @@ -171,9 +197,9 @@ }; # Connected to AC - format = " <span color='white'>{capacity}%</span>"; + format = " <span color='#bedcbe'>{capacity}%</span>"; # Not connected to AC - format-discharging = "{icon} <span color='white'>{capacity}%</span>"; + format-discharging = "{icon} <span color='#bedcbe'>{capacity}%</span>"; format-icons = [ "" "" @@ -191,14 +217,11 @@ tooltip-format = "{power} W, {timeTo}"; }; - "custom/arrow1" = { - format = ""; - tooltip = false; - }; - - "custom/arrow2" = { - format = ""; - tooltip = false; + "niri/language" = { + format = "{}"; + format-en = "US"; + format-de = "DE"; + format-ru = "RU"; }; } ]; @@ -206,79 +229,94 @@ style = '' @keyframes blink { to { - background: transparent; - color: #fff; + background: @background-color; + color: rgb(190, 220, 190); } } * { - font-family: "Adwaita Sans", "Symbols Nerd Font"; + all: unset; + font-family: "AdwaitaSans Nerd Font"; font-size: 14px; - border: none; - border-radius: 0; - min-height: 0; - transition: none; - box-shadow: none; + color: rgb(190, 220, 190); } - window#waybar { + tooltip { + background: @background-color; + border: 1px solid @border-color; + } + + tooltip label { color: white; - background: rgba(0, 0, 0, 0.5); - border-bottom: 2px solid rgba(59, 135, 86, 0.5); + padding: 4px; } - #workspaces { - background: rgba(255, 255, 255, 0.06); + window#waybar { + background: @background-color; + border-bottom: 2px solid @accent-border-color; } - #workspaces button.focused { - background: rgba(255, 255, 255, 0.1); - border-bottom: 2px solid rgb(74, 169, 108); + + .modules-left > widget:not(:last-child), + .modules-right > widget:not(:first-child) { + background: rgba(255, 255, 255, .05); } - #workspaces button:hover { - background: rgba(255, 255, 255, 0.06); + + .modules-left > widget:not(:last-child) > *, + .modules-right > widget:not(:first-child) > * { + padding: 0 10px; } - #clock { - font-size: 14px; - font-family: 'Noto Mono', monospace; - padding: 0px 5px; + #custom-arrow1, + #custom-arrow2 { + color: rgba(255, 255, 255, .05); + font-family: monospace; + font-size: 20pt; } - #tray { - padding: 0px 15px; + #workspaces label { + font-size: 14pt; } - #network, #wireplumber, #custom-airpodsctl, #battery, #language { - background: rgba(255, 255, 255, 0.06); - padding: 0px 15px; + .niri-taskbar image { + opacity: .7; } - #battery { - color: #a3be8c; + #workspaces button, + .niri-taskbar button { + padding: 4px; + border-bottom: 2px solid transparent; } - #battery.charging { + #workspaces button:hover, + #workspaces button.focused, + .niri-taskbar button:hover, + .niri-taskbar button.focused { + background: @button-hover-color; + border-bottom: 2px solid @accent-color; + } + + #clock { + color: white; + font-size: 14px; + font-family: 'AdwaitaMono Nerd Font'; + } + + #custom-notification { + padding: 0 4px; + } + + #battery { color: #a3be8c; } #battery.critical:not(.charging) { background: rgba(245, 60, 60, 0.4); - color: #fff; - - border-radius: 15px; - margin: 6px; - animation-name: blink; animation-duration: 1s; animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } - - #custom-arrow1, #custom-arrow2 { - font-size: 20pt; - color: rgba(255, 255, 255, 0.06); - } ''; };
diff --git a/config/home/zaphyra/services/wob.nix b/config/home/zaphyra/services/wob.nix @@ -11,9 +11,14 @@ enable = true; settings."" = { anchor = "top center"; - background_color = "00000080"; - border_color = "4aa96ce6"; - bar_color = "ffffffa6"; + background_color = "0000004d"; + border_color = "3b875680"; + bar_color = "ffffff4d"; + margin = "5 0 0 0"; + height = 25; + bar_padding = 0; + border_offset = 0; + border_size = 2; }; };