summaryrefslogtreecommitdiff
path: root/home-manager/features/gui/desktops/niri/parts/waybar.nix
diff options
context:
space:
mode:
authortriethyl <triethylammonium@pm.me>2025-09-02 10:48:21 -0400
committertriethyl <triethylammonium@pm.me>2025-09-02 10:48:21 -0400
commit31c316d19cd974bb81a5d6de62142ff24db1c78e (patch)
treecb941422c76cb8953830a8d58c8e14dca1a10319 /home-manager/features/gui/desktops/niri/parts/waybar.nix
parent1c21018347aa277caba74e554cb8d1b1e7fc6bed (diff)
reorganized directory structure
Diffstat (limited to 'home-manager/features/gui/desktops/niri/parts/waybar.nix')
-rwxr-xr-xhome-manager/features/gui/desktops/niri/parts/waybar.nix136
1 files changed, 136 insertions, 0 deletions
diff --git a/home-manager/features/gui/desktops/niri/parts/waybar.nix b/home-manager/features/gui/desktops/niri/parts/waybar.nix
new file mode 100755
index 0000000..7535b0c
--- /dev/null
+++ b/home-manager/features/gui/desktops/niri/parts/waybar.nix
@@ -0,0 +1,136 @@
+{ config, pkgs, lib, ... }:
+let
+ cfg = config.features.gui.desktops.niri.parts.waybar;
+ aes = config.aesthetics;
+in {
+ options.features.gui.desktops.niri.parts.waybar.enable = lib.mkEnableOption "waybar";
+ config = lib.mkIf cfg.enable {
+ programs.waybar = {
+ enable = true;
+ settings = {
+ bar = {
+ layer = "top";
+ position = "bottom";
+ height = 32;
+ modules-left = [ "battery" "network" "backlight" "pulseaudio" ];
+ modules-center = [ "niri/workspaces" ];
+ modules-right = [ "clock#date" "clock#time" ];
+ "clock#date" = {
+ format = " {:%A, %B %d}";
+ };
+ "clock#time" = {
+ format = " {:%I:%M}";
+ };
+ pulseaudio = {
+ format = " {volume}%";
+ format-muted = " {volume}%";
+ };
+ network = {
+ format = "{essid}";
+ format-wifi = "{icon} {essid}";
+ format-ethernet = "󰈀 Ethernet";
+ format-disconnected = "󰤭 Disconnected";
+ format-icons = [ "󰤯" "󰤟" "󰤢" "󰤥" "󰤨" ];
+ };
+ battery = {
+ format = "{icon} {capacity}%";
+ format-charging = "󰂄 {capacity}%";
+ format-icons = [ "󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
+ };
+ backlight = {
+ format = " {percent}%";
+ };
+ "niri/workspaces" = {
+ format = "{icon}";
+ format-icons = {
+ default = "";
+ active = "";
+ /*
+ "1" = "1";
+ "2" = "2";
+ "3" = "3";
+ "4" = "4";
+ "5" = "5";
+ "6" = "6";
+ "7" = "7";
+ "8" = "8";
+ "9" = "9";
+ "10" = "10";
+ "11" = "11";
+ "12" = "12";
+ */
+ };
+ };
+ };
+ };
+ style = let
+ border-radius = "4";
+ padding = "12";
+ in /*css*/ ''
+ @define-color background-color #${aes.scheme.base00};
+ @define-color border-color #${aes.scheme.base0C};
+ @define-color text-color #${aes.scheme.base05};
+ * {
+ font-family: ${aes.font.name};
+ font-weight: 600;
+ font-size: ${aes.font.size.medium}px;
+ }
+ window#waybar {
+ background-color: transparent;
+ }
+ #clock.time, #clock.date, #backlight, #pulseaudio, #battery, #network {
+ background-color: @background-color;
+ color: @text-color;
+ border-radius: ${border-radius}px;
+ border-width: 0px;
+ border-color: @border-color;
+ padding: 0px ${padding}px;
+ }
+ #backlight, #pulseaudio, #battery, #network {
+ margin: 0px 0px ${padding} ${padding};
+ }
+ #workspaces {
+ background-color: @background-color;
+ color: @background-color;
+ border-radius: ${border-radius}px;
+ border-width: 0px;
+ border-color: @border-color;
+ padding: 0px 0px;
+ margin-bottom: ${padding}px;
+ }
+ #workspaces button {
+ font-weight: bold;
+ padding: 0px 4px;
+ margin: 4px 4px;
+ border-radius: ${border-radius}px;
+ color: @background-color;
+ background: @text-color;
+ opacity: 0.5;
+ transition: all 0.3s cubic-bezier(.25,.1,.25,1);
+ }
+ #workspaces button.active {
+ font-weight: bold;
+ padding: 0px 4px;
+ margin: 4px 4px;
+ border-radius: ${border-radius}px;
+ color: @background-color;
+ background: @text-color;
+ transition: all 0.3s cubic-bezier(.25,.1,.25,1);
+ opacity: 1.0;
+ min-width: 40px;
+ }
+ #workspaces button:hover {
+ font-weight: bold;
+ border-radius: ${border-radius}px;
+ color: @background-color;
+ background: @text-color;
+ opacity: 0.8;
+ transition: all 0.3s cubic-bezier(.25,.1,.25,1);
+ }
+ #clock.date, #clock.time {
+ margin: 0px ${padding} ${padding} 0px
+ }
+ '';
+ };
+ };
+}