aboutsummaryrefslogblamecommitdiff
path: root/home/wm/waybar/default.nix
blob: 6bc385fce9c7217463c66eee17762a18d8490760 (plain) (tree)









































































































































                                                                                  
{ config, lib, pkgs, ... }:
let isEnabled = config.my.home.wm.windowManager == "sway";
in {
  config = lib.mkIf isEnabled {
    programs.waybar = {
      enable = true;
      systemd = { enable = true; };

      settings = [{
        layer = "bottom";
        position = "top";
        margin-top = 0;
        margin-left = 0;
        margin-right = 0;
        margin-bottom = 0;
        modules-left = [ "sway/workspaces" "sway/mode" ];
        modules-right = [ "pulseaudio" "network" "battery" "clock" "tray" ];
        modules = {
          "sway/workspaces" = { format = "{name}"; };
          "sway/mode" = { format = "{}"; };
          tray = { spacing = 10; };
          clock = { format = "{: %a %b %d %R}"; };
          battery = {
            states = {
              warning = 30;
              critical = 15;
            };
            format = "ac:{capacity}%";
            tooltip = true;
            tooltip-format = "{timeTo} ({capacity}%)";
          };
          pulseaudio = {
            format = "vol:{volume}%";
            format-bluetooth = "bt:{volume}% {icon} ({format_source})";
            format-bluetooth-muted = "bt:{volume}%";
            format-muted = "vol:{volume}%";
            on-click = "pavucontrol";
          };
          "network" = {
            format-wifi = "{essid}:{signalStrength}%";
            format-ethernet = "{ipaddr}/{cidr}";
            format-linked = "{ifname} (No IP)";
            format-disconnected = "network unavailable";
            format-alt = "{ifname}: {ipaddr}/{cidr}";
            tooltip = false;
          };
        };
      }];

      style = ''
        * {
          border-radius: 0;
          border: none;
          margin: 0;
          min-height: 0;
          padding: 0;
        }
        #waybar {
          font-family: Source Code Pro;
          font-size: 15px;
        }
        window#waybar {
          background-color: rgba(43, 48, 59, 0.5);
          color: #ffffff;
          transition-property: background-color;
          transition-duration: .5s;
        }
        #workspaces button {
          padding: 0 3px;
          background-color: transparent;
          color: #888888;
          box-shadow: inset 0 -3px transparent;
          font-weight: bold;
        }
        #workspaces button.focused {
          background-color: #285577;
          border: 1px solid #4c7899;
          color: #ffffff;
        }
        #workspaces button.urgent {
          background-color: #900000;
          color: #ffffff;
          border: 1px solid #2f343a;
        }
        #tray {
          /* No styles */
        }
        #clock,
        #battery,
        #network,
        #pulseaudio,
        #tray,
        #mode {
          padding-left: 10px;
          padding-right: 10px;
        }
        #mode {
          background: #64727D;
          border-top: 2px solid white;
          /* To compensate for the top border and still have vertical centering */
          padding-bottom: 2px;
        }
        #clock {
          /* No styles */
        }
        #battery {
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          animation-direction: alternate;
        }
        #battery.discharging {
          color: #90a1ad;
        }
        #battery.charging {
          color: #fffff8;
        }
        #battery.warning {
          border-bottom: 2px solid #ff9e21;
        }
        #battery.critical {
          border-bottom: 2px solid #ff3121;
        }
        #network {
          /* No styles */
        }
        #network.disconnected {
          color: orange;
        }
        #pulseaudio {
          /* No styles */
        }
        #pulseaudio.muted {
          color: #90a1ad;
        }
      '';
    };
  };
}