add: customize waybar

This commit is contained in:
lily 2025-04-01 12:16:35 -04:00
parent 5703f07a33
commit c8b70b59f7
Signed by: lily
GPG key ID: 601F3263FBCBC4B9
15 changed files with 754 additions and 122 deletions

View file

@ -1,18 +1,161 @@
{
config,
lib,
...
}: let
{ pkgs, config, lib, ... }:
let
cfg = config.lily.waybar;
in {
options.lily.waybar = {
enable = lib.mkEnableOption "activate waybar";
};
in
{
options.lily.waybar.enable = lib.mkEnableOption "activate waybar";
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
pavucontrol
networkmanagerapplet
blueman
];
programs.waybar = {
enable = true;
systemd.enable = true;
style = ./style.css;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 40;
# tray.icon-size = 15;
modules-left = [
"custom/icon"
"custom/separator"
"battery"
"custom/separator"
"custom/screenshot"
"tray"
"hyprland/workspaces"
];
modules-center = [ "hyprland/window" ];
modules-right = [
"mpris"
"pulseaudio"
"network"
"clock"
];
mpris = {
format = "{player_icon}{status_icon} <small><i>[{position}/{length}]</i></small> {title} - {artist}";
tooltip-format = "{player_icon}{status_icon} [{position}/{length}] {title} - {artist}";
title-len = 20;
artist-len = 10;
interval = 1;
player-icons = {
default = "";
mpv = "🎵 ";
spotify = " ";
};
status-icons = {
playing = "";
stopped = "󰓛";
paused = "󰏤";
};
on-click-middle = "playerctld shift";
};
battery = {
interval = 30;
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = " {icon} {capacity}%";
format-icons = [ " " " " " " " " ];
max-length = 25;
};
pulseaudio = {
format = "{icon} <b>{volume}</b>";
format-bluetooth = " ";
format-bluetooth-muted = " ";
format-muted = "";
format-icons = {
default = [ "" "󰕾" "" ];
};
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
};
network = {
format-wifi = "󰖩 {essid}";
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
format-ethernet = "󰈀 wired";
format-disconnected = "";
tooltip-format = "{ifname} via {gwaddr} ";
tooltip-format-wifi = "{essid} ({signalStrength}%) ";
tooltip-format-ethernet = "{ifname} ";
tooltip-format-disconnected = "Disconnected";
};
clock = {
format = "󰃰 {:%d.%m.%y 󰇙 %H:%M}";
};
"custom/icon" = {
format = " ";
# on-click = "${config.lily.wlogout.logoutlaunch}/bin/logoutlaunch";
};
"custom/screenshot" = {
format = " ";
on-click = "GRIM_DEFAULT_DIR=${config.xdg.configHome}/../Pictures/Screenshots ${pkgs.grim}/bin/grim";
};
"custom/separator" = {
format = " ";
};
"hyprland/workspaces" = {
format = "<span color=\"#b4befe\">{icon}</span>"; # lavender
tooltip = false;
all-outputs = false;
current-only = true;
sort-by-number = true;
persistent-workspaces = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
};
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "<span color=\"#74c7ec\">󰊠</span>"; # sapphire
urgent = "<span color=\"#74c7ec\"></span>"; # sapphire
active = "<span color=\"#89b4fa\">󰮯</span>"; # blue
default = "";
};
};
"hyprland/window" = {
format = "{}";
rewrite = {
"" = "There is no place like ~";
};
max-length = 200;
seperate-outputs = true;
};
};
};
};
# home.file.".config/waybar/themes/theme.css" = { source = ./themes/Catppuccin-Mocha.css; };
};
}

View file

@ -0,0 +1,203 @@
{ pkgs, config, lib, ... }:
let
cfg = config.lily.waybar;
in
{
options.lily.waybar.enable = lib.mkEnableOption "activate waybar";
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
pavucontrol
networkmanagerapplet
blueman
];
programs.waybar = {
enable = true;
style = ./style.css;
settings = {
mainBar = {
layer = "top";
position = "top";
mode = "dock";
height = 40;
tray.icon-size = 15;
modules-left = [
"custom/icon"
"custom/separator"
"cpu"
"memory"
"temperature"
"battery"
"custom/separator"
"custom/separator"
"custom/screenshot"
"tray"
"hyprland/workspaces"
];
modules-center = [ "hyprland/window" ];
modules-right = [
"mpris"
"pulseaudio"
"network"
"bluetooth"
"custom/wallchange"
"custom/themechange"
"clock"
];
mpris = {
format = "{player_icon}{status_icon} <small><i>[{position}/{length}]</i></small> {title} - {artist}";
tooltip-format = "{player_icon}{status_icon} [{position}/{length}] {title} - {artist}";
title-len = 20;
artist-len = 10;
interval = 1;
player-icons = {
default = "";
mpv = "🎵 ";
spotify = " ";
};
status-icons = {
playing = "";
stopped = "󰓛";
paused = "󰏤";
};
on-click-middle = "playerctld shift";
};
cpu = {
interval = 10;
format = " {usage}";
max-length = 10;
};
memory = {
interval = 30;
format = " {used:0.1f}G";
max-length = 10;
};
temperatures = {
thermal-zone = 0;
critical-threshold = 90;
format-critical = " {temperatureC}°C";
format = " {temperatureC}°C";
};
battery = {
interval = 30;
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = " {icon} {capacity}%";
format-icons = [ " " " " " " " " ];
max-length = 25;
};
pulseaudio = {
format = "{icon} <b>{volume}</b>";
format-bluetooth = " ";
format-bluetooth-muted = " ";
format-muted = "";
format-icons = {
default = [ "" "󰕾" "" ];
};
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
};
network = {
format-wifi = "󰖩 {essid}";
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
format-ethernet = "󰈀 wired";
format-disconnected = "";
tooltip-format = "{ifname} via {gwaddr} ";
tooltip-format-wifi = "{essid} ({signalStrength}%) ";
tooltip-format-ethernet = "{ifname} ";
tooltip-format-disconnected = "Disconnected";
};
bluetooth = {
tooltip = true;
on-click = "${pkgs.blueman}/bin/blueman-manager";
};
clock = {
format = "󰃰 {:%d.%m.%y 󰇙 %H:%M}";
};
"custom/icon" = {
format = " ";
# on-click = "${config.lily.wlogout.logoutlaunch}/bin/logoutlaunch";
};
"custom/screenshot" = {
format = " ";
on-click = "GRIM_DEFAULT_DIR=${config.xdg.configHome}/../Pictures/Screenshots ${pkgs.grim}/bin/grim";
};
"custom/separator" = {
format = " ";
};
# "custom/wallchange" = {
# format = "󰉼 {}";
# tooltip = true;
# exec = "echo ; echo 󰆊 switch wallpaper";
# on-click = "${inputs.wall-utils.packages.${pkgs.system}.wall-utils}/bin/wall-utils next";
# on-click-right = "${inputs.wall-utils.packages.${pkgs.system}.wall-utils}/bin/wall-utils previous";
# on-click-middle = "${inputs.wall-utils.packages.${pkgs.system}.wall-utils}/bin/wall-utils select";
# # interval = 3600; # once every day
# };
"hyprland/workspaces" = {
format = "<span color=\"#b4befe\">{icon}</span>"; # lavender
tooltip = false;
all-outputs = false;
current-only = true;
sort-by-number = true;
persistent-workspaces = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
};
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "<span color=\"#74c7ec\">󰊠</span>"; # sapphire
urgent = "<span color=\"#74c7ec\"></span>"; # sapphire
active = "<span color=\"#89b4fa\">󰮯</span>"; # blue
default = "";
};
};
"hyprland/window" = {
format = "{}";
rewrite = {
"" = "There is no place like ~";
};
max-length = 200;
seperate-outputs = true;
};
};
};
};
home.file.".config/waybar/themes/theme.css" = { source = ./themes/Catppuccin-Mocha.css; };
};
}

View file

@ -0,0 +1,108 @@
* {
/* `otf-font-awesome` and SpaceMono Nerd Font are required to be installed for icons */
font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
font-size: 15px;
transition: background-color .3s ease-out;
}
window#waybar {
background: rgba(26, 27, 38, 0);
border: none;
color: #c0caf5;
font-family:
SpaceMono Nerd Font,
feather;
transition: background-color .5s;
}
.modules-left,
.modules-center,
.modules-right
{
background: rgba(0, 0, 8, 1);
margin: 5px 10px;
padding: 0 5px;
border-radius: 15px;
}
.modules-left {
padding: 0;
}
.modules-center {
padding: 0 10px;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#language,
#mpd {
padding: 0 10px;
border-radius: 15px;
}
#clock:hover,
#battery:hover,
#cpu:hover,
#memory:hover,
#disk:hover,
#temperature:hover,
#backlight:hover,
#network:hover,
#pulseaudio:hover,
#wireplumber:hover,
#custom-media:hover,
#tray:hover,
#mode:hover,
#idle_inhibitor:hover,
#scratchpad:hover,
#power-profiles-daemon:hover,
#language:hover,
#mpd:hover {
background: rgba(26, 27, 38, 0.9);
}
#workspaces button {
background: transparent;
font-family:
SpaceMono Nerd Font,
feather;
font-weight: 900;
font-size: 13pt;
color: #c0caf5;
border:none;
border-radius: 15px;
}
#workspaces button.active {
background: #13131d;
}
#workspaces button:hover {
background: #11111b;
color: #cdd6f4;
box-shadow: none;
}
#custom-arch {
margin-left: 5px;
padding: 0 10px;
font-size: 25px;
transition: color .5s;
}
#custom-arch:hover {
color: #1793d1;
}

View file

@ -0,0 +1,153 @@
* {
border: none;
border-radius: 0px;
font-family: "Iosevka Nerd Font";
font-weight: bold;
font-size: 13px;
min-height: 10px;
}
@import "themes/theme.css";
window#waybar {
border-bottom: 1px solid rgba(255,255, 255, 0.2);
border-left: 1px solid rgba(255, 255, 255, 0.2);
border-right: 1px solid rgba(255, 255, 255, 0.2);
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
background: @bar-bg;
}
tooltip {
background: @main-bg;
color: @main-fg;
border-radius: 7px;
border-width: 0px;
}
#cpu,
#battery,
#memory,
#temperature {
padding-left: 10px;
padding-right: 10px;
background-color: @wb-act-fg;
margin: 1px 0px 1px 0px;
}
#cpu {
border-radius: 10px 0px 0px 10px;
color: @maroon;
}
#memory {
color: @peach;
}
#temperature {
color: @yellow;
}
#memory,
#temperature {
border-radius: 0px;
}
#battery {
border-radius: 0px 10px 10px 0px;
color: @green;
}
#tray {
color: @sky;
}
#pulseaudio {
color: @rosewater;
}
#mpris {
color: @rosewater;
}
#network {
color: @flamingo;
}
#bluetooth {
color: @pink;
}
#custom-wallchange,
#custom-themechange {
color: @mauve;
}
#clock {
color: @mauve;
}
#bluetooth,
#clock,
#idle_inhibitor,
#language,
#mpris,
#network,
#pulseaudio,
#taskbar,
#tray,
#window,
#custom-icon,
#workspaces {
opacity: 1;
padding-left: 10px;
padding-right: 10px;
border-radius: 10px;
}
.modules-left,
.modules-right,
.modules-center {
color: @main-fg;
background: @main-bg;
border-radius: 10px;
margin-left: 2px;
margin-right: 2px;
margin-top: 2px;
margin-bottom: 2px;
}
#custom-icon {
color: @red;
font-weight: bold;
}
#custom-apt-update-icon,
#custom-screenshot
{
color: @teal;
}
#workspaces {
color: @main-fg;
background: @main-bg;
}
#workspaces button {
padding-left: 3px;
padding-right: 3px;
border-radius: 10px;
color: @main-fg;
transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.active {
background: @wb-act-fg;
color: @lavender;
margin-left: 3px;
padding-left: 12px;
margin-top: 2px;
margin-bottom: 2px;
padding-right: 12px;
margin-right: 3px;
}

View file

@ -0,0 +1,26 @@
@define-color bar-bg rgba(0, 0, 0, 0);
@define-color main-bg #dce0e8;
@define-color main-fg #4c4f69;
@define-color wb-act-bg #ccd0da;
@define-color wb-act-fg #bcc0cc;
@define-color wb-hvr-bg #acb0be;
@define-color wb-hvr-fg #6cd0da;
@define-color rosewater #dc8a78;
@define-color flamingo #dd7878;
@define-color pink #ea76cb;
@define-color mauve #8839ef;
@define-color red #d20f39;
@define-color maroon #e64553;
@define-color peach #fe640b;
@define-color yellow #df8e1d;
@define-color green #40a02b;
@define-color teal #179299;
@define-color sky #04a5e5;
@define-color sapphire #209fb5;
@define-color blue #1e66f5;
@define-color lavender #7287fd;

View file

@ -0,0 +1,25 @@
@define-color bar-bg rgba(0, 0, 0, 0);
@define-color main-bg #11111b;
@define-color main-fg #cdd6f4;
@define-color wb-act-bg #a6adc8;
@define-color wb-act-fg #313244;
@define-color wb-hvr-bg #f5c2e7;
@define-color wb-hvr-fg #313244;
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;

View file

@ -0,0 +1,26 @@
@define-color bar-bg rgba(0, 0, 0, 0);
@define-color main-bg #11111b;
@define-color main-fg #cdd6f4;
@define-color wb-act-bg #a6adc8;
@define-color wb-act-fg #313244;
@define-color wb-hvr-bg #f5c2e7;
@define-color wb-hvr-fg #313244;
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;