Files
nixos/modules/waybar.nix

656 lines
12 KiB
Nix
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ config, pkgs, ... }:
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 25;
modules-left = [ "hyprland/workspaces" ];
modules-center = [ "hyprland/window" ];
modules-right = [
"mpd"
"idle_inhibitor"
"pulseaudio"
"network"
"power-profiles-daemon"
"cpu"
"memory"
"temperature"
"backlight"
# "keyboard-state"
"battery"
"tray"
"clock"
"custom/power"
];
"hyprland/workspaces" = {
format = "{name}";
};
"hyprland/window" = {
max-length = 50;
};
"hyprland/submap" = {
"format"=" {}";
"max-length"= "8";
"tooltip"= false;
};
"keyboard-state"= {
"numlock"= true;
"capslock"= true;
"format"= "{name} {icon}";
"format-icons"= {
"locked"= "";
"unlocked"= "";
};
};
"sway/mode"= {
"format"= "<span style=\"italic\">{}</span>";
};
"sway/scratchpad"= {
"format"= "{icon} {count}";
"show-empty"= false;
"format-icons"= ["" ""];
"tooltip"= true;
"tooltip-format"= "{app}: {title}";
};
"mpd"= {
"format"= "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) {songPosition}|{queueLength}% ";
"format-disconnected"= "Disconnected ";
"format-stopped"= "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ";
"unknown-tag"= "N/A";
"interval"= 5;
"consume-icons"= {
"on"= " ";
};
"random-icons"= {
"off"= "<span color=\"#f53c3c\"></span> ";
"on"= " ";
};
"repeat-icons"= {
"on"= " ";
};
"single-icons"= {
"on"= "1 ";
};
"state-icons"= {
"paused"= "";
"playing"= "";
};
"tooltip-format"= "MPD (connected)";
"tooltip-format-disconnected"= "MPD (disconnected)";
"on-click"= "pwvucontrol";
};
"idle_inhibitor"= {
"format"= "{icon}";
"format-icons"= {
"activated"= "";
"deactivated"= "";
};
};
"tray"= {
"icon-size"= 21;
"spacing"= 10;
};
"clock"= {
"timezone"= "America/New_York";
"tooltip-format"= "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
"format-alt"= "{:%Y-%m-%d}";
};
"cpu"= {
"format"= "{usage}% ";
"tooltip"= false;
};
"memory"= {
"format"= "{}% ";
};
"temperature"= {
"thermal-zone"= 2;
"hwmon-path"= "/sys/class/hwmon/hwmon2/temp1_input";
"critical-threshold"= 80;
"format-critical"= "{temperatureC}°C {icon}";
"format"= "{temperatureC}°C {icon}";
"format-icons"= ["" "" ""];
};
"backlight"= {
"device"= "acpi_video1";
"format"= "{percent}% {icon}";
"format-icons"= ["" "" "" "" "" "" "" "" ""];
};
"battery"= {
"states"= {
"good"= 95;
"warning"= 20;
"critical"= 15;
};
"format"= "{capacity}% 󰂌 ";
"format-full"= "{capacity}% {icon} ";
"format-charging"= "{capacity}% {icon} ";
"format-plugged"= "{capacity}% ";
"format-alt"= "{time} {icon} ";
"format-good"= "{capacity}% {icon} ";
"format-icons"= ["" "" "" "" ""];
};
"battery#bat2"= {
"bat"= "BAT1";
};
"power-profiles-daemon"= {
"format"= "{icon}";
"tooltip-format"= "Power profile: {profile}\nDriver: {driver}";
"tooltip"= true;
"format-icons"= {
"default"= "";
"performance"= "";
"balanced"= "";
"power-saver"= "";
};
};
"network"= {
"interface"= "wlp2*";
"format-wifi"= "{essid} ({signalStrength}%) ";
"format-ethernet"= "{ipaddr}/{cidr} 󰛳";
"tooltip-format"= "{ifname} via {gwaddr} 󱦂";
"format-linked"= "{ifname} (No IP) ";
"format-disconnected"= "Disconnected ";
"format-alt"= "{ifname}: {ipaddr}/{cidr}";
};
"pulseaudio"= {
"scroll-step"= 1;
"format"= "{volume}% {icon} {format_source}";
"format-bluetooth"= "{volume}% {icon} {format_source}";
"format-bluetooth-muted"= " {icon} {format_source}";
"format-muted"= " {format_source}";
"format-source"= "{volume}% ";
"format-source-muted"= "";
"format-icons"= {
"headphone"= "";
"hands-free"= "󱡏";
"headset"= "󰋎";
"phone"= "";
"portable"= "";
"car"= "";
"default"= ["" "" ""];
};
"on-click"= "pwvucontrol";
};
"custom/media"= {
"format"= "{icon} {text}";
"return-type"= "json";
"max-length"= 40;
"format-icons"= {
"spotify"= "";
"default"= "";
};
"escape"= true;
"exec"= "$HOME/.config/waybar/mediaplayer.py 2> /dev/null";
};
"custom/power"= {
"format" = " ";
"tooltip"= false;
"menu"= "on-click";
"menu-file"= "$HOME/.config/waybar/power_menu.xml";
"menu-actions"= {
"shutdown"= "shutdown";
"reboot"= "reboot";
"suspend"= "systemctl suspend";
"hibernate"= "systemctl hibernate";
"lock"= "loginctl lock-session";
};
};
};
};
style = ''
* {
/* `otf-font-awesome` is required to be installed for icons */
color: #67578A;
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
font-size: 15px;
border-radius: 10px;
margin: 0px 5px 0px 5px;
background-color: #1f2335
}
window#waybar {
background-color: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
/*
window#waybar.empty {
}
window#waybar.solo {
}
*/
window#waybar.termite {
}
window#waybar.chromium {
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
/* you can set a style on hover for any module like this */
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #ffffff;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
/* background-color: #64727D; */
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
/* color: #ffffff; */
}
@keyframes blink {
to {
/* background-color: #ffffff; */
color: #000000;
}
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
/* background-color: #64727D; */
}
#battery {
/* background-color: #ffffff; */
/* color: #000000; */
}
#battery.charging, #battery.plugged {
color: #4fd6be;
/* background-color: #26A65B; */
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
/* background-color: #f53c3c; */
color: #ff007c;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.warning {
color: rgba(255, 210, 4, 1);
}
#battery.critical {
color: rgba(238, 46, 36, 1);
}
#battery.charging {
color: rgba(217, 216, 216, 1);
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
/* background-color: #f53c3c; */
color: #c53b53;
}
#power-profiles-daemon.balanced {
/* background-color: #2980b9; */
color: #565f89;
}
#power-profiles-daemon.power-saver {
/* background-color: #2ecc71; */
color: #9d7cd8;
}
label:focus {
/* background-color: #000000; */
}
#cpu {
/* background-color: #2ecc71; */
/* color: #000000; */
}
#memory {
/* background-color: #9b59b6; */
}
#disk {
/* background-color: #964B00; */
}
#backlight {
/* background-color: #90b1b1; */
}
#network {
/* background-color: #2980b9; */
}
#network.disconnected {
/* background-color: #f53c3c; */
}
#wireplumber {
/* background-color: #fff0f5; */
/* color: #000000; */
}
#wireplumber.muted {
/* background-color: #f53c3c; */
}
#custom-media {
/* background-color: #66cc99; */
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
/* background-color: #f0932b; */
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
/* background-color: #2980b9; */
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
color: #eb4d4b;
}
#idle_inhibitor {
color: #2d3436;
}
#idle_inhibitor.activated {
/* background-color: #ecf0f1; */
color: #2d3436;
}
#mpd {
/* background-color: #66cc99; */
color: #2a5c45;
}
#mpd.disconnected {
/* background-color: #f53c3c; */
}
#mpd.stopped {
/* background-color: #90b1b1; */
}
#mpd.paused {
/* background-color: #51a37a; */
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
min-width: 16px;
}
#keyboard-state {
/* background: #97e1ad; */
color: #000000;
padding: 0 0px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
/* background: rgba(0, 0, 0, 0.2); */
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}
#waybar {
font-family: "SF Pro Display", Cantarell, Noto Sans, sans-serif;
font-size: 16px;
}
#window {
padding: 0 10px;
}
window#waybar {
border: none;
border-radius: 0;
box-shadow: none;
text-shadow: none;
transition-duration: 0s;
color: rgba(217, 216, 216, 1);
background: #1a1b26;
}
#workspaces {
margin: 0 5px;
}
#workspaces button {
padding: 0 8px;
color: #565f89;
border: 3px solid rgba(9, 85, 225, 0);
border-radius: 10px;
min-width: 33px;
}
#workspaces button.visible {
color: #a9b1d6;
}
#workspaces button.active {
border-top: 3px solid #7aa2f7;
border-bottom: 3px solid #7aa2f7;
}
#workspaces button.urgent {
background-color: #a96d1f;
color: white;
}
#workspaces button:hover {
box-shadow: inherit;
border-color: #bb9af7;
color: #bb9af7;
}
/* Repeat style here to ensure properties are overwritten as there's no !important and button:hover above resets the colour */
#workspaces button.focused {
color: #7aa2f7;
}
#workspaces button.focused:hover {
color: #bb9af7;
}
#pulseaudio:hover {
color: #565f89;
}
#pulseaudio {
/* font-size: 26px; */
/* background-color: #545c73; */
/* color: #000000; */
}
#pulseaudio.muted {
/* background-color: #c53b53; */
color: #c53b53;
}
#custom-recorder {
font-size: 18px;
color:#ee2e24;
}
#tray,
#mode,
#battery,
#temperature,
#cpu,
#memory,
#network,
#pulseaudio,
#idle_inhibitor,
#sway-language,
#backlight,
#custom-storage,
#custom-cpu_speed,
#custom-powermenu,
#custom-spotify,
#custom-weather,
#custom-mail,
#custom-media {
padding: 0 5px;
/* border-top: 3px solid rgba(217, 216, 216, 0.5); */
}
#clock {
margin: 0px 5px 0px 5px;
min-width: 30px;
}
#custom-storage.warning {
color: rgba(255, 210, 4, 1);
}
#custom-storage.critical {
color: rgba(238, 46, 36, 1);
}
@keyframes blink {
to {
background-color: #ffffff;
color: black;
}
}
'';
};
}