From f435df434eb4f77dfcd9871b39ccd76ccb4d50b0 Mon Sep 17 00:00:00 2001 From: Nathan McCarty Date: Mon, 19 Jun 2023 22:12:25 -0400 Subject: [PATCH] Factor out waybar --- home-manager/linux/default.nix | 15 + .../linux/programs/desktop/waybar.nix | 470 +++++++++++++++++ home-manager/linux/programs/hyprland.nix | 472 +----------------- 3 files changed, 490 insertions(+), 467 deletions(-) create mode 100644 home-manager/linux/programs/desktop/waybar.nix diff --git a/home-manager/linux/default.nix b/home-manager/linux/default.nix index b55111e..cf0914f 100644 --- a/home-manager/linux/default.nix +++ b/home-manager/linux/default.nix @@ -40,6 +40,21 @@ with nLib; { # TODO: Get this working on darwin email = { enable = mkEnableOption "Email"; }; }; + # Configuration for linux specific options + config = { + # Generic desktop components + desktop = { + fuzzel-command = mkOption { + description = "Fuzzel command"; + default = '' + fuzzel -f "Iosevka Sans Quasi:size=16" -b "181818cc" -S "b9b9b9ff" -s "252525cc" -t "777777ff" -B 5 -r 5 -C "70b433cc" --width=80 --lines=25''; + }; + targets = mkOption { + description = "Targets to install desktop services to"; + default = [ "hyprland-session.target" ]; + }; + }; + }; # Linux specific programs programs = { util = { diff --git a/home-manager/linux/programs/desktop/waybar.nix b/home-manager/linux/programs/desktop/waybar.nix new file mode 100644 index 0000000..bc0851b --- /dev/null +++ b/home-manager/linux/programs/desktop/waybar.nix @@ -0,0 +1,470 @@ +{ config, lib, pkgs, inputs, ... }: +let + fuzzel-command = config.nathan.config.desktop.fuzzel-command; + targets = config.nathan.config.desktop.targets; +in { + ######################### + ## Waybar + ######################### + # https://github.com/DN-debug/waybar-examples/tree/main/waybar-examples/sway + programs.waybar = { + enable = true; + package = + (inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".waybar.override { + withMediaPlayer = true; + }).overrideAttrs + (old: { mesonFlags = old.mesonFlags ++ [ "-Dexperimental=true" ]; }); + systemd = { enable = false; }; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + spacing = 0; + margin-top = 5; + margin-bottom = 0; + # modules-left = [ "wlr/workspaces" "hyprland/submap" ]; + # modules-center = [ "hyprland/window" ]; + # modules-right = [ "mpd" "clock" "tray" ]; + modules-center = [ + "custom/launcher" + "wlr/workspaces" + "custom/media" + # "hyprland/window" + "idle_inhibitor" + "pulseaudio" + "network" + "cpu" + "memory" + # "temperature" + "tray" + "custom/notification" + "clock" + # "custom/power" + ]; + "custom/launcher" = { + format = ""; + on-click = fuzzel-command + " --prompt='❯ ' "; + on-click-right = "killall fuzzel"; + }; + "idle_inhibitor" = { + format = "{icon}"; + format-icons = { + activated = ""; + deactivated = ""; + }; + }; + pulseaudio = { + scroll-step = 1; + format = "{volume}% {icon}"; + format-bluetooth = "{volume}% {icon}"; + format-bluetooth-muted = "{icon} {format_source}"; + format-muted = "{format_source}"; + format-source = ""; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = [ "" "" "" ]; + }; + on-click = "pavucontrol"; + ignored-sinks = [ "Easy Effects Sink" ]; + }; + network = { + # // "interface": "wlp2*", // (Optional) To force the use of this interface + format-wifi = "{essid} ({signalStrength}%) "; + format-ethernet = "Connected  "; + tooltip-format = "{ifname} via {gwaddr} "; + format-linked = "{ifname} (No IP) "; + format-disconnected = "Disconnected ⚠"; + format-alt = "{ifname}: {ipaddr}/{cidr}"; + on-click-right = "bash ~/.config/rofi/wifi_menu/rofi_wifi_menu"; + }; + cpu = { + format = "{usage}% "; + tooltip = false; + }; + memory = { format = "{}% ({used}GB/{total}GB) "; }; + "tray" = { + icon-size = 20; + spacing = 10; + }; + "clock" = { format = "{:%I:%M%p %Y-%m-%d}"; }; + "custom/media" = { + format = "{icon} {}"; + return-type = "json"; + max-length = 50; + format-icons = { + spotify = " "; + firefox = " "; + mopidy = " "; + default = " "; + }; + escape = true; + exec = "waybar-mediaplayer.py 2> /dev/null"; + on-click = "playerctl play-pause"; + }; + "custom/notification" = { + tooltip = false; + format = "{icon}"; + format-icons = { + notification = "  "; + none = "  "; + dnd-notification = "  "; + dnd-none = ""; + inhibited-notification = + "  "; + inhibited-none = "  "; + dnd-inhibited-notification = + "  "; + dnd-inhibited-none = "  "; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "swaync-client -t -sw"; + on-click-right = "swaync-client -d -sw"; + escape = true; + }; + }; + }; + style = '' + * { + border: none; + border-radius: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-size: 12px; + min-height: 0; + } + + window#waybar { + background-color: transparent; + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; + } + + window#waybar.hidden { + opacity: 0.2; + } + + + #workspaces button { + background: #1f1f1f; + color: #ffffff; + border-radius: 20px; + + } + + /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ + #workspaces button:hover { + background: lightblue; + color: black; + border-bottom: 3px solid #ffffff; + + } + + #workspaces button.active { + background: #3f3f3f; + } + + #workspaces button.active:hover { + background: lightblue; + color: black; + border-bottom: 3px solid #ffffff; + + } + + #workspaces button.urgent { + background-color: #eb4d4b; + } + + #mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; + } + + #clock, + #battery, + #cpu, + #memory, + #disk, + #temperature, + #backlight, + #network, + #pulseaudio, + #custom-media, + #custom-launcher, + #custom-power, + #tray, + #mode, + #idle_inhibitor, + #mpd { + padding: 0 10px; + color: black; + } + #mpd { + background-color: #8EC5FC; + background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); + color: black; + border-radius: 20px; + margin-right: 5px; + } + + #window, + #workspaces { + margin: 0px 4px; + } + + /* If workspaces is the leftmost module, omit left margin */ + .modules-left > widget:first-child > #workspaces { + margin-left: 0px; + } + + /* If workspaces is the rightmost module, omit right margin */ + .modules-right > widget:last-child > #workspaces { + margin-right: 0px; + } + + #clock { + background-color: #FA8BFF; + background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + border-radius: 0px 20px 20px 0px; + margin-right: 4px; + + } + + #battery { + background-color: #ffffff; + color: #000000; + } + + #battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; + } + + @keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } + } + + #battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + + label:focus { + background-color: #000000; + } + + #cpu { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #custom-notification { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #memory { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #disk { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #backlight { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + + } + + #network { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #network.disconnected { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: red; + } + + #pulseaudio { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #pulseaudio.muted { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: red; + } + + #custom-media { + background-color: #8EC5FC; + background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); + color: black; + border-radius: 20px; + margin-right: 5px; + } + + + #custom-media { + background-color: #8EC5FC; + background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); + color: black; + border-radius: 20px; + margin-right: 5px; + } + + #custom-media.custom-spotify { + background-color: #8EC5FC; + background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); + color: black; + border-radius: 20px; + margin-right: 5px; + + } + + #custom-media.custom-vlc { + background-color: #8EC5FC; + background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); + color: black; + border-radius: 20px; + margin-right: 5px; + } + + #custom-power{ + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + font-size: 16px; + border-radius: 19px; + + } + #custom-launcher{ + background-color: #FA8BFF; + background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + font-size: 18px; + border-radius: 20px; + + } + + #custom-updater { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + + #temperature { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #temperature.critical { + background-color: #eb4d4b; + } + + #tray { + background-color: #FA8BFF; + background-image: linear-gradient(-45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #tray > .passive { + -gtk-icon-effect: dim; + background-color: #FA8BFF; + background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #FA8BFF; + background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + } + + #idle_inhibitor { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + border-radius: 20px 0px 0px 20px; + + } + + #idle_inhibitor.activated { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + border-radius: 20px 0px 0px 20px; + + } + + #language { + background-color: #FA8BFF; + background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); + color: black; + min-width: 16px; + } + + #keyboard-state { + background: #97e1ad; + color: #000000; + min-width: 16px; + } + + #keyboard-state > label { + padding: 0px 5px; + } + + #keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); + } + ''; + }; + # Override the service to run during graphical-session-pre.target + systemd.user.services.waybar = { + Unit = { + Description = + "Highly customizable Wayland bar for Sway and Wlroots based compositors."; + Documentation = "https://github.com/Alexays/Waybar/wiki"; + Before = [ "tray.target" ]; + }; + + Service = { + ExecStart = "${config.programs.waybar.package}/bin/waybar"; + ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; + ExecStartPost = "${pkgs.coreutils}/bin/sleep 1"; + Restart = "on-failure"; + KillMode = "mixed"; + }; + + Install = { WantedBy = targets; }; + }; + +} diff --git a/home-manager/linux/programs/hyprland.nix b/home-manager/linux/programs/hyprland.nix index 14ce084..2fd593b 100644 --- a/home-manager/linux/programs/hyprland.nix +++ b/home-manager/linux/programs/hyprland.nix @@ -1,13 +1,14 @@ -{ config, lib, pkgs, inputs, ... }: +{ config, lib, pkgs, inputs, ... }@args: let nathan = config.nathan; in with lib; { + imports = [ ./desktop/waybar.nix ]; config = mkIf nathan.programs.hyprland.enable (let swaylock-package = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.swaylock-effects; swaylock-command = '' ${swaylock-package}/bin/swaylock --screenshots --grace 30 --indicator --clock --timestr "%-I:%M:%S %p" --datestr "%A %Y-%M-%d" --effect-blur 20x3''; - fuzzel-command = '' - fuzzel -f "Iosevka Sans Quasi:size=16" -b "181818cc" -S "b9b9b9ff" -s "252525cc" -t "777777ff" -B 5 -r 5 -C "70b433cc" --width=80 --lines=25''; + # fuzzel-command = config.nathan.config.desktop.fuzzel-command; + fuzzel-command = ""; notif-package = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.swaynotificationcenter; shortcuts = inputs.self.packages.${pkgs.system}.shortcuts; @@ -408,470 +409,6 @@ in with lib; { Install = { WantedBy = [ "hyprland-session.target" ]; }; }; ######################### - ## Waybar - ######################### - # https://github.com/DN-debug/waybar-examples/tree/main/waybar-examples/sway - programs.waybar = { - enable = true; - package = - (inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".waybar.override { - withMediaPlayer = true; - }).overrideAttrs - (old: { mesonFlags = old.mesonFlags ++ [ "-Dexperimental=true" ]; }); - systemd = { enable = false; }; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - spacing = 0; - margin-top = 5; - margin-bottom = 0; - # modules-left = [ "wlr/workspaces" "hyprland/submap" ]; - # modules-center = [ "hyprland/window" ]; - # modules-right = [ "mpd" "clock" "tray" ]; - modules-center = [ - "custom/launcher" - "wlr/workspaces" - "custom/media" - # "hyprland/window" - "idle_inhibitor" - "pulseaudio" - "network" - "cpu" - "memory" - # "temperature" - "tray" - "custom/notification" - "clock" - # "custom/power" - ]; - "custom/launcher" = { - format = ""; - on-click = fuzzel-command + " --prompt='❯ ' "; - on-click-right = "killall fuzzel"; - }; - "idle_inhibitor" = { - format = "{icon}"; - format-icons = { - activated = ""; - deactivated = ""; - }; - }; - pulseaudio = { - scroll-step = 1; - format = "{volume}% {icon}"; - format-bluetooth = "{volume}% {icon}"; - format-bluetooth-muted = "{icon} {format_source}"; - format-muted = "{format_source}"; - format-source = ""; - format-source-muted = ""; - format-icons = { - headphone = ""; - hands-free = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = [ "" "" "" ]; - }; - on-click = "pavucontrol"; - ignored-sinks = [ "Easy Effects Sink" ]; - }; - network = { - # // "interface": "wlp2*", // (Optional) To force the use of this interface - format-wifi = "{essid} ({signalStrength}%) "; - format-ethernet = "Connected  "; - tooltip-format = "{ifname} via {gwaddr} "; - format-linked = "{ifname} (No IP) "; - format-disconnected = "Disconnected ⚠"; - format-alt = "{ifname}: {ipaddr}/{cidr}"; - on-click-right = "bash ~/.config/rofi/wifi_menu/rofi_wifi_menu"; - }; - cpu = { - format = "{usage}% "; - tooltip = false; - }; - memory = { format = "{}% ({used}GB/{total}GB) "; }; - "tray" = { - icon-size = 20; - spacing = 10; - }; - "clock" = { format = "{:%I:%M%p %Y-%m-%d}"; }; - "custom/media" = { - format = "{icon} {}"; - return-type = "json"; - max-length = 50; - format-icons = { - spotify = " "; - firefox = " "; - mopidy = " "; - default = " "; - }; - escape = true; - exec = "waybar-mediaplayer.py 2> /dev/null"; - on-click = "playerctl play-pause"; - }; - "custom/notification" = { - tooltip = false; - format = "{icon}"; - format-icons = { - notification = "  "; - none = "  "; - dnd-notification = - "  "; - dnd-none = ""; - inhibited-notification = - "  "; - inhibited-none = "  "; - dnd-inhibited-notification = - "  "; - dnd-inhibited-none = "  "; - }; - return-type = "json"; - exec-if = "which swaync-client"; - exec = "swaync-client -swb"; - on-click = "swaync-client -t -sw"; - on-click-right = "swaync-client -d -sw"; - escape = true; - }; - }; - }; - style = '' - * { - border: none; - border-radius: 0px; - font-family: Roboto, Helvetica, Arial, sans-serif; - font-size: 12px; - min-height: 0; - } - - window#waybar { - background-color: transparent; - color: #ffffff; - transition-property: background-color; - transition-duration: .5s; - } - - window#waybar.hidden { - opacity: 0.2; - } - - - #workspaces button { - background: #1f1f1f; - color: #ffffff; - border-radius: 20px; - - } - - /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ - #workspaces button:hover { - background: lightblue; - color: black; - border-bottom: 3px solid #ffffff; - - } - - #workspaces button.active { - background: #3f3f3f; - } - - #workspaces button.active:hover { - background: lightblue; - color: black; - border-bottom: 3px solid #ffffff; - - } - - #workspaces button.urgent { - background-color: #eb4d4b; - } - - #mode { - background-color: #64727D; - border-bottom: 3px solid #ffffff; - } - - #clock, - #battery, - #cpu, - #memory, - #disk, - #temperature, - #backlight, - #network, - #pulseaudio, - #custom-media, - #custom-launcher, - #custom-power, - #tray, - #mode, - #idle_inhibitor, - #mpd { - padding: 0 10px; - color: black; - } - #mpd { - background-color: #8EC5FC; - background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); - color: black; - border-radius: 20px; - margin-right: 5px; - } - - #window, - #workspaces { - margin: 0px 4px; - } - - /* If workspaces is the leftmost module, omit left margin */ - .modules-left > widget:first-child > #workspaces { - margin-left: 0px; - } - - /* If workspaces is the rightmost module, omit right margin */ - .modules-right > widget:last-child > #workspaces { - margin-right: 0px; - } - - #clock { - background-color: #FA8BFF; - background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - border-radius: 0px 20px 20px 0px; - margin-right: 4px; - - } - - #battery { - background-color: #ffffff; - color: #000000; - } - - #battery.charging, #battery.plugged { - color: #ffffff; - background-color: #26A65B; - } - - @keyframes blink { - to { - background-color: #ffffff; - color: #000000; - } - } - - #battery.critical:not(.charging) { - background-color: #f53c3c; - color: #ffffff; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; - } - - label:focus { - background-color: #000000; - } - - #cpu { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #custom-notification { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #memory { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #disk { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #backlight { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - - } - - #network { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #network.disconnected { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: red; - } - - #pulseaudio { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #pulseaudio.muted { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: red; - } - - #custom-media { - background-color: #8EC5FC; - background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); - color: black; - border-radius: 20px; - margin-right: 5px; - } - - - #custom-media { - background-color: #8EC5FC; - background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); - color: black; - border-radius: 20px; - margin-right: 5px; - } - - #custom-media.custom-spotify { - background-color: #8EC5FC; - background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); - color: black; - border-radius: 20px; - margin-right: 5px; - - } - - #custom-media.custom-vlc { - background-color: #8EC5FC; - background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); - color: black; - border-radius: 20px; - margin-right: 5px; - } - - #custom-power{ - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - font-size: 16px; - border-radius: 19px; - - } - #custom-launcher{ - background-color: #FA8BFF; - background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - font-size: 18px; - border-radius: 20px; - - } - - #custom-updater { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - - #temperature { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #temperature.critical { - background-color: #eb4d4b; - } - - #tray { - background-color: #FA8BFF; - background-image: linear-gradient(-45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #tray > .passive { - -gtk-icon-effect: dim; - background-color: #FA8BFF; - background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #tray > .needs-attention { - -gtk-icon-effect: highlight; - background-color: #FA8BFF; - background-image: linear-gradient(-45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - } - - #idle_inhibitor { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - border-radius: 20px 0px 0px 20px; - - } - - #idle_inhibitor.activated { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #FA8BFF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - border-radius: 20px 0px 0px 20px; - - } - - #language { - background-color: #FA8BFF; - background-image: linear-gradient(45deg, #2BD2FF 0%, #2BD2FF 52%, #2BD2FF 90%); - color: black; - min-width: 16px; - } - - #keyboard-state { - background: #97e1ad; - color: #000000; - min-width: 16px; - } - - #keyboard-state > label { - padding: 0px 5px; - } - - #keyboard-state > label.locked { - background: rgba(0, 0, 0, 0.2); - } - ''; - }; - # Override the service to run during graphical-session-pre.target - systemd.user.services.waybar = { - Unit = { - Description = - "Highly customizable Wayland bar for Sway and Wlroots based compositors."; - Documentation = "https://github.com/Alexays/Waybar/wiki"; - Before = [ "tray.target" ]; - }; - - Service = { - ExecStart = "${config.programs.waybar.package}/bin/waybar"; - ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; - ExecStartPost = "${pkgs.coreutils}/bin/sleep 1"; - Restart = "on-failure"; - KillMode = "mixed"; - }; - - Install = { WantedBy = lib.mkForce [ "hyprland-session-pre.target" ]; }; - }; - ######################### ## EasyEffects ######################### services.easyeffects.enable = true; @@ -901,5 +438,6 @@ in with lib; { "application/pdf" = [ "org.gnome.Evince.desktop" ]; "text/html" = [ "firefox.desktop" ]; }; + }); }