refactored waybar config
This commit is contained in:
parent
d0a09a0744
commit
d6ce1fb1cc
8 changed files with 333 additions and 592 deletions
|
|
@ -200,8 +200,8 @@ in
|
||||||
];
|
];
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configPath = ./../../moduler/programs/waybar/waybar.jsonc;
|
profile = "desktop";
|
||||||
stylePath = ./../../moduler/programs/waybar/waybar-${theme}.css;
|
theme = theme;
|
||||||
};
|
};
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,8 @@ in
|
||||||
];
|
];
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configPath = ./../../moduler/programs/waybar/waybar-laptop.jsonc;
|
profile = "laptop";
|
||||||
stylePath = ./../../moduler/programs/waybar/waybar-${theme}.css;
|
theme = theme;
|
||||||
};
|
};
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,8 @@ in
|
||||||
];
|
];
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configPath = ./../../moduler/programs/waybar/waybar-laptop.jsonc;
|
profile = "laptop";
|
||||||
stylePath = ./../../moduler/programs/waybar/waybar-${theme}.css;
|
theme = theme;
|
||||||
};
|
};
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -7,22 +7,339 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
cfg = config.waybar;
|
||||||
|
isLaptop = cfg.profile == "laptop";
|
||||||
|
|
||||||
|
palette =
|
||||||
|
if cfg.theme == "mocha" then
|
||||||
|
{
|
||||||
|
base = "#1E1E2E";
|
||||||
|
mantle = "#181825";
|
||||||
|
crust = "#11111B";
|
||||||
|
text = "#CDD6F4";
|
||||||
|
subtext0 = "#A6ADC8";
|
||||||
|
green = "#A6E3A1";
|
||||||
|
yellow = "#F9E2AF";
|
||||||
|
sky = "#89DCEB";
|
||||||
|
rose = "#F38BA8";
|
||||||
|
blue = "#89B4FA";
|
||||||
|
surface2 = "#585B70";
|
||||||
|
peach = "#FAB387";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base = "#EFF1F5";
|
||||||
|
mantle = "#E6E9EF";
|
||||||
|
crust = "#DCE0E8";
|
||||||
|
text = "#4C4F69";
|
||||||
|
subtext0 = "#6C6F85";
|
||||||
|
green = "#40A02B";
|
||||||
|
yellow = "#DF8E1D";
|
||||||
|
sky = "#04A5E5";
|
||||||
|
rose = "#D20F39";
|
||||||
|
blue = "#1E66F5";
|
||||||
|
surface2 = "#ACB0BE";
|
||||||
|
peach = "#FE640B";
|
||||||
|
};
|
||||||
|
|
||||||
|
waybarConfig = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
margin-top = 10;
|
||||||
|
margin-left = 14;
|
||||||
|
margin-right = 14;
|
||||||
|
spacing = 12;
|
||||||
|
modules-left = [ "hyprland/workspaces" ];
|
||||||
|
modules-right =
|
||||||
|
if isLaptop then
|
||||||
|
[
|
||||||
|
"mpris"
|
||||||
|
"bluetooth"
|
||||||
|
"pulseaudio"
|
||||||
|
"upower"
|
||||||
|
"custom/tailscale"
|
||||||
|
"custom/netbird"
|
||||||
|
"network"
|
||||||
|
"clock"
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[
|
||||||
|
"mpris"
|
||||||
|
"pulseaudio"
|
||||||
|
"bluetooth"
|
||||||
|
"custom/tailscale"
|
||||||
|
"custom/netbird"
|
||||||
|
"network"
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
|
||||||
|
mpris = {
|
||||||
|
format = "{player_icon} {title} - {artist}";
|
||||||
|
format-paused = " {player_icon} {title}";
|
||||||
|
format-stopped = "";
|
||||||
|
player-icons = {
|
||||||
|
default = "";
|
||||||
|
Feishin = "";
|
||||||
|
};
|
||||||
|
max-length = if isLaptop then 45 else 50;
|
||||||
|
interval = 1;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{player} - {status}\n{artist}\n{title}\n{album}";
|
||||||
|
on-click = if isLaptop then "playerctl -p Feishin play-pause" else "playerctl play-pause";
|
||||||
|
}
|
||||||
|
// lib.optionalAttrs isLaptop {
|
||||||
|
player = "Feishin";
|
||||||
|
on-scroll-up = "playerctl -p Feishin next";
|
||||||
|
on-scroll-down = "playerctl -p Feishin previous";
|
||||||
|
};
|
||||||
|
|
||||||
|
bluetooth = {
|
||||||
|
format = " {status}";
|
||||||
|
format-connected = " {device_alias}";
|
||||||
|
format-connected-battery = " {device_alias} {device_battery_percentage}%";
|
||||||
|
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
|
||||||
|
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
|
||||||
|
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
|
||||||
|
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
|
||||||
|
on-click = "pgrep .blueman-manage && pkill .blueman-manage || blueman-manager &";
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
interface =
|
||||||
|
if isLaptop then
|
||||||
|
"wlp0s20f3"
|
||||||
|
else
|
||||||
|
[
|
||||||
|
"enp195s0"
|
||||||
|
"enp196s0"
|
||||||
|
];
|
||||||
|
format = "{ifname}";
|
||||||
|
format-wifi = " {essid} ({signalStrength}%)";
|
||||||
|
format-ethernet = if isLaptop then "{ifname} " else " {ifname}";
|
||||||
|
format-disconnected = "no signal";
|
||||||
|
tooltip-format = "{ifname}";
|
||||||
|
tooltip-format-wifi = "{essid} ({signalStrength}%) ";
|
||||||
|
tooltip-format-ethernet = "{ifname} ";
|
||||||
|
tooltip-format-disconnected = "Disconnected";
|
||||||
|
max-length = 50;
|
||||||
|
};
|
||||||
|
|
||||||
|
upower = {
|
||||||
|
icon-size = 20;
|
||||||
|
hide-if-empty = true;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-spacing = 20;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
format-bluetooth = "{icon} {volume}%";
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
headphones = "";
|
||||||
|
handsfree = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
on-click = "pgrep pavucontrol && pkill pavucontrol || pavucontrol &";
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
format = "{:%c}";
|
||||||
|
locale = "sv_SE.UTF-8";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{:%A, %d %B %Y}\n %H:%M:%S";
|
||||||
|
interval = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/tailscale" = {
|
||||||
|
exec = "/home/fw/.config/waybar/scripts/tailscale.sh --status";
|
||||||
|
on-click = "/home/fw/.config/waybar/scripts/tailscale.sh --toggle";
|
||||||
|
exec-on-event = true;
|
||||||
|
format = "TS {icon} {text}";
|
||||||
|
format-icons = {
|
||||||
|
connected = "";
|
||||||
|
stopped = "";
|
||||||
|
connecting = "";
|
||||||
|
disconnecting = "";
|
||||||
|
};
|
||||||
|
tooltip = true;
|
||||||
|
return-type = "json";
|
||||||
|
interval = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/netbird" = {
|
||||||
|
exec = "/home/fw/.config/waybar/scripts/netbird.sh --status";
|
||||||
|
on-click = "/home/fw/.config/waybar/scripts/netbird.sh --toggle";
|
||||||
|
exec-on-event = true;
|
||||||
|
format = "NB {icon} {text}";
|
||||||
|
format-icons = {
|
||||||
|
connected = "";
|
||||||
|
stopped = "";
|
||||||
|
connecting = "";
|
||||||
|
disconnecting = "";
|
||||||
|
};
|
||||||
|
tooltip = true;
|
||||||
|
return-type = "json";
|
||||||
|
interval = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
waybarStyle = ''
|
||||||
|
@define-color base ${palette.base};
|
||||||
|
@define-color mantle ${palette.mantle};
|
||||||
|
@define-color crust ${palette.crust};
|
||||||
|
@define-color text ${palette.text};
|
||||||
|
@define-color subtext0 ${palette.subtext0};
|
||||||
|
@define-color green ${palette.green};
|
||||||
|
@define-color yellow ${palette.yellow};
|
||||||
|
@define-color sky ${palette.sky};
|
||||||
|
@define-color rose ${palette.rose};
|
||||||
|
@define-color blue ${palette.blue};
|
||||||
|
@define-color surface2 ${palette.surface2};
|
||||||
|
@define-color peach ${palette.peach};
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: "FiraCode Nerd Font", "Font Awesome 7 Free";
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.connecting {
|
||||||
|
animation: pulse 0.8s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { opacity: 1; }
|
||||||
|
50% { opacity: 0.5; }
|
||||||
|
100% { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
|
||||||
|
transition: background-color .35s ease, color .35s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.hidden { opacity: 0.2; }
|
||||||
|
window#waybar.termite { background: @base; }
|
||||||
|
window#waybar.chromium { background: @base; border: none; }
|
||||||
|
|
||||||
|
#workspaces,
|
||||||
|
#clock,
|
||||||
|
#mpris,
|
||||||
|
#pulseaudio,
|
||||||
|
#bluetooth,
|
||||||
|
#upower,
|
||||||
|
#network,
|
||||||
|
#custom-tailscale,
|
||||||
|
#custom-netbird {
|
||||||
|
background: @base;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 3px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left > widget,
|
||||||
|
.modules-right > widget {
|
||||||
|
margin: 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left > widget:first-child { margin-left: 0; }
|
||||||
|
.modules-right > widget:last-child { margin-right: 0; }
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: none;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: transparent;
|
||||||
|
color: @text;
|
||||||
|
transition: background-color .2s ease, box-shadow .2s ease;
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background: rgba(255, 255, 255, 0.08);
|
||||||
|
box-shadow: inset 0 -3px @peach;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:active {
|
||||||
|
padding-top: 1px;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
box-shadow: inset 0 -2px @peach;
|
||||||
|
color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces { background: @base; }
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 2px 8px;
|
||||||
|
margin: 0 2px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: background-color .2s ease, box-shadow .2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover { background: rgba(255, 255, 255, 0.08); }
|
||||||
|
|
||||||
|
#workspaces button.active,
|
||||||
|
#workspaces button.focused {
|
||||||
|
background: @peach;
|
||||||
|
color: @base;
|
||||||
|
box-shadow: inset 0 -3px @peach;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background: @rose;
|
||||||
|
color: @base;
|
||||||
|
box-shadow: inset 0 -3px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#mpris,
|
||||||
|
#pulseaudio,
|
||||||
|
#bluetooth,
|
||||||
|
#upower,
|
||||||
|
#custom-tailscale,
|
||||||
|
#custom-netbird,
|
||||||
|
#network {
|
||||||
|
background: @peach;
|
||||||
|
color: @base;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: @peach;
|
||||||
|
color: @base;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
in
|
in
|
||||||
with lib;
|
with lib;
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = mkEnableOption "enables waybar";
|
enable = mkEnableOption "enables waybar";
|
||||||
configPath = lib.mkOption {
|
profile = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.enum [
|
||||||
default = ./waybar.jsonc;
|
"desktop"
|
||||||
description = "The path to the waybar config";
|
"laptop"
|
||||||
|
];
|
||||||
|
default = "desktop";
|
||||||
|
description = "Layout profile for modules and device-specific settings";
|
||||||
};
|
};
|
||||||
stylePath = lib.mkOption {
|
theme = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.enum [
|
||||||
default = ./waybar-latte.css;
|
"latte"
|
||||||
description = "The path to the waybar config";
|
"mocha"
|
||||||
|
];
|
||||||
|
default = "latte";
|
||||||
|
description = "Color theme used for Waybar style generation";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -35,8 +352,8 @@ with lib;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
xdg.configFile."waybar/config.jsonc".source = config.waybar.configPath;
|
xdg.configFile."waybar/config.jsonc".text = builtins.toJSON waybarConfig;
|
||||||
xdg.configFile."waybar/style.css".source = config.waybar.stylePath;
|
xdg.configFile."waybar/style.css".text = waybarStyle;
|
||||||
xdg.configFile."waybar/scripts/tailscale.sh" = {
|
xdg.configFile."waybar/scripts/tailscale.sh" = {
|
||||||
text = ''
|
text = ''
|
||||||
#!${pkgs.bash}/bin/bash
|
#!${pkgs.bash}/bin/bash
|
||||||
|
|
|
||||||
|
|
@ -1,122 +0,0 @@
|
||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "top",
|
|
||||||
"margin-top": 10,
|
|
||||||
"margin-left": 14,
|
|
||||||
"margin-right": 14,
|
|
||||||
"spacing": 12,
|
|
||||||
"modules-left": [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
"mpris",
|
|
||||||
"bluetooth",
|
|
||||||
"pulseaudio",
|
|
||||||
"upower",
|
|
||||||
"custom/tailscale",
|
|
||||||
"custom/netbird",
|
|
||||||
"network",
|
|
||||||
"clock"
|
|
||||||
],
|
|
||||||
"mpris": {
|
|
||||||
"player": "Feishin",
|
|
||||||
"format": "{player_icon} {title} — {artist}",
|
|
||||||
"format-paused": " {player_icon} {title}",
|
|
||||||
"format-stopped": "",
|
|
||||||
"player-icons": {
|
|
||||||
"default": "",
|
|
||||||
"Feishin": ""
|
|
||||||
},
|
|
||||||
"max-length": 45,
|
|
||||||
"interval": 1,
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "{player} — {status}\n{artist}\n{title}\n{album}",
|
|
||||||
"on-click": "playerctl -p Feishin play-pause",
|
|
||||||
"on-scroll-up": "playerctl -p Feishin next",
|
|
||||||
"on-scroll-down": "playerctl -p Feishin previous"
|
|
||||||
},
|
|
||||||
"bluetooth": {
|
|
||||||
"format": " {status}",
|
|
||||||
"format-connected": " {device_alias}",
|
|
||||||
"format-connected-battery": " {device_alias} {device_battery_percentage}%",
|
|
||||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
|
||||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
|
||||||
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
|
||||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
|
|
||||||
"on-click": "pgrep .blueman-manage && pkill .blueman-manage || blueman-manager &"
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"interface": "wlp0s20f3",
|
|
||||||
"format": "{ifname}",
|
|
||||||
"format-wifi": " {essid} ({signalStrength}%)",
|
|
||||||
"format-ethernet": "{ifname} ",
|
|
||||||
"format-disconnected": "no signal", //An empty format will hide the module.
|
|
||||||
"tooltip-format": "{ifname}",
|
|
||||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
|
||||||
"tooltip-format-ethernet": "{ifname} ",
|
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
|
||||||
"max-length": 50
|
|
||||||
},
|
|
||||||
"upower": {
|
|
||||||
"icon-size": 20,
|
|
||||||
"hide-if-empty": true,
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-spacing": 20
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
//"scroll-step": 1,
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-bluetooth": "{icon} {volume}%",
|
|
||||||
"format-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphones": "",
|
|
||||||
"handsfree": "",
|
|
||||||
"headset": "",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": [
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"on-click": "pgrep pavucontrol && pkill pavucontrol || pavucontrol &"
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"format": "{:%c}",
|
|
||||||
"locale": "sv_SE.UTF-8",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "{:%A, %d %B %Y}\n %H:%M:%S",
|
|
||||||
"interval": 1
|
|
||||||
},
|
|
||||||
"custom/tailscale": {
|
|
||||||
"exec": "/home/fw/.config/waybar/scripts/tailscale.sh --status",
|
|
||||||
"on-click": "/home/fw/.config/waybar/scripts/tailscale.sh --toggle",
|
|
||||||
"exec-on-event": true,
|
|
||||||
"format": "{icon} {text}",
|
|
||||||
"format-icons": {
|
|
||||||
"connected": "",
|
|
||||||
"stopped": "",
|
|
||||||
"connecting": "",
|
|
||||||
"disconnecting": ""
|
|
||||||
},
|
|
||||||
"tooltip": true,
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 5
|
|
||||||
},
|
|
||||||
"custom/netbird": {
|
|
||||||
"exec": "/home/fw/.config/waybar/scripts/netbird.sh --status",
|
|
||||||
"on-click": "/home/fw/.config/waybar/scripts/netbird.sh --toggle",
|
|
||||||
"exec-on-event": true,
|
|
||||||
"format": "{icon} {text}",
|
|
||||||
"format-icons": {
|
|
||||||
"connected": "",
|
|
||||||
"stopped": "",
|
|
||||||
"connecting": "",
|
|
||||||
"disconnecting": ""
|
|
||||||
},
|
|
||||||
"tooltip": true,
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,153 +0,0 @@
|
||||||
/* -------- Catppuccin Latte Palette -------- */
|
|
||||||
@define-color base #EFF1F5;
|
|
||||||
@define-color mantle #E6E9EF;
|
|
||||||
@define-color crust #DCE0E8;
|
|
||||||
@define-color text #4C4F69;
|
|
||||||
@define-color subtext0 #6C6F85;
|
|
||||||
|
|
||||||
@define-color green #40A02B;
|
|
||||||
@define-color yellow #DF8E1D;
|
|
||||||
@define-color sky #04A5E5;
|
|
||||||
@define-color rose #D20F39;
|
|
||||||
@define-color blue #1E66F5;
|
|
||||||
@define-color surface2 #ACB0BE;
|
|
||||||
@define-color peach #FE640B;
|
|
||||||
|
|
||||||
/* -------- Base Styles -------- */
|
|
||||||
* {
|
|
||||||
font-family: "FiraCode Nerd Font", "Font Awesome 7 Free";
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
/* background: @base; */
|
|
||||||
background: transparent;
|
|
||||||
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
|
|
||||||
transition: background-color .35s ease, color .35s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar.hidden { opacity: 0.2; }
|
|
||||||
|
|
||||||
window#waybar.termite { background: @base; }
|
|
||||||
window#waybar.chromium { background: @base; border: none; }
|
|
||||||
|
|
||||||
/* -------- Module “pill” look -------- */
|
|
||||||
#workspaces, #clock, #mpris, #pulseaudio, #bluetooth, #upower, #network {
|
|
||||||
background: @base;
|
|
||||||
border: none;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 3px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* consistent gaps between modules */
|
|
||||||
.modules-left > widget, .modules-right > widget {
|
|
||||||
margin: 0 15px;
|
|
||||||
}
|
|
||||||
.modules-left > widget:first-child { margin-left: 0; }
|
|
||||||
.modules-right > widget:last-child { margin-right: 0; }
|
|
||||||
|
|
||||||
/* -------- Buttons (generic) -------- */
|
|
||||||
/* Buttons */
|
|
||||||
button {
|
|
||||||
border: none;
|
|
||||||
border-radius: 8px;
|
|
||||||
background: transparent;
|
|
||||||
color: @text;
|
|
||||||
transition: background-color .2s ease, box-shadow .2s ease;
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* hover */
|
|
||||||
button:hover {
|
|
||||||
background: rgba(255,255,255,0.08);
|
|
||||||
box-shadow: inset 0 -3px @peach;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* active (no CSS transform in GTK; simulate press with padding + shadow) */
|
|
||||||
button:active {
|
|
||||||
padding-top: 1px; /* nudge down visually */
|
|
||||||
padding-bottom: 1px; /* keep height stable */
|
|
||||||
box-shadow: inset 0 -2px @peach;
|
|
||||||
color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Workspaces -------- */
|
|
||||||
#workspaces {
|
|
||||||
background: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
padding: 2px 8px;
|
|
||||||
margin: 0 2px;
|
|
||||||
border-radius: 8px;
|
|
||||||
transition: background-color .2s ease, box-shadow .2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
background: rgba(255,255,255,0.08);
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active, #workspaces button.focused {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
box-shadow: inset 0 -3px @peach;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background: @rose;
|
|
||||||
color: @base;
|
|
||||||
box-shadow: inset 0 -3px rgba(0,0,0,0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Clock -------- */
|
|
||||||
#clock {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Mpris -------- */
|
|
||||||
#mpris {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Pavu -------- */
|
|
||||||
#pulseaudio {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Bluetooth -------- */
|
|
||||||
#bluetooth {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Upower -------- */
|
|
||||||
#upower {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Network -------- */
|
|
||||||
#network {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Helpers -------- */
|
|
||||||
@keyframes blink {
|
|
||||||
to { background-color: @peach; color: @base; }
|
|
||||||
}
|
|
||||||
|
|
@ -1,185 +0,0 @@
|
||||||
/* -------- Catppuccin Mocha Palette -------- */
|
|
||||||
@define-color base #1E1E2E;
|
|
||||||
@define-color mantle #181825;
|
|
||||||
@define-color crust #11111B;
|
|
||||||
@define-color text #CDD6F4;
|
|
||||||
@define-color subtext0 #A6ADC8;
|
|
||||||
|
|
||||||
@define-color green #A6E3A1;
|
|
||||||
@define-color yellow #F9E2AF;
|
|
||||||
@define-color sky #89DCEB;
|
|
||||||
@define-color rose #F38BA8;
|
|
||||||
@define-color blue #89B4FA;
|
|
||||||
@define-color surface2 #585B70;
|
|
||||||
@define-color peach #fab387;
|
|
||||||
|
|
||||||
/* -------- Base Styles -------- */
|
|
||||||
* {
|
|
||||||
font-family: "FiraCode Nerd Font", "Font Awesome 7 Free";
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.connecting {
|
|
||||||
animation: pulse 0.8s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes pulse {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
/* background: @base; */
|
|
||||||
background: transparent;
|
|
||||||
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
|
|
||||||
transition: background-color .35s ease, color .35s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar.hidden { opacity: 0.2; }
|
|
||||||
|
|
||||||
window#waybar.termite { background: @base; }
|
|
||||||
window#waybar.chromium { background: @base; border: none; }
|
|
||||||
|
|
||||||
/* -------- Module “pill” look -------- */
|
|
||||||
#workspaces, #clock, #mpris, #pulseaudio, #bluetooth, #upower, #network, #custom-tailscale, #custom-netbird {
|
|
||||||
background: @base;
|
|
||||||
border: none;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 3px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* consistent gaps between modules */
|
|
||||||
.modules-left > widget, .modules-right > widget {
|
|
||||||
margin: 0 15px;
|
|
||||||
}
|
|
||||||
.modules-left > widget:first-child { margin-left: 0; }
|
|
||||||
.modules-right > widget:last-child { margin-right: 0; }
|
|
||||||
|
|
||||||
/* -------- Buttons (generic) -------- */
|
|
||||||
/* Buttons */
|
|
||||||
button {
|
|
||||||
border: none;
|
|
||||||
border-radius: 8px;
|
|
||||||
background: transparent;
|
|
||||||
color: @text;
|
|
||||||
transition: background-color .2s ease, box-shadow .2s ease;
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* hover */
|
|
||||||
button:hover {
|
|
||||||
background: rgba(255,255,255,0.08);
|
|
||||||
box-shadow: inset 0 -3px @peach;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* active (no CSS transform in GTK; simulate press with padding + shadow) */
|
|
||||||
button:active {
|
|
||||||
padding-top: 1px; /* nudge down visually */
|
|
||||||
padding-bottom: 1px; /* keep height stable */
|
|
||||||
box-shadow: inset 0 -2px @peach;
|
|
||||||
color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Workspaces -------- */
|
|
||||||
#workspaces {
|
|
||||||
background: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
padding: 2px 8px;
|
|
||||||
margin: 0 2px;
|
|
||||||
border-radius: 8px;
|
|
||||||
transition: background-color .2s ease, box-shadow .2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
background: rgba(255,255,255,0.08);
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active, #workspaces button.focused {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
box-shadow: inset 0 -3px @peach;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background: @rose;
|
|
||||||
color: @base;
|
|
||||||
box-shadow: inset 0 -3px rgba(0,0,0,0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Clock -------- */
|
|
||||||
#clock {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Mpris -------- */
|
|
||||||
#mpris {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Pavu -------- */
|
|
||||||
#pulseaudio {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Bluetooth -------- */
|
|
||||||
#bluetooth {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Upower -------- */
|
|
||||||
#upower {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Upower -------- */
|
|
||||||
#custom-tailscale {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Netbird -------- */
|
|
||||||
#custom-netbird {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Network -------- */
|
|
||||||
#network {
|
|
||||||
background: @peach;
|
|
||||||
color: @base;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------- Helpers -------- */
|
|
||||||
@keyframes blink {
|
|
||||||
to { background-color: @peach; color: @base; }
|
|
||||||
}
|
|
||||||
|
|
@ -1,116 +0,0 @@
|
||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "top",
|
|
||||||
"margin-top": 10,
|
|
||||||
"margin-left": 14,
|
|
||||||
"margin-right": 14,
|
|
||||||
"spacing": 12,
|
|
||||||
"modules-left": [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
"mpris",
|
|
||||||
"pulseaudio",
|
|
||||||
"bluetooth",
|
|
||||||
"custom/tailscale",
|
|
||||||
"custom/netbird",
|
|
||||||
"network",
|
|
||||||
"clock"
|
|
||||||
],
|
|
||||||
"mpris": {
|
|
||||||
// "player": "Feishin",
|
|
||||||
"format": "{player_icon} {title} — {artist}",
|
|
||||||
"format-paused": " {player_icon} {title}",
|
|
||||||
"format-stopped": "",
|
|
||||||
"player-icons": {
|
|
||||||
"default": "",
|
|
||||||
"Feishin": ""
|
|
||||||
},
|
|
||||||
"max-length": 45,
|
|
||||||
"interval": 1,
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "{player} — {status}\n{artist}\n{title}\n{album}",
|
|
||||||
"on-click": "playerctl play-pause"
|
|
||||||
},
|
|
||||||
"bluetooth": {
|
|
||||||
"format": " {status}",
|
|
||||||
"format-connected": " {device_alias}",
|
|
||||||
"format-connected-battery": " {device_alias} {device_battery_percentage}%",
|
|
||||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
|
||||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
|
||||||
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
|
||||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
|
|
||||||
"on-click": "pgrep .blueman-manage && pkill .blueman-manage || blueman-manager &"
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"interface": [
|
|
||||||
"enp195s0",
|
|
||||||
"enp196s0"
|
|
||||||
],
|
|
||||||
"format": "{ifname}",
|
|
||||||
"format-wifi": " {essid} ({signalStrength}%)",
|
|
||||||
"format-ethernet": " {ifname}",
|
|
||||||
"format-disconnected": "no signal", //An empty format will hide the module.
|
|
||||||
"tooltip-format": "{ifname}",
|
|
||||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
|
||||||
"tooltip-format-ethernet": "{ifname} ",
|
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
|
||||||
"max-length": 50
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
//"scroll-step": 1,
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-bluetooth": "{icon} {volume}%",
|
|
||||||
"format-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphones": "",
|
|
||||||
"handsfree": "",
|
|
||||||
"headset": "",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": [
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"on-click": "pgrep pavucontrol && pkill pavucontrol || pavucontrol &"
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"format": "{:%c}",
|
|
||||||
"locale": "sv_SE.UTF-8",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "{:%A, %d %B %Y}\n %H:%M:%S",
|
|
||||||
"interval": 1
|
|
||||||
},
|
|
||||||
"custom/tailscale": {
|
|
||||||
"exec": "/home/fw/.config/waybar/scripts/tailscale.sh --status",
|
|
||||||
"on-click": "/home/fw/.config/waybar/scripts/tailscale.sh --toggle",
|
|
||||||
"exec-on-event": true,
|
|
||||||
"format": "{icon} {text}",
|
|
||||||
"format-icons": {
|
|
||||||
"connected": "",
|
|
||||||
"stopped": "",
|
|
||||||
"connecting": "",
|
|
||||||
"disconnecting": ""
|
|
||||||
},
|
|
||||||
"tooltip": true,
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 5
|
|
||||||
},
|
|
||||||
"custom/netbird": {
|
|
||||||
"exec": "/home/fw/.config/waybar/scripts/netbird.sh --status",
|
|
||||||
"on-click": "/home/fw/.config/waybar/scripts/netbird.sh --toggle",
|
|
||||||
"exec-on-event": true,
|
|
||||||
"format": "{icon} {text}",
|
|
||||||
"format-icons": {
|
|
||||||
"connected": "",
|
|
||||||
"stopped": "",
|
|
||||||
"connecting": "",
|
|
||||||
"disconnecting": ""
|
|
||||||
},
|
|
||||||
"tooltip": true,
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue