This commit is contained in:
Peritia 2026-02-12 15:32:45 +01:00
parent b6b87d5aed
commit 9c72a71585
3546 changed files with 18655 additions and 0 deletions

View file

@ -0,0 +1,102 @@
{
config,
lib,
nixosVista,
...
}: let
root = nixosVista;
cfg = root.waybar;
baseSettings = {
layer = "bottom";
spacing = 0;
height = 0;
margin-top = 0;
position = "bottom";
margin-right = 50;
margin-bottom = 8;
margin-left = 50;
modules-left = [
"custom/os_btn"
"hyprland/workspaces"
"wlr/taskbar"
];
modules-center = [
"clock"
];
modules-right = [
"tray"
"network"
"battery"
"pulseaudio"
];
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
tooltip = false;
};
"wlr/taskbar" = {
format = "{icon}";
spacing = 3;
icon-size = 28;
on-click = "activate";
tooltip-format = "{title}";
};
tray = {
spacing = 10;
tooltip = false;
};
clock = {
format = "{:%H:%M - %a | %d %b %Y}";
tooltip = false;
};
network = {
format-wifi = "󰤢 {bandwidthDownBits}";
format-ethernet = "󰤢 {bandwidthDownBits}";
format-disconnected = "󰤠 No Network";
interval = 5;
tooltip = false;
};
pulseaudio = {
scroll-step = 5;
max-volume = 150;
format = "{icon} {volume}%";
format-bluetooth = "{icon} {volume}%";
format-icons = ["" "" " "];
nospacing = 1;
format-muted = " ";
on-click = "pavucontrol";
tooltip = false;
};
battery = {
format = "{icon} {capacity}%";
interval = 5;
states = {
warning = 20;
critical = 10;
};
format-icons = ["" "" "" "" ""];
tooltip = false;
};
};
finalSettings = baseSettings // cfg.settings.extra;
in {
programs.waybar = lib.mkIf (cfg.enable && cfg.style.preset != "none") {
enable = true;
settings = [finalSettings];
};
}

View file

@ -0,0 +1,6 @@
{
imports = [
./config.nix
./style.nix
];
}

View file

@ -0,0 +1,505 @@
{
config,
lib,
nixosVista,
...
}: let
cfg = nixosVista.waybar;
############################################################
# DEFAULT PRESET
############################################################
defaultStyle = ''
@define-color accent_color #20d0fc;
* {
border: none;
border-radius: 8;
min-height: 0;
/* For the taskbar, I prefer simple Noto Sans.*/
font-family: Noto Sans;
font-weight: bold;
font-size: 14px;
padding: 0px;
padding-left: 0px;
padding-right: 0px;
background: transparent;
}
window#waybar {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.25)0%, rgba(0,0,0,0.5)50%, rgba(0,0,0,0.6)50%);
border-radius: 12px;
border-width: 1px;
border-bottom-width: 1px;
padding: 0px;
border-style: solid;
border-color: rgba(255,255,255,0.2);
}
tooltip {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.15)50%, rgba(0,0,0,0.2)50%, rgba(0,0,0,0.3)50%);
color: white;
border-top-style: solid;
border-bottom-style: solid;
border-width: 1px;
border-top-color: rgba(255,255,255,0.4);
border-bottom-color: rgba(255,255,255,0.25);
}
tooltip label {
color: white;
}
#custom-os_btn {
margin-left: 0.5cm;
}
#taskbar {
margin: 4px 8px;
margin-left: 0.25cm;
color: white;
}
#taskbar button {
margin-left: 0.2cm;
margin-right: 0.2cm;
padding: 1px;
border-radius: 4px;
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-width: 1px;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.3);
box-shadow: 0px 0px 4px rgba(0,0,0,0.2);
}
#taskbar button:hover {
background-color: rgba(0,0,0,0);
box-shadow: 0px 0px 5px rgba(0,0,0,0.5);
background-image: linear-gradient(to bottom, rgba(255,255,255,0.05), rgba(0,0,0,0.4));
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-width: 1px;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.3);
}
#taskbar button.active {
background-image: linear-gradient(to bottom, rgba(0,255,255,0.6), rgba(0,100,100,0.1));
}
#battery,
#network,
#clock,
#tray,
#workspaces,
#pulseaudio {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.25), rgba(0,0,0,0.025));
box-shadow: 0px 0px 3px rgba(0,0,0,0.34);
margin: 4px;
padding: 4px 8px;
border-radius: 8px;
color: rgb(220,220,220);
/* Important style feature in order to give a glassy look! */
/* I'm using the top and bottom borders to mimic highlights in highly reflective surfaces, looks good with the glassy-look */
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.45);
border-width: 1px;
}
#tray menu {
background-color: rgba(255,255,255,0.025);
color: rgba(220,220,220, 1);
padding: 4px;
}
#tray menu menuitem {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.15),rgba(0,0,0,0.2),rgba(0,0,0,0.4));
margin: 3px;
color: rgb(220,220,220);
border-radius: 4px;
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.3);
border-width: 1px;
}
#tray menu menuitem:hover {
background-image: linear-gradient(to bottom, rgba(0,255,255,0.15), rgba(0,0,0,0.3), rgba(0,255,255,0.15));
color: @accent_color;
text-shadow: 0px 0px 6px @accent_color;
box-shadow: 0px 0px 4px rgba(0,0,0,0.4);
}
#workspaces button {
transition-duration: 100ms;
all: initial;
min-width: 0;
color: rgb(220,220,220);
margin-right: 0.2cm;
margin-left: 0.2cm;
text-shadow: 0px 0px 4px rgb(135,135,135);
}
#workspaces button.active {
color: @accent_color;
text-shadow: 0px 0px 6px @accent_color;
}
#workspaces button:hover {
transition-duration: 120ms;
color:@accent_color;
text-shadow: 0px 0px 8px @accent_color;
}
#workspaces button.current_output {
color: @accent_color;;
}
#workspaces button.urgent {
color: #e78a4e;
text-shadow: 0px 0px 6px #e78a4e;
}
#battery.warning,
#battery.critical,
#battery.urgent {
color: #fcf520;
}
'';
############################################################
# TRANSLUCENT PRESET
############################################################
translucentStyle = ''
@define-color accent_color #20d0fc;
* {
border: none;
border-radius: 8;
min-height: 0;
/* For the taskbar, I prefer simple Noto Sans.*/
font-family: Noto Sans;
font-weight: bold;
font-size: 14px;
padding: 0px;
padding-left: 0px;
padding-right: 0px;
background: transparent;
}
window#waybar {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.25)0%, rgba(0,0,0,0.5)50%, rgba(0,0,0,0.6)50%);
border-radius: 12px;
border-width: 1px;
border-bottom-width: 1px;
padding: 0px;
border-style: solid;
border-color: rgba(255,255,255,0.2);
}
tooltip {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.15)50%, rgba(0,0,0,0.2)50%, rgba(0,0,0,0.3)50%);
color: white;
border-top-style: solid;
border-bottom-style: solid;
border-width: 1px;
border-top-color: rgba(255,255,255,0.4);
border-bottom-color: rgba(255,255,255,0.25);
}
tooltip label {
color: white;
}
#custom-os_btn {
margin-left: 0.5cm;
}
#taskbar {
margin: 4px 8px;
margin-left: 0.25cm;
color: white;
}
#taskbar button {
margin-left: 0.2cm;
margin-right: 0.2cm;
padding: 1px;
border-radius: 4px;
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-width: 1px;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.3);
box-shadow: 0px 0px 4px rgba(0,0,0,0.2);
}
#taskbar button:hover {
background-color: rgba(0,0,0,0);
box-shadow: 0px 0px 5px rgba(0,0,0,0.5);
background-image: linear-gradient(to bottom, rgba(255,255,255,0.05), rgba(0,0,0,0.4));
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-width: 1px;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.3);
}
#taskbar button.active {
background-image: linear-gradient(to bottom, rgba(0,255,255,0.6), rgba(0,100,100,0.1));
}
#battery,
#network,
#clock,
#tray,
#workspaces,
#pulseaudio {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.25), rgba(0,0,0,0.025));
box-shadow: 0px 0px 3px rgba(0,0,0,0.34);
margin: 4px;
padding: 4px 8px;
border-radius: 8px;
color: rgb(220,220,220);
/* Important style feature in order to give a glassy look! */
/* I'm using the top and bottom borders to mimic highlights in highly reflective surfaces, looks good with the glassy-look */
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.45);
border-width: 1px;
}
#tray menu {
background-color: rgba(255,255,255,0.025);
color: rgba(220,220,220, 1);
padding: 4px;
}
#tray menu menuitem {
background-image: linear-gradient(to bottom, rgba(255,255,255,0.15),rgba(0,0,0,0.2),rgba(0,0,0,0.4));
margin: 3px;
color: rgb(220,220,220);
border-radius: 4px;
border-style: none;
border-bottom-style: solid;
border-top-style: solid;
border-bottom-color: rgba(255,255,255,0.15);
border-top-color: rgba(255,255,255,0.3);
border-width: 1px;
}
#tray menu menuitem:hover {
background-image: linear-gradient(to bottom, rgba(0,255,255,0.15), rgba(0,0,0,0.3), rgba(0,255,255,0.15));
color: @accent_color;
text-shadow: 0px 0px 6px @accent_color;
box-shadow: 0px 0px 4px rgba(0,0,0,0.4);
}
#workspaces button {
transition-duration: 100ms;
all: initial;
min-width: 0;
color: rgb(220,220,220);
margin-right: 0.2cm;
margin-left: 0.2cm;
text-shadow: 0px 0px 4px rgb(135,135,135);
}
#workspaces button.active {
color: @accent_color;
text-shadow: 0px 0px 6px @accent_color;
}
#workspaces button:hover {
transition-duration: 120ms;
color:@accent_color;
text-shadow: 0px 0px 8px @accent_color;
}
#workspaces button.current_output {
color: @accent_color;;
}
#workspaces button.urgent {
color: #e78a4e;
text-shadow: 0px 0px 6px #e78a4e;
}
#battery.warning,
#battery.critical,
#battery.urgent {
color: #fcf520;
}
'';
############################################################
# OPAQUE PRESET
############################################################
opaqueStyle = ''
@define-color accent_color #20d0fc;
* {
border: none;
border-radius: 8;
min-height: 0;
/* For the taskbar, I prefer simple Noto Sans.*/
font-family: Noto Sans;
font-weight: bold;
font-size: 14px;
padding: 0px;
padding-left: 0px;
padding-right: 0px;
}
window#waybar {
background-image: linear-gradient(to bottom, #ffffff, #bbbbbb);
border-radius: 12px;
padding: 0px;
}
tooltip {
background-color: rgb(255,255,255);
color: rgb(135,135,135);
text-shadow: 0px 0px 4px rgb(135,135,135);
}
#custom-os_btn {
margin-left: 0.5cm;
}
#taskbar {
margin: 4px 8px;
margin-left: 0.25cm;
}
#taskbar button {
margin-left: 0.2cm;
margin-right: 0.2cm;
padding: 1px;
border-radius: 4px;
}
#taskbar button:hover {
background-color: rgba(0,0,0,0);
box-shadow: 0px 0px 5px rgb(135,135,135);
}
#taskbar button.active {
box-shadow: 0px 0px 5px rgb(135,135,135);
}
battery
#battery,
#network,
#clock,
#tray,
#pulseaudio {
background-image: linear-gradient(to bottom, #ffffff, #bbbbbb);
box-shadow: 0px 0px 3px rgb(135,135,135);
margin: 4px;
padding: 4px 8px;
border-radius: 8px;
color: rgb(90,90,90);
text-shadow: 0px 0px 4px rgb(135,135,135);
}
#tray menu {
background-color: rgba(255,255,255, 0.5);
color: rgb(90,90,90);
text-shadow: 0px 0px 4px rgb(135,135,135);
padding: 4px;
}
#tray menu menuitem {
background-image: linear-gradient(to bottom, #ffffff, #bbbbbb);
margin: 4px;
border-radius: 4px;
box-shadow: 0px 0px 4px rgba(135,135,135, 0.45);
color: rgb(90,90,90);
}
#tray menu menuitem:hover {
color: @accent_color;
text-shadow: 0px 0px 6px @accent_color;
box-shadow: 0px 0px 6px rgba(135,135,135,1);
}
#workspaces {
background-image: linear-gradient(to bottom, #ffffff, #bbbbbb);
margin: 4px;
padding: 4px 8px;
border-radius: 8px;
box-shadow: 0px 0px 3px rgb(135,135,135);
}
#workspaces button {
transition-duration: 100ms;
all: initial;
min-width: 0;
color: rgb(90,90,90);
margin-right: 0.2cm;
margin-left: 0.2cm;
text-shadow: 0px 0px 4px rgb(135,135,135);
}
#workspaces button.active {
color: @accent_color;
text-shadow: 0px 0px 6px @accent_color;
}
#workspaces button:hover {
transition-duration: 120ms;
color:@accent_color;
text-shadow: 0px 0px 8px @accent_color;
}
#workspaces button.current_output {
color: @accent_color;;
}
#workspaces button.urgent {
color: #e78a4e;
text-shadow: 0px 0px 6px #e78a4e;
}
#battery.warning,
#battery.critical,
#battery.urgent {
color: #cc1a1a;
}
'';
############################################################
# SELECT PRESET
############################################################
selectedStyle =
if cfg.style.preset == "default"
then defaultStyle
else if cfg.style.preset == "translucent"
then translucentStyle
else if cfg.style.preset == "opaque"
then opaqueStyle
else "";
in {
programs.waybar = lib.mkIf (cfg.enable && cfg.style.preset != "none") {
style = selectedStyle;
};
}