545 lines
22 KiB
Nix
545 lines
22 KiB
Nix
{
|
|
config,
|
|
config',
|
|
inputs,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: with lib; let
|
|
cfg = config.myOptions.programs.waybar;
|
|
in {
|
|
options.myOptions.programs.waybar.enable = mkEnableOption "enable waybar";
|
|
|
|
config = mkIf cfg.enable {
|
|
home-manager.users.${config'.username} = {
|
|
programs.waybar = {
|
|
enable = true;
|
|
package = inputs.waybar.packages.${pkgs.system}.waybar;
|
|
systemd.enable = true;
|
|
settings.mainBar = {
|
|
gtk-layer-shell = true;
|
|
layer = "top";
|
|
modules-left = [ "custom/launcher" "custom/xwayland" "tray" "hyprland/workspaces" ];
|
|
modules-center = [ "hyprland/window" ];
|
|
modules-right = [ "custom/dnd" "backlight" /*"cava"*/ "mpd" "pulseaudio" "clock" "battery" "custom/power" ];
|
|
|
|
pulseaudio = {
|
|
tooltip = false;
|
|
scroll-step = "1";
|
|
format = " {icon} {volume}%";
|
|
format-muted = " {volume}%";
|
|
format-icons = {
|
|
default = ["" "" ""];
|
|
};
|
|
on-click = "${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
|
};
|
|
"hyprland/workspaces" = {
|
|
sort-by-name = true;
|
|
sort-by-coordinates = false;
|
|
on-click = "activate";
|
|
#on-scroll = "~/Scripts/cycle_workspace.sh 1";
|
|
active-only = false;
|
|
format = "{icon}";
|
|
format-icons = {
|
|
"1" = "1";
|
|
"2" = "2";
|
|
"3" = "3";
|
|
"4" = "4";
|
|
"5" = "5";
|
|
"6" = "6";
|
|
"7" = "7";
|
|
"8" = "8";
|
|
"9" = "9";
|
|
"10" = "10";
|
|
"11" = "1";
|
|
"12" = "2";
|
|
"13" = "3";
|
|
"14" = "4";
|
|
"15" = "5";
|
|
"16" = "6";
|
|
"17" = "7";
|
|
"18" = "8";
|
|
"19" = "9";
|
|
"20" = "10";
|
|
};
|
|
persistent_workspaces = {
|
|
"1" = [ "eDP-1" ];
|
|
"2" = [ "eDP-1" ];
|
|
"3" = [ "eDP-1" ];
|
|
"4" = [ "eDP-1" ];
|
|
"5" = [ "eDP-1" ];
|
|
"6" = [ "eDP-1" ];
|
|
"7" = [ "eDP-1" ];
|
|
"8" = [ "eDP-1" ];
|
|
"9" = [ "eDP-1" ];
|
|
"10" = [ "eDP-1" ];
|
|
"11" = [ "HDMI-A-1" ];
|
|
"12" = [ "HDMI-A-1" ];
|
|
"13" = [ "HDMI-A-1" ];
|
|
"14" = [ "HDMI-A-1" ];
|
|
"15" = [ "HDMI-A-1" ];
|
|
"16" = [ "HDMI-A-1" ];
|
|
"17" = [ "HDMI-A-1" ];
|
|
"18" = [ "HDMI-A-1" ];
|
|
"19" = [ "HDMI-A-1" ];
|
|
"20" = [ "HDMI-A-1" ];
|
|
};
|
|
};
|
|
network = {
|
|
tooltip = false;
|
|
format = "{ipaddr} {icon}";
|
|
format-alt = "{icon}";
|
|
format-icons = {
|
|
wifi = [ "" ];
|
|
ethernet = [ "" ];
|
|
disconnected = [ "" ];
|
|
};
|
|
on-click-right = "foot -e nmtui";
|
|
};
|
|
backlight = {
|
|
interval = 1;
|
|
align = 0;
|
|
rotate = 0;
|
|
format = "{icon} {percent}%";
|
|
format-icons = [ "" "" "" "" "" "" "" ];
|
|
#on-scroll-up = "~/Scripts/bright.sh s +1%";
|
|
#on-scroll-down = "~/Scripts/bright.sh s 1%-";
|
|
on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl set +1%";
|
|
on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl set 1%-";
|
|
smooth-scrolling-threshold = 1;
|
|
};
|
|
battery = {
|
|
interval = 1;
|
|
states = {
|
|
good = 75;
|
|
warning = 30;
|
|
critical = 20;
|
|
};
|
|
format = "{icon}{capacity}%";
|
|
format-charging = "{icon}{capacity}% {power}";
|
|
format-discharging = "{icon}{capacity}% {power}";
|
|
format-icons = ["" "" "" "" "" "" "" "" "" "" ""];
|
|
format-charging-icons = ["" "" "" "" "" "" "" "" "" "" ""];
|
|
};
|
|
tray = {
|
|
icon-size = 18;
|
|
spacing = 10;
|
|
};
|
|
clock = {
|
|
interval = 1;
|
|
format = "{: %H:%M:%S %d/%m/%Y}";
|
|
format-alt = "{: %H:%M:%S}";
|
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
|
calendar = {
|
|
mode = "year";
|
|
mode-mon-col = 3;
|
|
weeks-pos = "right";
|
|
on-scroll = 1;
|
|
on-click-right = "mode";
|
|
format = {
|
|
months = "<span color='#EBDBB2'><b>{}</b></span>";
|
|
days = "<span color='#B16286'><b>{}</b></span>";
|
|
weeks = "<span color='#458588'><b>T{:%W}</b></span>";
|
|
weekdays = "<span color='#D79921'><b>{}</b></span>";
|
|
today = "<span color='#CC241D'><b><u>{}</u></b></span>";
|
|
};
|
|
actions = {
|
|
on-click-right = "mode";
|
|
on-click-forward = "tz_up";
|
|
on-click-backward = "tz_down";
|
|
on-scroll-up = "shift_up";
|
|
on-scroll-down = "shift_down";
|
|
};
|
|
};
|
|
};
|
|
cpu = {
|
|
interval = 1;
|
|
format = " {}%";
|
|
max-length = 10;
|
|
};
|
|
memory = {
|
|
interval = 1;
|
|
format = " {}%";
|
|
max-length = 10;
|
|
};
|
|
"custom/launcher" = {
|
|
format = " ";
|
|
on-click = "~/.config/rofi/launchers/type-2/launcher.sh";
|
|
on-click-right = "pkill rofi";
|
|
};
|
|
"custom/power" = {
|
|
format = "";
|
|
on-click = "~/.config/rofi/powermenu/type-2/powermenu.sh";
|
|
};
|
|
"hyprland/window" = {
|
|
format = "{}";
|
|
separate-outputs = true;
|
|
};
|
|
gamemode = {
|
|
format = "{glyph}";
|
|
format-alt = "{glyph} {count}";
|
|
glyph = "";
|
|
hide-not-running = true;
|
|
use-icon = true;
|
|
icon-name = "input-gaming-symbolic";
|
|
icon-spacing = 4;
|
|
icon-size = 20;
|
|
tooltip = true;
|
|
tooltip-format = "Games running: {count}";
|
|
};
|
|
"custom/dnd" = {
|
|
exec = "~/Scripts/waybar-dunst.sh";
|
|
on-click = "~/Scripts/dnd.sh";
|
|
restart-interval = 1;
|
|
tooltip = false;
|
|
};
|
|
cava = {
|
|
framerate = 165;
|
|
autosens = 1;
|
|
sensitivity = 100;
|
|
bars = 14;
|
|
lower_cutoff_freq = 50;
|
|
higher_cutoff_freq = 10000;
|
|
method = "pipewire";
|
|
source = "auto";
|
|
stereo = true;
|
|
reverse = false;
|
|
bar_delimiter = 0;
|
|
monstercat = false;
|
|
waves = false;
|
|
noise_reduction = 0.77;
|
|
input_delay = 2;
|
|
format-icons = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
|
|
actions = {
|
|
on-click-right = "mode";
|
|
};
|
|
};
|
|
"custom/power_profile" = {
|
|
exec = "asusctl profile -p | sed s:'Active profile is'::";
|
|
interval = 30;
|
|
format = "{}";
|
|
format-alt-click = "click-right";
|
|
format-alt = "";
|
|
on-click = "asusctl profile -n; pkill -SIGRTMIN+8 waybar";
|
|
signal = 8;
|
|
};
|
|
"custom/xwayland" = {
|
|
exec = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/hyprctl clients | ${pkgs.ripgrep}/bin/rg -e 'xwayland: [1]' | ${pkgs.coreutils-full}/bin/wc -l";
|
|
interval = 1;
|
|
format = "X {}";
|
|
};
|
|
mpd = {
|
|
format = " {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S})";
|
|
format-disconnected = " Disconnected";
|
|
format-stopped = " Stopped";
|
|
interval = 1;
|
|
tooltip-format = "MPD (connected)";
|
|
tooltip-format-disconnected = "MPD (disconnected)";
|
|
on-click = "mpc toggle";
|
|
};
|
|
};
|
|
style = ''
|
|
@define-color base #1e1e2e;
|
|
@define-color mantle #181825;
|
|
@define-color crust #11111b;
|
|
|
|
@define-color text #cdd6f4;
|
|
@define-color subtext0 #a6adc8;
|
|
@define-color subtext1 #bac2de;
|
|
|
|
@define-color surface0 #313244;
|
|
@define-color surface1 #45475a;
|
|
@define-color surface2 #585b70;
|
|
|
|
@define-color overlay0 #6c7086;
|
|
@define-color overlay1 #7f849c;
|
|
@define-color overlay2 #9399b2;
|
|
|
|
@define-color blue #89b4fa;
|
|
@define-color lavender #b4befe;
|
|
@define-color sapphire #74c7ec;
|
|
@define-color sky #89dceb;
|
|
@define-color teal #94e2d5;
|
|
@define-color green #a6e3a1;
|
|
@define-color yellow #f9e2af;
|
|
@define-color peach #fab387;
|
|
@define-color maroon #eba0ac;
|
|
@define-color red #f38ba8;
|
|
@define-color mauve #cba6f7;
|
|
@define-color pink #f5c2e7;
|
|
@define-color flamingo #f2cdcd;
|
|
@define-color rosewater #f5e0dc;
|
|
|
|
* {
|
|
border-radius: 10px;
|
|
font-family: Material Design Icons;
|
|
font-size: 16px;
|
|
}
|
|
|
|
window#waybar {
|
|
background-color: alpha(@base, 0.5);
|
|
border-radius: 0px;
|
|
}
|
|
|
|
window#waybar.hidden {
|
|
opacity: 0.2;
|
|
}
|
|
|
|
#window {
|
|
margin-top: 4px;
|
|
margin-bottom: 4px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
background: @mantle;
|
|
color: @teal;
|
|
font-family: JetBrains Mono;
|
|
}
|
|
|
|
#workspaces {
|
|
padding-left: 5px;
|
|
}
|
|
|
|
#workspaces button {
|
|
border-radius: 15px;
|
|
padding-top: 0px;
|
|
padding-right: 0px;
|
|
padding-bottom: 0px;
|
|
padding-left: 0px;
|
|
margin-top: 6px;
|
|
margin-right: 3px;
|
|
margin-bottom: 6px;
|
|
margin-left: 3px;
|
|
background-color: @mantle;
|
|
color: @text;
|
|
min-width: 24px;
|
|
}
|
|
|
|
#workspaces button.active {
|
|
padding-top: 0px;
|
|
padding-bottom: 0px;
|
|
padding-right: 0px;
|
|
padding-left: 0px;
|
|
margin-top: 6px;
|
|
margin-right: 3px;
|
|
margin-bottom: 6px;
|
|
margin-left: 3px;
|
|
background-color: @blue;
|
|
color: @mantle;
|
|
min-width: 24px;
|
|
}
|
|
|
|
#workspaces button:hover {
|
|
background: alpha(@mantle, 0.7);
|
|
transition-property: background, min-width;
|
|
transition-duration: 0.5s;
|
|
transition-timing-function: ease;
|
|
}
|
|
|
|
#workspaces button.focused {
|
|
background-color: @yellow;
|
|
}
|
|
|
|
#workspaces button.urgent {
|
|
background-color: @red;
|
|
}
|
|
|
|
.modules-left > widget:first-child > #workspaces {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.modules-right > widget:first-child > #workspaces {
|
|
margin-right: 0;
|
|
}
|
|
|
|
#pulseaudio {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 0px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @peach;
|
|
/*border-top-left-radius: 0;
|
|
border-bottom-left-radius: 0;*/
|
|
}
|
|
|
|
#cava {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
margin-right: 0px;
|
|
padding-left: 10px;
|
|
padding-right: 0px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @peach;
|
|
border-top-right-radius: 0;
|
|
border-bottom-right-radius: 0;
|
|
}
|
|
|
|
#battery {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @teal;
|
|
}
|
|
|
|
@keyframes blink {
|
|
to {
|
|
background-color: @red;
|
|
}
|
|
}
|
|
|
|
#battery.charging, #battery.plugged {
|
|
background-color: @mantle;
|
|
}
|
|
|
|
#battery.critical:not(.charging) {
|
|
background-color: @mantle;
|
|
animation-name: blink;
|
|
animation-duration: 0.5s;
|
|
animation-timing-function: linear;
|
|
animation-iteration-count: infinite;
|
|
animation-direction: alternate;
|
|
}
|
|
|
|
#backlight {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @yellow;
|
|
}
|
|
#clock {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition-property: min-width;
|
|
transition-duration: 0.5s;
|
|
background: @mantle;
|
|
color: @pink;
|
|
}
|
|
|
|
#custom-power_profile {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @rosewater;
|
|
}
|
|
|
|
#tray {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
}
|
|
|
|
#custom-launcher {
|
|
font-size: 16px;
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 5px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @blue;
|
|
}
|
|
|
|
#custom-power {
|
|
font-size: 20px;
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
margin-right: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @red;
|
|
}
|
|
|
|
#custom-wallpaper {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
}
|
|
|
|
#custom-updates {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
}
|
|
|
|
#custom-media {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
}
|
|
|
|
#custom-dnd {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @flamingo;
|
|
}
|
|
|
|
#custom-xwayland {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @green;
|
|
}
|
|
|
|
#mpd {
|
|
margin-top: 3px;
|
|
margin-bottom: 3px;
|
|
margin-left: 8px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
transition: none;
|
|
background: @mantle;
|
|
color: @green;
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|