688 lines
17 KiB
Nix
688 lines
17 KiB
Nix
{...}: {
|
|
programs.waybar = {
|
|
enable = true;
|
|
settings = {
|
|
mainBar = {
|
|
layer = "top";
|
|
position = "top";
|
|
# height = 36; # Auto height by default
|
|
modules-left = [
|
|
"clock#time"
|
|
"custom/arrow1"
|
|
"clock#date"
|
|
"custom/arrow2"
|
|
"hyprland/workspaces"
|
|
"custom/arrow3"
|
|
];
|
|
modules-center = [
|
|
"custom/arrow4"
|
|
"hyprland/window"
|
|
"custom/arrow5"
|
|
];
|
|
modules-right = [
|
|
"custom/arrow6"
|
|
"battery"
|
|
"custom/arrow7"
|
|
"network"
|
|
"bluetooth"
|
|
"custom/arrow8"
|
|
"pulseaudio"
|
|
"tray"
|
|
];
|
|
|
|
# Module configurations
|
|
"hyprland/window" = {
|
|
format = "{}";
|
|
};
|
|
|
|
"keyboard-state" = {
|
|
numlock = true;
|
|
capslock = true;
|
|
format = {
|
|
numlock = "N {icon}";
|
|
capslock = "C {icon}";
|
|
};
|
|
format-icons = {
|
|
locked = "";
|
|
unlocked = "";
|
|
};
|
|
};
|
|
|
|
battery = {
|
|
states = {
|
|
good = 95;
|
|
warning = 30;
|
|
critical = 20;
|
|
};
|
|
format = "{icon} {capacity}%";
|
|
format-charging = " {capacity}%";
|
|
format-plugged = " {capacity}%";
|
|
format-alt = "{time} {icon}";
|
|
format-icons = [
|
|
""
|
|
""
|
|
""
|
|
""
|
|
""
|
|
];
|
|
};
|
|
|
|
bluetooth = {
|
|
format = " {status}";
|
|
format-disabled = "";
|
|
format-connected = " {num_connections}";
|
|
tooltip-format = "{controller_alias}\t{controller_address}";
|
|
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{device_enumerate}";
|
|
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
|
|
};
|
|
|
|
idle_inhibitor = {
|
|
format = "{icon}";
|
|
format-icons = {
|
|
activated = "";
|
|
deactivated = "";
|
|
};
|
|
tooltip = true;
|
|
};
|
|
|
|
tray = {
|
|
spacing = 4;
|
|
};
|
|
|
|
"clock#time" = {
|
|
interval = 10;
|
|
format = " {:%H:%M}";
|
|
tooltip = false;
|
|
};
|
|
|
|
"clock#date" = {
|
|
interval = 20;
|
|
format = " {:%a %e/%m}";
|
|
on-click = "gnome-calendar";
|
|
};
|
|
|
|
temperature = {
|
|
interval = 1;
|
|
hwmon-path = "/sys/class/hwmon/hwmon3/temp1_input";
|
|
critical-threshold = 75;
|
|
format-critical = " {temperatureC}°C";
|
|
format = "{icon} {temperatureC}°C";
|
|
format-icons = [
|
|
""
|
|
""
|
|
""
|
|
];
|
|
max-length = 8;
|
|
min-length = 7;
|
|
tooltip = false;
|
|
};
|
|
|
|
cpu = {
|
|
interval = 5;
|
|
format = " {max_frequency:1}GHz {usage:2}%";
|
|
on-click = "kitty -e htop --sort-key PERCENT_CPU";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/gpu" = {
|
|
exec = "$HOME/.config/waybar/custom_modules/custom-gpu-lite.sh";
|
|
return-type = "json";
|
|
format = "{}";
|
|
interval = 5;
|
|
tooltip = "{tooltip}";
|
|
on-click = "powerupp";
|
|
};
|
|
|
|
network = {
|
|
format-wifi = "<span color=\"#ebdbb2\"></span> {essid} ({signalStrength}%)";
|
|
format-ethernet = "{ifname}: {ipaddr}/{cidr} ";
|
|
format-linked = "{ifname} (No IP) ";
|
|
format-disconnected = "";
|
|
format-alt = "{ifname}: {ipaddr}/{cidr}";
|
|
family = "ipv4";
|
|
tooltip-format-wifi = " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\n {bandwidthUpBits} {bandwidthDownBits}";
|
|
tooltip-format-ethernet = " {ifname}\nIP: {ipaddr}\n {bandwidthUpBits} {bandwidthDownBits}";
|
|
max-length = 10;
|
|
};
|
|
|
|
"custom/kdeconnect" = {
|
|
exec = "$HOME/.config/waybar/custom_modules/custom-kdeconnect.sh battery";
|
|
format = "{}";
|
|
interval = 60;
|
|
on-click = "$HOME/.config/waybar/custom_modules/custom-kdeconnect.sh ring";
|
|
};
|
|
|
|
pulseaudio = {
|
|
scroll-step = 3;
|
|
format = "{icon} {volume:2}% {format_source}";
|
|
format-bluetooth = "{volume}% {icon} {format_source}";
|
|
format-bluetooth-muted = " {icon} {format_source}";
|
|
format-muted = " {format_source}";
|
|
format-source = "";
|
|
format-source-muted = "<span color=\"#fb4833\"></span>";
|
|
format-icons = {
|
|
headphone = "";
|
|
hands-free = "";
|
|
headset = "";
|
|
phone = "";
|
|
portable = "";
|
|
car = "";
|
|
default = [
|
|
""
|
|
""
|
|
""
|
|
];
|
|
};
|
|
on-click = "pavucontrol";
|
|
on-click-right = "pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
|
};
|
|
|
|
"custom/pacman" = {
|
|
format = "<u>↓</u> {}";
|
|
interval = 3600;
|
|
exec = "yay -Qu | wc -l";
|
|
exec-if = "exit 0";
|
|
on-click = "alacritty -e 'yay'; pkill -SIGRTMIN+8 waybar";
|
|
signal = 8;
|
|
max-length = 5;
|
|
min-length = 3;
|
|
};
|
|
|
|
"custom/weather" = {
|
|
exec = "curl 'https://wttr.in/?format=1'";
|
|
interval = 3600;
|
|
};
|
|
|
|
"custom/cpugovernor" = {
|
|
format = "{icon}";
|
|
interval = "once";
|
|
return-type = "json";
|
|
exec = "$HOME/.config/waybar/custom_modules/cpugovernor.sh";
|
|
min-length = 2;
|
|
max-length = 3;
|
|
signal = 8;
|
|
format-icons = {
|
|
perf = "";
|
|
ondemand = "";
|
|
};
|
|
on-click = "$HOME/.config/waybar/custom_modules/cpugovernor.sh switch";
|
|
};
|
|
|
|
"custom/playerctl" = {
|
|
exec = "$HOME/.config/waybar/custom_modules/media-player-status.py";
|
|
return-type = "json";
|
|
on-click = "playerctl play-pause";
|
|
};
|
|
|
|
"custom/media" = {
|
|
format = "{icon} {}";
|
|
return-type = "json";
|
|
max-length = 40;
|
|
format-icons = {
|
|
spotify = "";
|
|
default = "🎜";
|
|
};
|
|
escape = false;
|
|
exec = "$HOME/.config/waybar/custom_modules/mediaplayer.py 2> /dev/null";
|
|
};
|
|
|
|
"custom/scratchpad-indicator" = {
|
|
interval = 3;
|
|
return-type = "json";
|
|
exec = "swaymsg -t get_tree | jq --unbuffered --compact-output '( select(.name == \"root\") | .nodes[] | select(.name == \"__i3\") | .nodes[] | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") }'";
|
|
format = "{} ";
|
|
on-click = "exec swaymsg 'scratchpad show'";
|
|
on-click-right = "exec swaymsg 'move scratchpad'";
|
|
};
|
|
|
|
"custom/arrow1" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow2" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow3" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow4" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow5" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow6" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow7" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow8" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow9" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
|
|
"custom/arrow10" = {
|
|
format = "";
|
|
tooltip = false;
|
|
};
|
|
};
|
|
};
|
|
|
|
style = ''
|
|
@keyframes blink-warning {
|
|
70% {
|
|
color: @light;
|
|
}
|
|
|
|
to {
|
|
color: @light;
|
|
background-color: @warning;
|
|
}
|
|
}
|
|
|
|
@keyframes blink-critical {
|
|
70% {
|
|
color: @light;
|
|
}
|
|
|
|
to {
|
|
color: @light;
|
|
background-color: @critical;
|
|
}
|
|
}
|
|
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
* Styles
|
|
* -------------------------------------------------------------------------- */
|
|
|
|
/* COLORS */
|
|
|
|
/* Gruvbox Dark */
|
|
|
|
/*@define-color bg #353C4A;*/
|
|
@define-color light #D8DEE9;
|
|
/*@define-color dark @nord_dark_font;*/
|
|
@define-color warning #ebcb8b;
|
|
/*@define-color critical #BF616A;*/
|
|
/*@define-color mode @bg;*/
|
|
/*@define-color workspaces @bg;*/
|
|
/*@define-color workspaces @nord_dark_font;*/
|
|
/*@define-color workspacesfocused #655b53;*/
|
|
/*@define-color tray @bg;*/
|
|
/*@define-color workspacesfocused #4C566A;
|
|
@define-color tray @workspacesfocused;
|
|
@define-color sound #EBCB8B;
|
|
@define-color network #5D7096;
|
|
@define-color memory #546484;
|
|
@define-color cpu #596A8D;
|
|
@define-color temp #4D5C78;
|
|
@define-color layout #5e81ac;
|
|
@define-color battery #88c0d0;
|
|
@define-color date #434C5E;
|
|
@define-color time #434C5E;
|
|
@define-color backlight #434C5E;*/
|
|
@define-color nord_bg #282828;
|
|
@define-color nord_bg_blue @bg;
|
|
@define-color nord_light #D8DEE9;
|
|
|
|
@define-color nord_dark_font #272727;
|
|
|
|
|
|
@define-color bg #282828;
|
|
@define-color critical #BF616A;
|
|
@define-color tray @bg;
|
|
@define-color mode @bg;
|
|
|
|
@define-color bluetint #448488;
|
|
@define-color bluelight #83a597;
|
|
@define-color magenta-dark #b16185;
|
|
|
|
|
|
@define-color font_gruv_normal #ebdbb2;
|
|
@define-color font_gruv_faded #a89985;
|
|
@define-color font_gruv_darker #D8DEE9;
|
|
@define-color font_dark_alternative #655b53;
|
|
|
|
/* Reset all styles */
|
|
* {
|
|
border: none;
|
|
border-radius: 0px;
|
|
min-height: 0;
|
|
/*margin: 0.15em 0.25em 0.15em 0.25em;*/
|
|
}
|
|
|
|
/* The whole bar */
|
|
#waybar {
|
|
background: @bg;
|
|
color: @light;
|
|
font-family: JetBrainsMono Nerd Font Mono;
|
|
font-size: 9pt;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Each module */
|
|
#battery,
|
|
#clock,
|
|
#cpu,
|
|
#custom-layout,
|
|
#memory,
|
|
#mode,
|
|
#network,
|
|
#pulseaudio,
|
|
#temperature,
|
|
#custom-alsa,
|
|
#custom-pacman,
|
|
#custom-weather,
|
|
#custom-gpu,
|
|
#custom-playerctl,
|
|
#tray,
|
|
#backlight,
|
|
#language,
|
|
#custom-cpugovernor,
|
|
#battery,
|
|
#custom-scratchpad-indicator,
|
|
#custom-pacman,
|
|
#idle_inhibitor,
|
|
#bluetooth {
|
|
/* padding-left: 0.3em;
|
|
padding-right: 0.3em;*/
|
|
padding: 0.6em 0.8em;
|
|
}
|
|
|
|
/* Each module that should blink */
|
|
#mode,
|
|
#memory,
|
|
#temperature,
|
|
#battery {
|
|
animation-timing-function: linear;
|
|
animation-iteration-count: infinite;
|
|
animation-direction: alternate;
|
|
}
|
|
|
|
/* Each critical module */
|
|
#memory.critical,
|
|
#cpu.critical,
|
|
#temperature.critical,
|
|
#battery.critical {
|
|
color: @critical;
|
|
}
|
|
|
|
/* Each critical that should blink */
|
|
#mode,
|
|
#memory.critical,
|
|
#temperature.critical,
|
|
#battery.critical.discharging {
|
|
animation-name: blink-critical;
|
|
animation-duration: 2s;
|
|
}
|
|
|
|
/* Each warning */
|
|
#network.disconnected,
|
|
#memory.warning,
|
|
#cpu.warning,
|
|
#temperature.warning,
|
|
#battery.warning {
|
|
color: @warning;
|
|
}
|
|
|
|
/* Each warning that should blink */
|
|
#battery.warning.discharging {
|
|
animation-name: blink-warning;
|
|
animation-duration: 3s;
|
|
}
|
|
|
|
/* Adding arrows to boxes */
|
|
/*#custom-arrow1 {
|
|
font-size: 16px;
|
|
color: @sound;
|
|
background: transparent;
|
|
}
|
|
|
|
#custom-arrow2 {
|
|
font-size: 16px;
|
|
color: @network;
|
|
background: @sound;
|
|
}
|
|
|
|
#custom-arrow3 {
|
|
font-size: 16px;
|
|
color: @memory;
|
|
background: @network;
|
|
}
|
|
|
|
#custom-arrow4 {
|
|
font-size: 16px;
|
|
color: @cpu;
|
|
background: @memory;
|
|
}
|
|
|
|
#custom-arrow5 {
|
|
font-size: 16px;
|
|
color: @temp;
|
|
background: @cpu;
|
|
}
|
|
|
|
#custom-arrow6 {
|
|
font-size: 16px;
|
|
color: @layout;
|
|
background: @temp;
|
|
}
|
|
|
|
#custom-arrow7 {
|
|
font-size: 16px;
|
|
color: @battery;
|
|
background: @layout;
|
|
}
|
|
|
|
#custom-arrow8 {
|
|
font-size: 16px;
|
|
color: @date;
|
|
background: @battery;
|
|
}
|
|
|
|
#custom-arrow9 {
|
|
font-size: 16px;
|
|
color: @time;
|
|
background: @date;
|
|
}*/
|
|
|
|
#custom-arrow1 {
|
|
font-size: 2em;
|
|
color: @bg;
|
|
background: @bluetint;
|
|
}
|
|
#custom-arrow2 {
|
|
font-size: 2em;
|
|
color: @bluetint;
|
|
background: @font_dark_alternative;
|
|
}
|
|
#custom-arrow3 {
|
|
font-size: 2em;
|
|
color: @font_dark_alternative;
|
|
background: @bg;
|
|
}
|
|
#custom-arrow4 {
|
|
font-size: 2em;
|
|
color: @font_gruv_normal;
|
|
background: @bg;
|
|
}
|
|
#custom-arrow5 {
|
|
font-size: 2em;
|
|
color: @font_gruv_normal;
|
|
background: @bg;
|
|
}
|
|
#custom-arrow6 {
|
|
font-size: 2em;
|
|
color: @font_dark_alternative;
|
|
background: @bg;
|
|
}
|
|
#custom-arrow7 {
|
|
font-size: 2em;
|
|
color: @bluetint;
|
|
background: @font_dark_alternative;
|
|
}
|
|
#custom-arrow8 {
|
|
font-size: 2em;
|
|
color: @bg;
|
|
background: @bluetint;
|
|
}
|
|
|
|
/* And now modules themselves in their respective order */
|
|
#clock.time {
|
|
background: @bg;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#clock.date {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
}
|
|
|
|
#custom-scratchpad-indicator {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#language {
|
|
background: @bg;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#custom-kdeconnect {
|
|
background: @bg;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#custom-pacman {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#idle_inhibitor {
|
|
background: @font_dark_alternative;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#custom-playerctl {
|
|
font-size: 0.9em;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#custom-playerctl.paused{
|
|
color: @font_dark_alternative;
|
|
font-size: 0.9em;
|
|
}
|
|
/* Workspaces stuff */
|
|
#workspaces {
|
|
}
|
|
#workspaces button {
|
|
background: @font_dark_alternative;
|
|
color: @font_gruv_normal;
|
|
padding: 0em 1.2em;
|
|
min-width: 0em;
|
|
}
|
|
#workspaces button.focused {
|
|
font-weight: bolder; /* Somewhy the bar-wide setting is ignored*/
|
|
}
|
|
#workspaces button.urgent {
|
|
color: #c9545d;
|
|
opacity: 1;
|
|
}
|
|
#battery {
|
|
color: @font_gruv_normal;
|
|
background: @font_dark_alternative;
|
|
}
|
|
#custom-cpugovernor.perf {
|
|
|
|
}
|
|
#cpu {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
padding-left: 0em;
|
|
padding-right: 0.2em;
|
|
}
|
|
#cpu.critical {
|
|
color: @nord_dark_font;
|
|
background: @critical;
|
|
}
|
|
#temperature {
|
|
background-color: @bluetint;
|
|
color: @font_gruv_normal;
|
|
padding-right: 0em;
|
|
}
|
|
#temperature.critical {
|
|
background: @critical;
|
|
}
|
|
#custom-gpu {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
padding-left: 0em;
|
|
}
|
|
#pulseaudio {
|
|
background: @bg;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#pulseaudio.muted {
|
|
color: #fb4833;
|
|
}
|
|
#pulseaudio.source-muted {
|
|
/* moved to config */
|
|
}
|
|
#bluetooth {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#network {
|
|
background: @bluetint;
|
|
color: @font_gruv_normal;
|
|
}
|
|
#tray {
|
|
background: @bg;
|
|
color: @font_gruv_normal;
|
|
}
|
|
|
|
#custom-alsa {
|
|
background: @sound;
|
|
}
|
|
#memory {
|
|
background: @memory;
|
|
}
|
|
#custom-layout {
|
|
background: @layout;
|
|
}
|
|
#mode { /* Shown current Sway mode (resize etc.) */
|
|
color: @light;
|
|
background: @mode;
|
|
}
|
|
|
|
#backlight {
|
|
background: @backlight;
|
|
}
|
|
#window {
|
|
padding: 0px 10px 0px 10px;
|
|
font-weight: bold;
|
|
font-size: 1em;
|
|
color: @bg;
|
|
background: @font_gruv_normal;
|
|
}
|
|
#custom-weather {
|
|
background: @mode;
|
|
font-weight: bold;
|
|
padding: 0 0.6em;
|
|
}
|
|
'';
|
|
};
|
|
}
|