diff --git a/modules/user/waybar.nix b/modules/user/waybar.nix index e3e2776..53758e9 100644 --- a/modules/user/waybar.nix +++ b/modules/user/waybar.nix @@ -1,6 +1,7 @@ { osConfig, config, pkgs, ... }: { home.packages = with pkgs; [ - font-awesome + # font-awesome + nerd-fonts.symbols-only playerctl ]; @@ -8,7 +9,7 @@ enable = true; settings.mainBar = { - margin = "8"; + margin = "8px"; spacing = 8; modules-left = [ @@ -56,12 +57,16 @@ }; battery = { + interval = 5; states = { warning = 30; critical = 15; }; format = "{icon} {capacity}%"; - format-icons = ["" "" "" "" ""]; + format-icons = { + default = ["󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; + charging = ["󰢟" "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅"]; + }; }; "keyboard-state" = { @@ -95,13 +100,10 @@ network = { format = "{ifname}"; - format-wifi = "{essid} ({signalStrength}%) "; - format-ethernet = "{ifname} "; + format-wifi = " {essid} ({signalStrength}%)"; + format-ethernet = "{ifname}"; format-disconnected = ""; - tooltip-format = "{ifname}"; - tooltip-format-wifi = "{essid} ({signalStrength}%) "; - tooltip-format-ethernet = "{ifname} "; - tooltip-format-disconnected = "Disconnected"; + tooltip-format = "{ipaddr}"; max-length = 50; on-click = "ghostty --title=nmtui -e nmtui"; }; @@ -141,123 +143,138 @@ style = let colors = config.lib.stylix.colors.withHashtag; radius = "12px"; - in /* css */ '' - window#waybar { - background: transparent; - color: ${colors.base05}; - border-radius: ${radius}; - font-weight: bold; - font-size: 1.1em; - } + scssFile = pkgs.writeText "waybar.scss" /* scss */ '' + window#waybar { + background: transparent; + color: ${colors.base05}; + border-radius: ${radius}; + font-weight: bold; + font-size: 1.1em; + } - #language, - #mpris, - #pulseaudio, - #network, - #battery, - #cpu, - #temperature, - #keyboard-state label.locked, - #custom-mem, - #clock { - background: ${colors.base00}; - border-radius: ${radius}; - padding: 8px; - } + #language, + #mpris, + #pulseaudio, + #network, + #battery, + #cpu, + #temperature, + #keyboard-state label.locked, + #custom-mem, + #clock { + background: ${colors.base00}; + border-radius: ${radius}; + padding: 8px; + } - #workspaces, - #tray { - background: ${colors.base00}; - border-radius: ${radius}; - } + #workspaces, + #tray { + background: ${colors.base00}; + border-radius: ${radius}; + } - #workspaces button { - color: ${colors.base05}; - padding: 4px; - border-radius: ${radius}; - border: 1pt solid transparent; - } - #workspaces button:hover { - background: ${colors.base01}; - } - #workspaces button.active { - background: ${colors.base0B}; - color: ${colors.base00}; - } - #workspaces button.active:hover { - border-color: ${colors.base0B}; - background: ${colors.base01}; - color: ${colors.base0B}; - } + #workspaces button { + color: ${colors.base05}; + padding: 4px; + border-radius: ${radius}; + border: 1pt solid transparent; - #mpris:hover { - background: ${colors.base01}; - } - #mpris.paused { - opacity: .5; - } + &:hover { background: ${colors.base01}; } - #tray widget { - border: 1pt solid transparent; - border-radius: ${radius}; - } - #tray widget:hover { - background: ${colors.base01}; - } - #tray widget>image { - padding: 8px; - } - #tray > .passive { - border-color: ${colors.base02}; - } - #tray > .needs-attention { - border-color: ${colors.base09}; - } + &.active { + background: ${colors.base0B}; + color: ${colors.base00}; - #pulseaudio:hover, - #pulseaudio.muted:hover { - background: ${colors.base01}; - } - #pulseaudio.muted { - background: ${colors.base08}; - color: ${colors.base00}; - } + &:hover { + border-color: ${colors.base0B}; + background: ${colors.base01}; + color: ${colors.base0B}; + } + } + } - #network:hover { - background: ${colors.base01}; - } + #mpris { + &:hover { background: ${colors.base01}; } + &.paused { opacity: .5; } + } - #system .drawer-child > * { - margin-right: 4px - } + #tray { + widget { + border: 1pt solid transparent; + border-radius: ${radius}; + &:hover { background: ${colors.base01}; } + & > image { padding: 8px; } + } - #keyboard-state label.locked { - background-color: ${colors.base00}; - color: ${colors.base08}; - } + & > .passive { border-color: ${colors.base02}; } + & > .needs-attention { border-color: ${colors.base09}; } + } - #battery.charging { - color: ${colors.base0B}; - } - #battery.warning:not(.charging) { - color: ${colors.base00}; - background-color: ${colors.base09}; - } - #battery.critical:not(.charging) { - background-color: ${colors.base08}; - color: ${colors.base00}; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; - } - @keyframes blink { - to { + #pulseaudio { + &:hover { background: ${colors.base01}; } + &.muted { + background: ${colors.base08}; + color: ${colors.base00}; + + &:hover { + color: ${colors.base08}; + background: ${colors.base01}; + } + } + } + + #network { + &:hover { background: ${colors.base01}; } + &.disconnected { + color: ${colors.base00}; + background: ${colors.base08}; + } + } + + #system .drawer-child > * { + margin-right: 4px + } + + #keyboard-state label.locked { + background-color: ${colors.base00}; + color: ${colors.base08}; + } + + #battery { + &.plugged { color: ${colors.base0D}; } + &.charging { color: ${colors.base0B}; } + &:not(.charging) { + &.warning { + color: ${colors.base00}; + background-color: ${colors.base09}; + } + &.critical { + background-color: ${colors.base08}; + color: ${colors.base00}; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + } + &.full { + color: ${colors.base00}; + background: ${colors.base0B}; + } + } + + @keyframes blink { + to { background-color: ${colors.base00}; color: ${colors.base08}; + } } - } - ''; + ''; + + cssFile = pkgs.runCommand "waybar.css" { + nativeBuildInputs = [ pkgs.dart-sass ]; + } "sass ${scssFile} $out"; + in builtins.readFile cssFile; }; } \ No newline at end of file