home: Add basic Waybar configuration

This commit is contained in:
Mikael 2024-08-25 00:05:08 +02:00
parent a56753bac0
commit 5d5c9f2933
Signed by: mikael
SSH key fingerprint: SHA256:21QyD2Meiot7jOUVitIR5YkGB/XuXdCvLW1hE6dsri0

View file

@ -31,8 +31,8 @@ let
slurp = "${pkgs.slurp}/bin/slurp"; slurp = "${pkgs.slurp}/bin/slurp";
swaylock = "${config.programs.swaylock.package}/bin/swaylock"; swaylock = "${config.programs.swaylock.package}/bin/swaylock";
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg"; swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
swayrbar = "${pkgs.swayrbar.override { withPulseaudio = true; }}/bin/swayrbar";
tofi-drun = "${config.programs.tofi.package}/bin/tofi-drun"; tofi-drun = "${config.programs.tofi.package}/bin/tofi-drun";
waybar = "${config.programs.waybar.package}/bin/waybar";
wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy";
wpctl = "${osConfig.services.pipewire.wireplumber.package}/bin/wpctl"; wpctl = "${osConfig.services.pipewire.wireplumber.package}/bin/wpctl";
xargs = "${pkgs.findutils}/bin/xargs"; xargs = "${pkgs.findutils}/bin/xargs";
@ -367,6 +367,228 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
}; };
}; };
programs.waybar = {
enable = true;
package = pkgs.waybar.override {
cavaSupport = false;
hyprlandSupport = false;
jackSupport = false;
mpdSupport = false;
sndioSupport = false;
};
settings = {
main = {
layer = "top";
position = "bottom";
modules-left = [
"sway/workspaces"
"tray"
];
modules-center = [ "sway/window" ];
modules-right = [
"network#down"
"network#up"
"bluetooth"
"cpu"
"memory"
"memory#swap"
"temperature"
"disk"
"battery"
"idle_inhibitor"
"backlight"
"mpris"
"pulseaudio#sink"
"pulseaudio#source"
"clock"
];
ipc = true;
"sway/window" = {
format = "{title}";
on-click-right = with cmd; "${swaymsg} -t get_tree | jq -r '.. | select(.focused?) | .pid' | ${xargs} kill --";
};
"network#down" = {
format = "󰅀 {bandwidthDownBytes}";
};
"network#up" = {
format = "󰅃 {bandwidthUpBytes}";
};
bluetooth = {
format-connected-battery = "󰂯 {device_battery_percentage}%";
tooltip-format-connected-battery = "{device_enumerate}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_battery_percentage}%";
};
cpu = {
format = " {usage}%";
};
memory = {
format = " {percentage}%";
tooltip-format = "{used:0.1f}/{total:0.1f}GiB";
};
"memory#swap" = {
format = " {swapPercentage}%";
tooltip-format = "{swapUsed:0.1f}/{swapTotal:0.1f}GiB";
};
temperature = let
fmt = "{temperatureC}°C";
in {
format = "󰔏 ${fmt}";
format-critical = "󰸁 ${fmt}";
tooltip-format = fmt;
};
disk = {
format = " {percentage_used}%";
path = "/home";
tooltip-format = "{used}/{total}";
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "󱎴";
deactivated = "󰷛";
};
timeout = 15.0;
};
battery = let
fmt = "{capacity}%";
dis = {
"5" = "󱃍";
"10" = "󰁺";
"20" = "󰁻";
"30" = "󰁼";
"40" = "󰁽";
"50" = "󰁿";
"60" = "󰁿";
"70" = "󰂀";
"80" = "󰂁";
"90" = "󰂂";
"100" = "󰁹";
};
chr = {
"5" = "󰢟";
"10" = "󰢜";
"20" = "󰂆";
"30" = "󰂇";
"40" = "󰂈";
"50" = "󰢝";
"60" = "󰂉";
"70" = "󰢞";
"80" = "󰂊";
"90" = "󰂋";
"100" = "󰂅";
};
in {
states = {
"5" = 5;
"10" = 10;
"20" = 20;
"30" = 30;
"40" = 40;
"50" = 50;
"60" = 60;
"70" = 70;
"80" = 80;
"90" = 90;
"100" = 100;
};
format-full = "󰚥 ${fmt}";
format-time = "{H}:{M}";
weighted-average = true;
}
// lib.mapAttrs' (state: icon: {
name = "format-discharging-${state}";
value = "${icon} ${fmt}";
}) dis
// lib.mapAttrs' (state: icon: {
name = "format-charging-${state}";
value = "${icon} ${fmt}";
}) chr;
backlight = {
format = " {percent}%";
on-scroll-up = with cmd; "${brightnessctl} s +1%";
on-scroll-down = with cmd; "${brightnessctl} s 1%-";
};
mpris = {
format = "{status}";
status-icons = {
playing = "";
paused = "";
stopped = "";
};
};
"pulseaudio#sink" = let
fmt = "{volume}%";
in {
format = "{icon} ${fmt}";
format-bluetooth = "󰂰 ${fmt}";
format-muted = " ${fmt}";
format-icons = {
headphone = "";
default = [ "" "" ];
};
format-source = "󰍬 ${fmt}";
format-source-muted = "󰍭 ${fmt}";
on-click = cmd.pwvucontrol;
on-click-right = with cmd; "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
on-scroll-up = with cmd; "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 1%+";
on-scroll-down = with cmd; "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 1%-";
};
"pulseaudio#source" = let
fmt = "{volume}%";
in {
format = "{format_source}";
format-source = "󰍬 ${fmt}";
format-source-muted = "󰍭 ${fmt}";
on-click = cmd.pwvucontrol;
on-click-right = with cmd; "${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
on-scroll-up = with cmd; "${wpctl} set-volume @DEFAULT_AUDIO_SOURCE@ 1%+";
on-scroll-down = with cmd; "${wpctl} set-volume @DEFAULT_AUDIO_SOURCE@ 1%-";
};
clock = {
format = " {:%H:%M %Z}";
format-alt = "󰃭 {:%Y-%m-%d}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "month";
weeks-pos = "left";
on-scroll = 1;
format = {
weeks = "{:%W}";
};
};
};
};
};
};
programs.yt-dlp.enable = true; programs.yt-dlp.enable = true;
services.gammastep = lib.optionalAttrs (osConfig ? location) ( services.gammastep = lib.optionalAttrs (osConfig ? location) (
@ -547,12 +769,11 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
bars = [ bars = [
{ {
command = waybar;
fonts = lib.mkForce { fonts = lib.mkForce {
names = [ "monospace" ]; names = [ "monospace" ];
size = 11.0; size = 11.0;
}; };
statusCommand = swayrbar;
} }
]; ];
@ -582,8 +803,8 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
XF86MonBrightnessDown = "exec ${brightnessctl} -e set 5%-"; XF86MonBrightnessDown = "exec ${brightnessctl} -e set 5%-";
XF86AudioRaiseVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ +2dB"; XF86AudioRaiseVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ +2dB";
XF86AudioLowerVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ -2dB"; XF86AudioLowerVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ -2dB";
XF86AudioMute = "exec set-mute @DEFAULT_AUDIO_SINK@ toggle"; XF86AudioMute = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
XF86AudioMicMute = "exec set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; XF86AudioMicMute = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
XF86AudioNext = "exec ${playerctl} next"; XF86AudioNext = "exec ${playerctl} next";
XF86AudioPrev = "exec ${playerctl} previous"; XF86AudioPrev = "exec ${playerctl} previous";
XF86AudioPlay = "exec ${playerctl} play"; XF86AudioPlay = "exec ${playerctl} play";