Make waybar more configurable

This commit is contained in:
Riley Apeldoorn 2023-06-13 11:30:19 +02:00 committed by Riley Apeldoorn
parent 255d76da31
commit 369ad06b76
3 changed files with 175 additions and 130 deletions

View file

@ -1,131 +1,164 @@
{ ... }: {
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "sway-session.target";
{ config, lib, ... }:
let cfg = config.custom.gui.bar;
in {
options.custom.gui.bar = with lib; with types; {
network.wifi = lib.mkOption {
type = str;
default = "";
};
network.eth = lib.mkOption {
type = str;
default = "";
};
network.vpn = lib.mkOption {
type = str;
default = "";
};
audio.wireplumber = lib.mkOption {
type = bool;
default = true;
};
settings = [{
layer = "top";
modules-left = [
"sway/workspaces"
"sway/mode"
];
modules-right = [
"cpu"
"disk"
"wireplumber"
"network#wifi"
"network#eth"
"clock#date"
"clock#time"
];
"clock#time" = {
"format" = "{:%H:%M:%S}";
"interval" = 1;
};
"clock#date" = {
"format" = "{:%Y-%m-%d}";
"interval" = 60;
};
"network#wifi" = {
"interface" = "wlp6s0";
};
"network#eth" = {
"interface" = "enp9s0";
};
"wireplumber" = {
"format" = "{node_name}: {volume}%";
};
"disk" = {
"format" = "{used} :: {free}";
};
}];
style = ''
* {
font-family: 'Fira Code';
font-weight: 700;
font-size: 12px;
}
window#waybar {
background-color: rgba(0,0,0,0.7);
}
#workspaces {
margin-left: 5px;
background-color: rgba(0, 0, 0, 0.6);
padding: 0;
margin: 5px;
border-radius: 200px;
}
#workspaces button {
color: #ffffff;
margin: 0;
padding: 0 5px;
border-radius: 100px;
font-size: 0;
background-color: rgba(0, 0, 0, 0.4);
}
#workspaces button.visible.focused {
background-color: #ff4787;
}
#workspaces button.visible {
color: #ffffff;
background-color: rgba(207, 207, 207, 0.4);
}
#mode {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
background-color: #1bcf9c;
font-weight: 600;
}
#clock {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
color: #ffffff;
background-color: #3988e3;
}
#clock.date {
background-color: transparent;
}
#network {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
background-color: #27e67a;
}
#wireplumber {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
background-color: #edd340;
}
#wireplumber.muted {
color: #ffffff;
background-color: rgba(207, 207, 207, 0.4);
}
#cpu, #disk {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
color: #ffffff;
background-color: rgba(0, 0, 0, 0.4);
}
'';
};
config = {
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "sway-session.target";
};
settings = [{
layer = "top";
modules-left = [
"sway/workspaces"
"sway/mode"
];
modules-right = lib.flatten [
"cpu"
"disk"
(lib.optional (cfg.network.wifi != "") "network#wifi")
(lib.optional (cfg.network.eth != "") "network#eth")
(lib.optional (cfg.network.vpn != "") "network#vpn")
(if cfg.audio.wireplumber
then "wireplumber"
else "pulseaudio")
"clock#date"
"clock#time"
];
"clock#time" = {
"format" = "{:%H:%M:%S}";
"interval" = 1;
};
"clock#date" = {
"format" = "{:%Y-%m-%d}";
"interval" = 60;
};
"network#wifi" = {
"interface" = cfg.network.wifi;
};
"network#eth" = {
"interface" = cfg.network.eth;
};
"network#vpn" = {
"interface" = cfg.network.vpn;
};
"wireplumber" = {
"format" = "{node_name}: {volume}%";
};
"disk" = {
"format" = "{used} :: {free}";
};
}];
style = ''
* {
font-family: 'Fira Code';
font-weight: 700;
font-size: 12px;
}
window#waybar {
background-color: rgba(0,0,0,0.7);
}
#workspaces {
margin-left: 5px;
background-color: rgba(0, 0, 0, 0.6);
padding: 0;
margin: 5px;
border-radius: 200px;
}
#workspaces button {
color: #ffffff;
margin: 0;
padding: 0 5px;
border-radius: 100px;
font-size: 0;
background-color: rgba(0, 0, 0, 0.4);
}
#workspaces button.visible.focused {
background-color: #ff4787;
}
#workspaces button.visible {
color: #ffffff;
background-color: rgba(207, 207, 207, 0.4);
}
#mode {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
background-color: #1bcf9c;
font-weight: 600;
}
#clock {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
color: #ffffff;
background-color: #3988e3;
}
#clock.date {
background-color: transparent;
}
#network {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
background-color: #27e67a;
}
#wireplumber, #pulseaudio {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
background-color: #edd340;
}
#wireplumber.muted, #pulseaudio.muted {
color: #ffffff;
background-color: rgba(207, 207, 207, 0.4);
}
#cpu, #disk {
padding: 2px 10px;
margin: 5px;
border-radius: 100px;
color: #ffffff;
background-color: rgba(0, 0, 0, 0.4);
}
'';
};
};
}

View file

@ -11,7 +11,14 @@
home-manager.enable = false;
};
custom.gui.enable = true;
custom.gui = {
enable = true;
bar = {
network.wifi = "wlp0s20f3";
network.vpn = "wg-dev";
audio.wireplumber = false;
};
};
xdg.systemDirs.data = [ "/usr/share" "/usr/local/share" ];
fonts.fontconfig.enable = true;

View file

@ -1,5 +1,10 @@
{ ... }:
{
custom.gui.enable = true;
custom.gui = {
enable = true;
bar = {
network.eth = "enp9s0";
};
};
}