diff --git a/home/common.nix b/home/common.nix index 4d34941..0768e21 100644 --- a/home/common.nix +++ b/home/common.nix @@ -5,6 +5,7 @@ ./kakoune/kak.nix ./fish/fish.nix ./modules/programs/my-broot.nix + ./modules/programs/my-waybar.nix ./modules/programs/my-sway ./modules/programs/my-kitty ./modules/programs/openconnect-epfl.nix diff --git a/home/kagami-pc-home.nix b/home/kagami-pc-home.nix index 2d0d7ab..539cfe9 100644 --- a/home/kagami-pc-home.nix +++ b/home/kagami-pc-home.nix @@ -45,8 +45,8 @@ linux.graphical.defaults.webBrowser = "zen.desktop"; programs.my-sway.enable = true; programs.my-sway.fontSize = 15.0; - programs.my-sway.enableLaptopBars = false; - programs.my-sway.enableMpd = true; + programs.my-sway.enableLaptop = true; + programs.my-waybar.enableMpd = true; # Keyboard options wayland.windowManager.sway.config.input."type:keyboard".xkb_layout = "jp"; wayland.windowManager.sway.config.input."type:pointer".accel_profile = "flat"; @@ -68,7 +68,7 @@ }; nki.programs.kitty.enable = true; nki.programs.kitty.fontSize = 14; - programs.my-sway.waybar.makeBars = with config.common.monitors; barWith: [ + programs.my-waybar.makeBars = with config.common.monitors; barWith: [ # For primary (barWith { extraSettings = { output = [ home_4k.name ]; }; }) # For secondary, hide mpd diff --git a/home/macbook-nixos.nix b/home/macbook-nixos.nix index d8dc729..ddd03e0 100644 --- a/home/macbook-nixos.nix +++ b/home/macbook-nixos.nix @@ -50,8 +50,8 @@ in # Enable sway programs.my-sway.enable = true; programs.my-sway.fontSize = 14.0; - programs.my-sway.enableLaptopBars = true; - programs.my-sway.enableMpd = false; + programs.my-sway.enableLaptop = true; + programs.my-waybar.enableMpd = false; programs.my-sway.discord = "${discord}/bin/armcord"; # Keyboard options wayland.windowManager.sway.config.input."type:keyboard".xkb_layout = "jp"; diff --git a/home/modules/linux/graphical/wayland.nix b/home/modules/linux/graphical/wayland.nix index 3c6cbd9..2763c99 100644 --- a/home/modules/linux/graphical/wayland.nix +++ b/home/modules/linux/graphical/wayland.nix @@ -13,7 +13,7 @@ let systemd.user.services.swaync.Install.WantedBy = lib.mkForce [ "sway-session.target" ]; systemd.user.services.swaync.Unit.PartOf = lib.mkForce [ "sway-session.target" ]; - programs.my-sway.waybar = { + programs.my-waybar = { extraSettings = [{ modules-right = mkAfter [ "custom/swaync" ]; modules."custom/swaync" = { diff --git a/home/modules/programs/my-sway/default.nix b/home/modules/programs/my-sway/default.nix index 428c56e..138dcab 100644 --- a/home/modules/programs/my-sway/default.nix +++ b/home/modules/programs/my-sway/default.nix @@ -44,10 +44,7 @@ let ${pkgs.grim}/bin/grim -g (${pkgs.slurp}/bin/slurp) - | ${pkgs.swappy}/bin/swappy -f - ''; - - ignored-devices = [ "Surface_Headphones" ]; - playerctl = "${pkgs.playerctl}/bin/playerctl --ignore-player=${strings.concatStringsSep "," ignored-devices}"; - + playerctl = "${pkgs.playerctl}/bin/playerctl"; in { # imports = [ ./ibus.nix ]; @@ -79,6 +76,12 @@ in default = "${pkgs.firefox-wayland}/bin/firefox"; }; + enableLaptop = lib.mkOption { + type = lib.types.bool; + description = "Whether to enable laptop-specific stuff"; + default = true; + }; + lockCmd = mkOption { type = types.str; description = "The screen lock command"; @@ -86,34 +89,14 @@ in + (if cfg.wallpaper == "" then "" else " -i ${cfg.wallpaper} -s fill") + " -l -k"; }; - enableLaptopBars = mkOption { - type = types.bool; - description = "Whether to enable laptop-specific bars (battery)"; - default = true; - }; - enableMpd = mkOption { - type = types.bool; - description = "Whether to enable mpd on waybar"; - default = false; - }; + }; - waybar = { - makeBars = mkOption { - type = types.raw; - description = "Create bars with the barWith function, return a list of bars"; - default = barWith: [ (barWith { }) ]; - }; - extraSettings = mkOption { - type = types.listOf types.raw; - description = "Extra settings to be included with every default bar"; - default = [ ]; - }; - extraStyle = mkOption { - type = types.lines; - description = "Additional style for the default waybar"; - default = ""; - }; - }; + # Enable waybar + config.programs.my-waybar = mkIf cfg.enable { + enable = true; + fontSize = mkDefault cfg.fontSize; + enableLaptopBars = mkDefault cfg.enableLaptop; + terminal = mkDefault cfg.terminal; }; config.wayland.windowManager.sway = mkIf cfg.enable { @@ -366,7 +349,7 @@ in wrapperFeatures.gtk = true; extraConfig = - (if cfg.enableLaptopBars then '' + (if cfg.enableLaptop then '' # Lock screen on lid close bindswitch lid:off exec ${cfg.lockCmd} @@ -409,369 +392,6 @@ in ]; }; - config.programs.waybar = - let - barWith = { showMedia ? true, showConnectivity ? true, extraSettings ? { }, ... }: mkMerge ([{ - position = "top"; - modules-left = [ - "sway/workspaces" - "sway/mode" - "sway/window" - ]; - modules-center = [ - ]; - modules-right = - lib.optional showMedia (if cfg.enableMpd then "mpd" else "custom/media") - ++ [ - "tray" - "pulseaudio" - ] ++ lib.optionals showConnectivity [ - "bluetooth" - "network" - ] ++ [ - "cpu" - "memory" - "temperature" - ] ++ lib.optionals cfg.enableLaptopBars [ "battery" "battery#bat2" ] - ++ [ - "clock" - ]; - - modules = { - "sway/workspaces" = { - format = "{name}"; - }; - "sway/mode" = { - format = "{}"; - }; - "sway/window" = { - max-length = 70; - format = "{title}"; - "rewrite" = { - "(.*) — Mozilla Firefox" = "[🌎] $1"; - "(.*) - Mozilla Thunderbird" = "[📧] $1"; - "(.*) - Kakoune" = "[⌨️] $1"; - "(.*) - fish" = "[>_] $1"; - "(.*) - Discord" = "[🗨️] $1"; - # ArmCord thing - "• Discord \\| (.*)" = "[🗨️] $1"; - "\\((\\d+)\\) Discord \\| (.*)" = "[🗨️] {$1} $2"; - }; - }; - "tray" = { - icon-size = 21; - spacing = 10; - }; - "clock" = { - # format = "{:📅 %Y-%m-%d | 🕰️ %H:%M [%Z]}"; - format = "📅 {0:%Y-%m-%d} |️ 🕰️ {0:%H:%M [%Z]}"; - tooltip-format = "\n{calendar}"; - timezones = [ - "Europe/Zurich" - "America/Toronto" - "Asia/Tokyo" - "Asia/Ho_Chi_Minh" - ]; - calendar = { - mode = "year"; - mode-mon-col = 3; - weeks-pos = "right"; - on-scroll = 1; - on-click-right = "mode"; - format = { - months = "{}"; - days = "{}"; - weeks = "W{}"; - weekdays = "日 月 火 水 木 金 土"; # See https://github.com/Alexays/Waybar/issues/3132 - today = "{}"; - }; - }; - actions = { - on-click-middle = "mode"; - on-click-right = "tz_up"; - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; - }; - }; - "cpu" = { - format = "{usage}% "; - }; - "memory" = { - format = "{}% "; - }; - "temperature" = { - # thermal-zone = 2; - # hwmon-path" = "/sys/class/hwmon/hwmon2/temp1_input"; - critical-threshold = 80; - # format-critical = "{temperatureC}°C "; - format = "{temperatureC}°C "; - }; - "backlight" = { - # device = "acpi_video1"; - format = "{percent}% {icon}"; - states = [ 0 50 ]; - format-icons = [ "" "" ]; - }; - "battery" = mkIf cfg.enableLaptopBars { - states = { - good = 95; - warning = 30; - critical = 15; - }; - format = "{capacity}% {icon}"; - # format-good = ""; # An empty format will hide the module - # format-full = ""; - format-icons = [ "" "" "" "" "" ]; - }; - "battery#bat2" = mkIf cfg.enableLaptopBars { - bat = "BAT2"; - }; - "network" = { - # interface = wlp2s0 # (Optional) To force the use of this interface - format-wifi = "{essid} ({signalStrength}%) "; - format-ethernet = "{ifname}: {ipaddr}/{cidr} "; - format-disconnected = "Disconnected ⚠"; - interval = 7; - }; - "bluetooth" = { - format = " {status}"; - format-connected = " {device_alias}"; - format-connected-battery = " {device_alias} {device_battery_percentage}%"; - # format-device-preference= [ "device1", "device2" ], // preference list deciding the displayed devic; - tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; - tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}"; - tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; - tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; - on-click = "${pkgs.blueman}/bin/blueman-manager"; - }; - "pulseaudio" = { - # scroll-step = 1; - format = "{volume}% {icon}"; - format-bluetooth = "{volume}% {icon}"; - format-muted = ""; - format-icons = { - headphones = ""; - handsfree = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = [ "" "" ]; - }; - on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; - }; - "mpd" = { - "format" = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) 🎧"; - "format-disconnected" = "Disconnected 🎧"; - "format-stopped" = "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped 🎧"; - "interval" = 2; - "consume-icons" = { - "on" = " "; # Icon shows only when "consume" is on - }; - "random-icons" = { - "off" = " "; # Icon grayed out when "random" is off; - "on" = " "; - }; - "repeat-icons" = { - "on" = " "; - }; - "single-icons" = { - "on" = "1 "; - }; - "state-icons" = { - "paused" = ""; - "playing" = ""; - }; - "tooltip-format" = "MPD (connected)"; - "tooltip-format-disconnected" = "MPD (disconnected)"; - "on-click" = "${pkgs.mpc_cli}/bin/mpc toggle"; - "on-click-right" = "${pkgs.mpc_cli}/bin/mpc stop"; - "on-click-middle" = "${cfg.terminal} --class=kitty_ncmpcpp ${pkgs.ncmpcpp}/bin/ncmpcpp"; - }; - "custom/media" = { - "format" = "{icon}{}"; - "return-type" = "json"; - "format-icons" = { - "Playing" = " "; - "Paused" = " "; - }; - "max-length" = 80; - "exec" = "${playerctl} -a metadata --format '{\"text\": \"{{artist}} - {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F"; - "on-click" = "${playerctl} play-pause"; - }; - }; - }] ++ - cfg.waybar.extraSettings - ++ [ extraSettings ]); - in - mkIf cfg.enable { - enable = true; - systemd.enable = true; - systemd.target = "sway-session.target"; - settings = cfg.waybar.makeBars barWith; - style = '' - * { - border: none; - border-radius: 0; - font-family: monospace, 'Font Awesome 5', 'Symbols Nerd Font Mono', 'SFNS Display', Helvetica, Arial, sans-serif; - font-size: ${toString (cfg.fontSize * 1.1)}px; - min-height: 0; - } - - window#waybar { - background: rgba(43, 48, 59, 0.8); - border-bottom: 3px solid rgba(100, 114, 125, 0.5); - color: #ffffff; - } - - window#waybar.hidden { - opacity: 0.0; - } - /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ - #workspaces button { - padding: 0 5px; - background: transparent; - color: #ffffff; - border-bottom: 3px solid transparent; - } - - #workspaces button.focused { - background: #64727D; - border-bottom: 3px solid #ffffff; - } - - #workspaces button.urgent { - background-color: #eb4d4b; - } - - #window, #sway, #sway-window { - padding-left: 1em; - margin-bottom: 0.4em; - } - - #mode { - background: #64727D; - border-bottom: 3px solid #ffffff; - } - - /* #clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #bluetooth, #custom-media, #tray, #mode, #idle_inhibitor, #mpd { */ - .modules-right > * > * { - margin: 0.2em 0 0.4em 0; - padding: 0.2em 0.5em; - border: 1px solid rgba(0, 0, 0, 0.25); - border-radius: 0.3em; - } - - .modules-right > *:not(:last-child) > * { - margin-right: 0.4em; - } - - #clock { - background-color: #64727D; - } - - #battery { - background-color: #ffffff; - color: #000000; - } - - #battery.charging { - color: #ffffff; - background-color: #26A65B; - } - - @keyframes blink { - to { - background-color: #ffffff; - color: #000000; - } - } - - #battery.critical:not(.charging) { - background: #f53c3c; - color: #ffffff; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; - } - - #cpu { - background: #2ecc71; - color: #000000; - } - - #memory { - background: #9b59b6; - } - - #backlight { - background: #90b1b1; - } - - #network { - background: #2980b9; - } - - #network.disconnected { - background: #f53c3c; - } - - #pulseaudio { - background: #f1c40f; - color: #000000; - } - - #pulseaudio.muted { - background: #90b1b1; - } - - #bluetooth { - background: DarkSlateBlue; - color: white; - } - - #custom-media { - background: #66cc99; - color: #2a5c45; - } - - .custom-spotify { - background: #66cc99; - } - - .custom-vlc { - background: #ffa000; - } - - #temperature { - background: #f0932b; - } - - #temperature.critical { - background: #eb4d4b; - } - - #tray { - background-color: #2980b9; - } - - #idle_inhibitor { - background-color: #2d3436; - } - - #idle_inhibitor.activated { - background-color: #ecf0f1; - color: #2d3436; - } - - #mpd { - background-color: teal; - color: white; - } - '' + cfg.waybar.extraStyle; - }; config.home.packages = mkIf cfg.enable (with pkgs; [ # Needed for QT_QPA_PLATFORM kdePackages.qtwayland diff --git a/home/modules/programs/my-waybar.nix b/home/modules/programs/my-waybar.nix new file mode 100644 index 0000000..59bb9c4 --- /dev/null +++ b/home/modules/programs/my-waybar.nix @@ -0,0 +1,408 @@ +{ lib, config, pkgs, ... }: +let + cfg = config.programs.my-waybar; +in +{ + options.programs.my-waybar = { + enable = lib.mkEnableOption "custom configuration for waybar"; + fontSize = lib.mkOption { + type = lib.types.float; + description = "The default font size"; + }; + terminal = lib.mkOption { + type = lib.types.str; + description = "The command to the terminal emulator to be used"; + default = "${config.programs.kitty.package}/bin/kitty"; + }; + + enableLaptopBars = lib.mkOption { + type = lib.types.bool; + description = "Whether to enable laptop-specific bars (battery)"; + default = true; + }; + enableMpd = lib.mkOption { + type = lib.types.bool; + description = "Whether to enable mpd on waybar"; + default = false; + }; + + makeBars = lib.mkOption { + type = lib.types.raw; + description = "Create bars with the barWith function, return a list of bars"; + default = barWith: [ (barWith { }) ]; + }; + extraSettings = lib.mkOption { + type = lib.types.listOf lib.types.raw; + description = "Extra settings to be included with every default bar"; + default = [ ]; + }; + extraStyle = lib.mkOption { + type = lib.types.lines; + description = "Additional style for the default waybar"; + default = ""; + }; + }; + config.programs.waybar = + let + barWith = { showMedia ? true, showConnectivity ? true, extraSettings ? { }, ... }: lib.mkMerge ([{ + position = "top"; + modules-left = [ + "sway/workspaces" + "sway/mode" + "sway/window" + ]; + modules-center = [ + ]; + modules-right = + lib.optional showMedia (if cfg.enableMpd then "mpd" else "custom/media") + ++ [ + "tray" + "pulseaudio" + ] ++ lib.optionals showConnectivity [ + "bluetooth" + "network" + ] ++ [ + "cpu" + "memory" + "temperature" + ] ++ lib.optionals cfg.enableLaptopBars [ "battery" "battery#bat2" ] + ++ [ + "clock" + ]; + + modules = { + "sway/workspaces" = { + format = "{name}"; + }; + "sway/mode" = { + format = "{}"; + }; + "sway/window" = { + max-length = 70; + format = "{title}"; + "rewrite" = { + "(.*) — Mozilla Firefox" = "[🌎] $1"; + "(.*) - Mozilla Thunderbird" = "[📧] $1"; + "(.*) - Kakoune" = "[⌨️] $1"; + "(.*) - fish" = "[>_] $1"; + "(.*) - Discord" = "[🗨️] $1"; + # ArmCord thing + "• Discord \\| (.*)" = "[🗨️] $1"; + "\\((\\d+)\\) Discord \\| (.*)" = "[🗨️] {$1} $2"; + }; + }; + "tray" = { + icon-size = 21; + spacing = 10; + }; + "clock" = { + # format = "{:📅 %Y-%m-%d | 🕰️ %H:%M [%Z]}"; + format = "📅 {0:%Y-%m-%d} |️ 🕰️ {0:%H:%M [%Z]}"; + tooltip-format = "\n{calendar}"; + timezones = [ + "Europe/Zurich" + "America/Toronto" + "Asia/Tokyo" + "Asia/Ho_Chi_Minh" + ]; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "right"; + on-scroll = 1; + on-click-right = "mode"; + format = { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weekdays = "日 月 火 水 木 金 土"; # See https://github.com/Alexays/Waybar/issues/3132 + today = "{}"; + }; + }; + actions = { + on-click-middle = "mode"; + on-click-right = "tz_up"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; + }; + }; + "cpu" = { + format = "{usage}% "; + }; + "memory" = { + format = "{}% "; + }; + "temperature" = { + # thermal-zone = 2; + # hwmon-path" = "/sys/class/hwmon/hwmon2/temp1_input"; + critical-threshold = 80; + # format-critical = "{temperatureC}°C "; + format = "{temperatureC}°C "; + }; + "backlight" = { + # device = "acpi_video1"; + format = "{percent}% {icon}"; + states = [ 0 50 ]; + format-icons = [ "" "" ]; + }; + "battery" = lib.mkIf cfg.enableLaptopBars { + states = { + good = 95; + warning = 30; + critical = 15; + }; + format = "{capacity}% {icon}"; + # format-good = ""; # An empty format will hide the module + # format-full = ""; + format-icons = [ "" "" "" "" "" ]; + }; + "battery#bat2" = lib.mkIf cfg.enableLaptopBars { + bat = "BAT2"; + }; + "network" = { + # interface = wlp2s0 # (Optional) To force the use of this interface + format-wifi = "{essid} ({signalStrength}%) "; + format-ethernet = "{ifname}: {ipaddr}/{cidr} "; + format-disconnected = "Disconnected ⚠"; + interval = 7; + }; + "bluetooth" = { + format = " {status}"; + format-connected = " {device_alias}"; + format-connected-battery = " {device_alias} {device_battery_percentage}%"; + # format-device-preference= [ "device1", "device2" ], // preference list deciding the displayed devic; + tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; + tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}"; + tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; + tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; + on-click = "${pkgs.blueman}/bin/blueman-manager"; + }; + "pulseaudio" = { + # scroll-step = 1; + format = "{volume}% {icon}"; + format-bluetooth = "{volume}% {icon}"; + format-muted = ""; + format-icons = { + headphones = ""; + handsfree = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = [ "" "" ]; + }; + on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + "mpd" = { + "format" = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) 🎧"; + "format-disconnected" = "Disconnected 🎧"; + "format-stopped" = "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped 🎧"; + "interval" = 2; + "consume-icons" = { + "on" = " "; # Icon shows only when "consume" is on + }; + "random-icons" = { + "off" = " "; # Icon grayed out when "random" is off; + "on" = " "; + }; + "repeat-icons" = { + "on" = " "; + }; + "single-icons" = { + "on" = "1 "; + }; + "state-icons" = { + "paused" = ""; + "playing" = ""; + }; + "tooltip-format" = "MPD (connected)"; + "tooltip-format-disconnected" = "MPD (disconnected)"; + "on-click" = "${pkgs.mpc_cli}/bin/mpc toggle"; + "on-click-right" = "${pkgs.mpc_cli}/bin/mpc stop"; + "on-click-middle" = "${cfg.terminal} --class=kitty_ncmpcpp ${pkgs.ncmpcpp}/bin/ncmpcpp"; + }; + "custom/media" = { + "format" = "{icon}{}"; + "return-type" = "json"; + "format-icons" = { + "Playing" = " "; + "Paused" = " "; + }; + "max-length" = 80; + "exec" = "${lib.getExe pkgs.playerctl} -a metadata --format '{\"text\": \"{{artist}} - {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F"; + "on-click" = "${lib.getExe pkgs.playerctl} play-pause"; + }; + }; + }] ++ + cfg.extraSettings + ++ [ extraSettings ]); + in + lib.mkIf cfg.enable { + enable = true; + systemd.enable = true; + systemd.target = "sway-session.target"; + settings = cfg.makeBars barWith; + style = '' + * { + border: none; + border-radius: 0; + font-family: monospace, 'Font Awesome 5', 'Symbols Nerd Font Mono', 'SFNS Display', Helvetica, Arial, sans-serif; + font-size: ${toString (cfg.fontSize * 1.1)}px; + min-height: 0; + } + + window#waybar { + background: rgba(43, 48, 59, 0.8); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: #ffffff; + } + + window#waybar.hidden { + opacity: 0.0; + } + /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ + #workspaces button { + padding: 0 5px; + background: transparent; + color: #ffffff; + border-bottom: 3px solid transparent; + } + + #workspaces button.focused { + background: #64727D; + border-bottom: 3px solid #ffffff; + } + + #workspaces button.urgent { + background-color: #eb4d4b; + } + + #window, #sway, #sway-window { + padding-left: 1em; + margin-bottom: 0.4em; + } + + #mode { + background: #64727D; + border-bottom: 3px solid #ffffff; + } + + /* #clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #bluetooth, #custom-media, #tray, #mode, #idle_inhibitor, #mpd { */ + .modules-right > * > * { + margin: 0.2em 0 0.4em 0; + padding: 0.2em 0.5em; + border: 1px solid rgba(0, 0, 0, 0.25); + border-radius: 0.3em; + } + + .modules-right > *:not(:last-child) > * { + margin-right: 0.4em; + } + + #clock { + background-color: #64727D; + } + + #battery { + background-color: #ffffff; + color: #000000; + } + + #battery.charging { + color: #ffffff; + background-color: #26A65B; + } + + @keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } + } + + #battery.critical:not(.charging) { + background: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + + #cpu { + background: #2ecc71; + color: #000000; + } + + #memory { + background: #9b59b6; + } + + #backlight { + background: #90b1b1; + } + + #network { + background: #2980b9; + } + + #network.disconnected { + background: #f53c3c; + } + + #pulseaudio { + background: #f1c40f; + color: #000000; + } + + #pulseaudio.muted { + background: #90b1b1; + } + + #bluetooth { + background: DarkSlateBlue; + color: white; + } + + #custom-media { + background: #66cc99; + color: #2a5c45; + } + + .custom-spotify { + background: #66cc99; + } + + .custom-vlc { + background: #ffa000; + } + + #temperature { + background: #f0932b; + } + + #temperature.critical { + background: #eb4d4b; + } + + #tray { + background-color: #2980b9; + } + + #idle_inhibitor { + background-color: #2d3436; + } + + #idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; + } + + #mpd { + background-color: teal; + color: white; + } + '' + cfg.extraStyle; + }; +} diff --git a/home/nki-framework.nix b/home/nki-framework.nix index 02ab99b..b44533a 100644 --- a/home/nki-framework.nix +++ b/home/nki-framework.nix @@ -48,7 +48,7 @@ tap = "enabled"; }; }; - programs.my-sway.waybar.extraSettings = + programs.my-waybar.extraSettings = let change-mode = pkgs.writeScript "change-mode" '' #!/usr/bin/env ${lib.getExe pkgs.fish}