Update waybar

This commit is contained in:
Tyler 2025-10-03 18:57:00 -04:00
parent dd26b79bdd
commit d09224cb3b
Signed by: tyler
GPG Key ID: 03B27509E17EFDC8
2 changed files with 444 additions and 117 deletions

View File

@ -1,74 +1,77 @@
{ {
// Waybar reads JSONC and is styled via CSS.
// niri has a native workspaces module "niri/workspaces".
// Save as: ~/.config/waybar/config.jsonc
"layer": "top", "layer": "top",
"position": "top", "position": "top",
"height": 28,
"gtk-layer-shell": true,
"modules-left": [ "modules-left": [
"niri/workspaces", "niri/workspaces",
"custom/arrow10"
], ],
"modules-center": [
],
"modules-right": [ "modules-right": [
"custom/weather", "custom/arrow9",
"custom/loadavg",
"custom/docker",
"cpu",
"memory",
"pulseaudio", "pulseaudio",
"bluetooth", "custom/arrow8",
"network",
"custom/arrow7",
"memory",
"custom/arrow6",
"cpu",
"custom/arrow5",
"temperature",
"custom/arrow4",
"battery", "battery",
"custom/arrow3",
"custom/docker",
"custom/arrow2",
"tray", "tray",
"clock" "clock#date",
"custom/arrow1",
"clock#time"
], ],
// ----- niri workspaces ----- // Modules
"battery": {
"interval": 10,
"states": {
"warning": 30,
"critical": 15
},
"format-time": "{H}:{M:02}",
"format": "{icon} {capacity}% ({time})",
"format-charging": " {capacity}% ({time})",
"format-charging-full": " {capacity}%",
"format-full": "{icon} {capacity}%",
"format-alt": "{icon} {power}W",
"format-icons": [
"",
"",
"",
"",
""
],
"tooltip": false
},
"clock#time": {
"interval": 10,
"format": "{:%H:%M}",
"tooltip": false
},
"clock#date": {
"interval": 20,
"format": "{:%e %b %Y}",
"tooltip": false
//"tooltip-format": "{:%e %B %Y}"
},
"niri/workspaces": { "niri/workspaces": {
"format": "{name}", "format": "{name}",
"on-click": "niri msg action toggle-overview", "on-click": "niri msg action toggle-overview",
"disable-scroll": false "disable-scroll": false
}, },
// ----- CPU / Memory -----
"cpu": {
"interval": 3,
"format": " {usage:>2}%"
},
"memory": {
"interval": 5,
"format": " {used:0.1f}G"
},
// ----- Clock / Date -----
"clock": {
"interval": 1,
"format": " {:%a %b %d}  {:%H:%M:%S}",
"tooltip": false
},
// ----- Loadavg (custom) -----
"custom/loadavg": {
"exec": "awk '{printf \" %s\", $1}' /proc/loadavg",
"interval": 5,
"return-type": "text",
"tooltip": false
},
// ----- IP (custom) -----
// Shows first non-loopback IPv4; adjust if you prefer a specific iface.
"custom/ip": {
"exec": "ip -4 -o addr show scope global | awk '{print $4}' | cut -d/ -f1 | head -n1 | awk '{print \" \"$1}'",
"interval": 15,
"return-type": "text",
"tooltip": "ip -4 -o addr show"
},
// ----- Docker (custom) -----
"custom/docker": { "custom/docker": {
"exec": "printf \" %s\" \"$(docker ps -q 2>/dev/null | wc -l)\"", "exec": "printf \" %s\" \"$(docker ps -q 2>/dev/null | wc -l)\"",
"interval": 10, "interval": 10,
@ -76,30 +79,140 @@
"tooltip": "docker ps" "tooltip": "docker ps"
}, },
// ----- Bluetooth (native) ----- "cpu": {
"bluetooth": { "interval": 1,
"format": "{status}", "tooltip": false,
"format-disabled": " off", "format": " {usage}%",
"format-connected": " {num_connections}", "format-alt": " {load}",
"on-click": "blueman-manager"
},
// ----- Battery -----
"battery": {
"interval": 15,
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-icons": ["", "", "", "", ""],
"states": { "states": {
"warning": 25, "warning": 70,
"critical": 10 "critical": 90
} }
}, },
// ----- System tray ----- "memory": {
"interval": 5,
"format": "{used:0.1f}G/{total:0.1f}G",
"states": {
"warning": 70,
"critical": 90
},
"tooltip": false
},
"network": {
"interval": 5,
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": "{ifname}",
"format-disconnected": "No connection",
"format-alt": " {ipaddr}/{cidr}",
"tooltip": false
},
"sway/mode": {
"format": "{}",
"tooltip": false
},
"sway/window": {
"format": "{}",
"max-length": 30,
"tooltip": false
},
"sway/workspaces": {
"disable-scroll-wraparound": true,
"smooth-scrolling-threshold": 4,
"enable-bar-scroll": true,
"format": "{name}"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-bluetooth": "{icon} {volume}%",
"format-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
},
"scroll-step": 1,
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"tooltip": false
},
"temperature": {
"critical-threshold": 90,
"interval": 5,
"format": "{icon} {temperatureC}°",
"format-icons": [
"",
"",
"",
"",
""
],
"tooltip": false
},
"tray": { "tray": {
"icon-size": 16, "icon-size": 18
"spacing": 6 //"spacing": 10
},
"custom/arrow1": {
"format": "",
"tooltip": false
},
"custom/arrow2": {
"format": "",
"tooltip": false
},
"custom/arrow3": {
"format": "",
"tooltip": false
},
"custom/arrow4": {
"format": "",
"tooltip": false
},
"custom/arrow5": {
"format": "",
"tooltip": false
},
"custom/arrow6": {
"format": "",
"tooltip": false
},
"custom/arrow7": {
"format": "",
"tooltip": false
},
"custom/arrow8": {
"format": "",
"tooltip": false
},
"custom/arrow9": {
"format": "",
"tooltip": false
},
"custom/arrow10": {
"format": "",
"tooltip": false
} }
} }
// vi:ft=jsonc

View File

@ -1,51 +1,265 @@
/* Waybar CSS — match your DWM palette + Hermit font */ /* Keyframes */
@keyframes blink-critical {
to {
/*color: @white;*/
background-color: @critical;
}
}
/* Styles */
/* Colors (gruvbox) */
@define-color black #282828;
@define-color red #cc241d;
@define-color green #98971a;
@define-color yellow #d79921;
@define-color blue #458588;
@define-color purple #b16286;
@define-color aqua #689d6a;
@define-color gray #a89984;
@define-color brgray #928374;
@define-color brred #fb4934;
@define-color brgreen #b8bb26;
@define-color bryellow #fabd2f;
@define-color brblue #83a598;
@define-color brpurple #d3869b;
@define-color braqua #8ec07c;
@define-color white #ebdbb2;
@define-color bg2 #504945;
@define-color warning @bryellow;
@define-color critical @red;
@define-color mode @black;
@define-color unfocused @bg2;
@define-color focused @braqua;
@define-color inactive @purple;
@define-color sound @brpurple;
@define-color network @purple;
@define-color memory @braqua;
@define-color cpu @green;
@define-color temp @brgreen;
@define-color layout @bryellow;
@define-color battery @aqua;
@define-color date @black;
@define-color time @white;
/* Reset all styles */
* { * {
font-family: Hermit, monospace; border: none;
font-size: 11pt; border-radius: 0;
min-height: 0;
margin: 0;
padding: 0;
box-shadow: none;
text-shadow: none;
icon-shadow: none;
} }
window#waybar { /* The whole bar */
background: #222222; #waybar {
color: #eeeeee; background: rgba(40, 40, 40, 0.8784313725); /* #282828e0 */
border-bottom: 0px solid transparent; color: @white;
font-family: JetBrains Mono, Siji;
font-size: 10pt;
/*font-weight: bold;*/
} }
/* Each module */
#battery,
#clock,
#cpu,
#language,
#memory,
#mode,
#network,
#pulseaudio,
#temperature,
#tray,
#backlight,
#idle_inhibitor,
#disk,
#user,
#mpris {
padding-left: 8pt;
padding-right: 8pt;
}
/* Each critical module */
#mode,
#memory.critical,
#cpu.critical,
#temperature.critical,
#battery.critical.discharging {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-name: blink-critical;
animation-duration: 1s;
}
/* Each warning */
#network.disconnected,
#memory.warning,
#cpu.warning,
#temperature.warning,
#battery.warning.discharging {
color: @warning;
}
/* And now modules themselves in their respective order */
/* Current sway mode (resize etc) */
#mode {
color: @white;
background: @mode;
}
/* Workspaces stuff */
#workspaces button { #workspaces button {
padding: 0 6px; /*font-weight: bold;*/
margin: 0 3px; padding-left: 2pt;
border-radius: 6px; padding-right: 2pt;
background: #222222; color: @white;
color: #bbbbbb; background: @unfocused;
border: 1px solid #444444;
} }
#workspaces button.active {
background: #458588; /* your light blue accent */ /* Inactive (on unfocused output) */
color: #eeeeee; #workspaces button.visible {
border-color: #458588; color: @white;
background: @inactive;
} }
/* Active (on focused output) */
#workspaces button.focused {
color: @black;
background: @focused;
}
/* Contains an urgent window */
#workspaces button.urgent {
color: @black;
background: @warning;
}
/* Style when cursor is on the button */
#workspaces button:hover { #workspaces button:hover {
background: #444444; background: @black;
color: #eeeeee; color: @white;
} }
#cpu, #memory, #clock, #pulseaudio, #battery, #tray, #window {
#custom-weather, #custom-loadavg, #custom-ip, #custom-docker, #bluetooth { margin-right: 35pt;
padding: 0 10px; margin-left: 35pt;
margin: 0 4px;
border-radius: 8px;
background: #222222;
border: 1px solid #444444;
} }
#pulseaudio.muted { #pulseaudio {
color: #bbbbbb; background: @sound;
opacity: 0.7; color: @black;
}
#battery.warning {
color: #ffcc00;
}
#battery.critical {
color: #ff5555;
} }
#network {
background: @network;
color: @white;
}
#memory {
background: @memory;
color: @black;
}
#cpu {
background: @cpu;
color: @white;
}
#temperature {
background: @temp;
color: @black;
}
#language {
background: @layout;
color: @black;
}
#battery {
background: @battery;
color: @white;
}
#tray {
background: @date;
}
#clock.date {
background: @date;
color: @white;
}
#clock.time {
background: @time;
color: @black;
}
#custom-arrow1 {
font-size: 11pt;
color: @time;
background: @date;
}
#custom-arrow2 {
font-size: 11pt;
color: @date;
background: @layout;
}
#custom-arrow3 {
font-size: 11pt;
color: @layout;
background: @battery;
}
#custom-arrow4 {
font-size: 11pt;
color: @battery;
background: @temp;
}
#custom-arrow5 {
font-size: 11pt;
color: @temp;
background: @cpu;
}
#custom-arrow6 {
font-size: 11pt;
color: @cpu;
background: @memory;
}
#custom-arrow7 {
font-size: 11pt;
color: @memory;
background: @network;
}
#custom-arrow8 {
font-size: 11pt;
color: @network;
background: @sound;
}
#custom-arrow9 {
font-size: 11pt;
color: @sound;
background: transparent;
}
#custom-arrow10 {
font-size: 11pt;
color: @unfocused;
background: transparent;
}