diff options
author | Franck Cuny <franck@fcuny.net> | 2023-05-05 19:41:58 -0700 |
---|---|---|
committer | Franck Cuny <franck@fcuny.net> | 2023-05-05 19:41:58 -0700 |
commit | 43da9edb4598eef509c481ae0b305384418c45de (patch) | |
tree | a0ad614c90102757143e026e4fe1806431a3dbf4 /home/profiles/waybar.nix | |
parent | profiles/default: users are immutable (diff) | |
download | world-43da9edb4598eef509c481ae0b305384418c45de.tar.gz |
home/profiles: move (almost) all modules to profiles
This is a major refactor, similar to what was done for the hosts, but in a single commit.
Diffstat (limited to 'home/profiles/waybar.nix')
-rw-r--r-- | home/profiles/waybar.nix | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/home/profiles/waybar.nix b/home/profiles/waybar.nix new file mode 100644 index 0000000..e6f6c3d --- /dev/null +++ b/home/profiles/waybar.nix @@ -0,0 +1,155 @@ +{ config, lib, pkgs, ... }: +let + # waybar-systemd = pkgs.writeShellApplication { + # name = "waybar-systemd.sh"; + # runtimeInputs = [ ]; + # text = '' + # failed_user="$(systemctl --plain --no-legend --user list-units --state=failed | awk '{ print $1 }')" + # failed_system="$(systemctl --plain --no-legend list-units --state=failed | awk '{ print $1 }')" + + # failed_systemd_count="$(echo -n "$failed_system" | grep -c '^')" + # failed_user_count="$(echo -n "$failed_user" | grep -c '^')" + + # text=$(( failed_systemd_count + failed_user_count )) + + # if [ "$text" -eq 0 ]; then + # printf '{"text": ""}\n' + # else + # tooltip="" + + # [ -n "$failed_system" ] && tooltip="Failed system services:\n\n${failed_system}\n\n${tooltip}" + # [ -n "$failed_user" ] && tooltip="Failed user services:\n\n${failed_user}\n\n${tooltip}" + + # tooltip="$(printf "%s" "$tooltip" | perl -pe 's/\n/\\n/g' | perl -pe 's/(?:\\n)+$//')" + + # printf '{"text": "%s", "tooltip": "%s" }\n' "$text" "$tooltip" + # fi + # ''; + # }; +in +{ + programs.waybar = { + enable = true; + systemd.enable = true; + + settings = [{ + layer = "bottom"; + height = 25; + 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" ]; + "sway/workspaces" = { + format = "{name}"; + disable-scroll = true; + }; + "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}%)"; + }; + # "custom/systemd" = { + # exec = "${waybarSystemd}/bin/waybar-systemd"; + # return-type = "json"; + # interval = 10; + # }; + pulseaudio = { + format = "vol:{volume}%"; + format-bluetooth = "bt:{volume}%"; + 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; + }; + }]; + }; + + programs.waybar.style = pkgs.writeText "style.css" '' + * { + border-radius: 0; + border: none; + margin: 0; + min-height: 0; + padding: 0; + font-family: Source Code Pro; + font-size: 15px; + } + window#waybar { + background-color: #282A36; + color: #eee; + } + #workspaces button { + padding: 0 3px; + background-color: transparent; + color: #eee; + } + #workspaces button.focused { + background-color: #285577; + border: 1px solid #4c7899; + } + #clock, + #battery, + #network, + #pulseaudio, + #tray, + #mode { + padding-left: 10px; + padding-right: 10px; + } + #mode { + /* No styles */ + } + #tray { + /* No styles */ + } + #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; + } + ''; +} |