From 903308080a069442317d6f3e2c04df4d53174b3f Mon Sep 17 00:00:00 2001 From: Noa Aarts Date: Thu, 4 Apr 2024 00:04:41 +0200 Subject: [PATCH] modularize waybar config, TODO: styles --- modules/hyprland.nix | 5 +-- modules/waybar/cpu.nix | 16 +++++++ modules/waybar/default.nix | 81 ++++------------------------------ modules/waybar/memory.nix | 16 +++++++ modules/waybar/network.nix | 20 +++++++++ modules/waybar/power.nix | 21 +++++++++ modules/waybar/temperature.nix | 19 ++++++++ modules/waybar/tray.nix | 15 +++++++ modules/waybar/vpn.nix | 19 ++++++++ modules/waybar/window.nix | 15 +++++++ modules/waybar/wireplumber.nix | 18 ++++++++ 11 files changed, 170 insertions(+), 75 deletions(-) create mode 100644 modules/waybar/cpu.nix create mode 100644 modules/waybar/memory.nix create mode 100644 modules/waybar/network.nix create mode 100644 modules/waybar/power.nix create mode 100644 modules/waybar/temperature.nix create mode 100644 modules/waybar/tray.nix create mode 100644 modules/waybar/vpn.nix create mode 100644 modules/waybar/window.nix create mode 100644 modules/waybar/wireplumber.nix diff --git a/modules/hyprland.nix b/modules/hyprland.nix index 1754f6a..af39b3b 100644 --- a/modules/hyprland.nix +++ b/modules/hyprland.nix @@ -27,10 +27,9 @@ in waybar = { enable = lib.mkDefault true; modules = { - # left = [ "hyprland/workspaces" "tray" "hyprland/window" ]; - # center = [ "clock" ]; - # right = [ "custom/vpn" "wireplumber" "network" "cpu" "memory" "temperature" "custom/poweroff" ]; + left = [ "hyprland/workspaces" "tray" "hyprland/window" ]; center = [ "clock" ]; + right = [ "custom/vpn" "wireplumber" "network" "cpu" "memory" "temperature" "custom/poweroff" ]; }; }; wofi.enable = lib.mkDefault true; diff --git a/modules/waybar/cpu.nix b/modules/waybar/cpu.nix new file mode 100644 index 0000000..f0e53b2 --- /dev/null +++ b/modules/waybar/cpu.nix @@ -0,0 +1,16 @@ +{ lib, config, ... }: +let + name = "cpu"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + format = "cpu: {usage}%"; + tooltip = false; + }; + }; +} diff --git a/modules/waybar/default.nix b/modules/waybar/default.nix index 81ee6f1..a8fa83f 100644 --- a/modules/waybar/default.nix +++ b/modules/waybar/default.nix @@ -28,8 +28,17 @@ in }; imports = [ + ./cpu.nix + ./vpn.nix + ./tray.nix ./clock.nix + ./power.nix + ./memory.nix + ./window.nix + ./network.nix ./workspaces.nix + ./temperature.nix + ./wireplumber.nix ]; config = lib.mkIf cfg.enable { @@ -58,77 +67,6 @@ in modules-left = cfg.modules.left; modules-center = cfg.modules.center; modules-right = cfg.modules.right; - "tray".spacing = 10; - "cpu" = { - format = "cpu: {usage}%"; - tooltip = false; - }; - "memory" = { - format = "mem: {}%"; - tooltip = false; - }; - "wireplumber" = { - format = "{volume}% {icon}"; - format-muted = ""; - on-click = "helvum"; - format-icons = ["" "" ""]; - }; - "custom/vpn" = { - format = "VPN"; - exec = "echo '{\"class\": \"connected\"}'"; - exec-if = "test -d /proc/sys/net/ipv4/conf/tun0"; - return-type = "json"; - interval = 5; - }; - "temperature" = { - thermal-zone = 2; - hwmon-path = "/sys/class/hwmon/hwmon3/temp1_input"; - critical-threshold = 80; - format = "{temperatureC}°C {icon}"; - format-icons = ["" "" ""]; - }; - "custom/poweroff" = { - format = ""; - on-click = "wofi-power"; - on-click-right = "swaylock"; - }; - "battery" = { - bat = "hidpp_battery_2"; - states = { - full = 100; - good = 50; - warning = 30; - critical = 30; - }; - format = "mouse: {capacity}% {icon}"; - format-charging = "mouse: {capacity}% {icon}"; - format-plugged = "mouse: {capacity}% {icon}"; - format-alt = "mouse: {time} {icon}"; - interval = 1; - format-icons = [ - "󰂎" - "󰁻" - "󰁾" - "󰂀" - "󰁹" - ]; - }; - "hyprland/window" = { - max-length = 36; - }; - "network" = { - format-wifi = "{essid} ({signalStrength}%) 󰖩"; - format-ethernet = "{ipaddr}/{cidr} 󰛳"; - tooltip-format = "{ifname} via {gwaddr} 󰛳"; - format-linked = "{ifname} (No IP) 󰛳"; - format-disconnected = "Disconnected "; - format-alt = "{ifname}: {ipaddr}/{cidr}"; - }; - "custom/pronouns" = { - format = "{}"; - # exec = "${config.xdg.configHome}/waybar/pronouns"; # TODO: install pronouns - interval = 5; - }; }; }; style = '' @@ -140,7 +78,6 @@ in window#waybar { background-color: transparent; - border-radius: 999px; color: #${config.colorScheme.palette.text}; transition-property: background-color; diff --git a/modules/waybar/memory.nix b/modules/waybar/memory.nix new file mode 100644 index 0000000..134431c --- /dev/null +++ b/modules/waybar/memory.nix @@ -0,0 +1,16 @@ +{ lib, config, ... }: +let + name = "memory"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + format = "mem: {}%"; + tooltip = false; + }; + }; +} diff --git a/modules/waybar/network.nix b/modules/waybar/network.nix new file mode 100644 index 0000000..8fd8fa2 --- /dev/null +++ b/modules/waybar/network.nix @@ -0,0 +1,20 @@ +{ lib, config, ... }: +let + name = "network"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + format-wifi = "{essid} ({signalStrength}%) 󰖩"; + format-ethernet = "{ipaddr}/{cidr} 󰛳"; + tooltip-format = "{ifname} via {gwaddr} 󰛳"; + format-linked = "{ifname} (No IP) 󰛳"; + format-disconnected = "Disconnected "; + format-alt = "{ifname}: {ipaddr}/{cidr}"; + }; + }; +} diff --git a/modules/waybar/power.nix b/modules/waybar/power.nix new file mode 100644 index 0000000..d6c40e9 --- /dev/null +++ b/modules/waybar/power.nix @@ -0,0 +1,21 @@ +{ lib, config, ... }: +let + name = "custom/poweroff"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + imports = [ + ../wofi.nix + ]; + config = lib.mkIf config.modules.waybar.${name}.enable { + modules.wofi.enable = true; + programs.waybar.settings.mainbar."${name}" = { + format = ""; + on-click = "wofi-power"; + # on-click-right = "swaylock"; # TODO: change to whatever lock screen i want + }; + }; +} diff --git a/modules/waybar/temperature.nix b/modules/waybar/temperature.nix new file mode 100644 index 0000000..3d10984 --- /dev/null +++ b/modules/waybar/temperature.nix @@ -0,0 +1,19 @@ +{ lib, config, ... }: +let + name = "temperature"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + thermal-zone = 2; + hwmon-path = "/sys/class/hwmon/hwmon3/temp1_input"; + critical-threshold = 80; + format = "{temperatureC}°C {icon}"; + format-icons = ["" "" ""]; + }; + }; +} diff --git a/modules/waybar/tray.nix b/modules/waybar/tray.nix new file mode 100644 index 0000000..279265a --- /dev/null +++ b/modules/waybar/tray.nix @@ -0,0 +1,15 @@ +{ lib, config, ... }: +let + name = "tray"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + spacing = 10; + }; + }; +} diff --git a/modules/waybar/vpn.nix b/modules/waybar/vpn.nix new file mode 100644 index 0000000..da226b3 --- /dev/null +++ b/modules/waybar/vpn.nix @@ -0,0 +1,19 @@ +{ lib, config, ... }: +let + name = "custom/vpn"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + format = "VPN"; + exec = "echo '{\"class\": \"connected\"}'"; + exec-if = "test -d /proc/sys/net/ipv4/conf/tun0"; + return-type = "json"; + interval = 5; + }; + }; +} diff --git a/modules/waybar/window.nix b/modules/waybar/window.nix new file mode 100644 index 0000000..b2739bb --- /dev/null +++ b/modules/waybar/window.nix @@ -0,0 +1,15 @@ +{ lib, config, ... }: +let + name = "hyprland/window"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + max-length = 36; + }; + }; +} diff --git a/modules/waybar/wireplumber.nix b/modules/waybar/wireplumber.nix new file mode 100644 index 0000000..bdf5f19 --- /dev/null +++ b/modules/waybar/wireplumber.nix @@ -0,0 +1,18 @@ +{ lib, config, ... }: +let + name = "wireplumber"; +in +{ + options.modules.waybar.modules = import ./addname.nix lib name; + options.modules.waybar.${name} = { + enable = lib.mkEnableOption "enable ${name} waybar module"; + }; + config = lib.mkIf config.modules.waybar.${name}.enable { + programs.waybar.settings.mainbar."${name}" = { + format = "{volume}% {icon}"; + format-muted = ""; + on-click = "helvum"; + format-icons = ["" "" ""]; + }; + }; +}