diff options
| author | 2026-05-13 13:43:30 +0100 | |
|---|---|---|
| committer | 2026-05-13 13:43:30 +0100 | |
| commit | 79de974d7a658d2a8f3e27f5af10e7d918c5de44 (patch) | |
| tree | 9f4810eb28948d48dc44bcd564e12fd9ff492896 /dot_config/waybar | |
| parent | 7c0e7252eefd539345b7bd5b3ce955bc75307162 (diff) | |
| download | dotfiles-79de974d7a658d2a8f3e27f5af10e7d918c5de44.tar.gz dotfiles-79de974d7a658d2a8f3e27f5af10e7d918c5de44.tar.bz2 dotfiles-79de974d7a658d2a8f3e27f5af10e7d918c5de44.zip | |
feat(waybar): add dock indicator next to battery
Detects the ThinkPad USB-C Dock Gen2 by its built-in ethernet adapter
(USB 17ef:a387) — the dock's USB hubs share product IDs with internal
ThinkPad hubs but the ethernet only exists when the dock is attached.
The custom/dock module sits to the left of battery; collapses to empty
text when undocked so the bar stays clean on the go. Green dock glyph
when docked.
Diffstat (limited to 'dot_config/waybar')
| -rw-r--r-- | dot_config/waybar/config.jsonc | 8 | ||||
| -rw-r--r-- | dot_config/waybar/executable_dock-status.sh | 27 | ||||
| -rw-r--r-- | dot_config/waybar/style.css | 5 |
3 files changed, 40 insertions, 0 deletions
diff --git a/dot_config/waybar/config.jsonc b/dot_config/waybar/config.jsonc index 6d4f287..2270b42 100644 --- a/dot_config/waybar/config.jsonc +++ b/dot_config/waybar/config.jsonc @@ -10,6 +10,7 @@ "temperature", "custom/memory", "network#bond", + "custom/dock", "battery", "privacy", "custom/webcam", @@ -181,6 +182,13 @@ "tooltip": true, }, + "custom/dock": { + "exec": "~/.config/waybar/dock-status.sh", + "return-type": "json", + "interval": 5, + "tooltip": true, + }, + "custom/notifications": { "exec": "~/.config/waybar/mako-status.sh", "return-type": "json", diff --git a/dot_config/waybar/executable_dock-status.sh b/dot_config/waybar/executable_dock-status.sh new file mode 100644 index 0000000..501bb7d --- /dev/null +++ b/dot_config/waybar/executable_dock-status.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# Detect a Lenovo ThinkPad USB-C Dock Gen2 by its distinctive built-in +# ethernet adapter (17ef:a387). The dock's USB hubs share product IDs +# with internal ThinkPad hubs on some models, but the ethernet is only +# present when the dock is physically attached. +# +# Output is a single waybar JSON record. When undocked, "text" is empty +# so waybar collapses the module — no clutter on the bar when on the go. + +set -eu + +docked=0 +for dev in /sys/bus/usb/devices/*/; do + [ -f "$dev/idVendor" ] && [ -f "$dev/idProduct" ] || continue + v=$(cat "$dev/idVendor") + p=$(cat "$dev/idProduct") + if [ "$v" = "17ef" ] && [ "$p" = "a387" ]; then + docked=1 + break + fi +done + +if [ "$docked" -eq 1 ]; then + printf '{"text":"","tooltip":"Docked: ThinkPad USB-C Dock Gen2","class":"docked","alt":"docked"}\n' +else + printf '{"text":"","tooltip":"Undocked","class":"undocked","alt":"undocked"}\n' +fi diff --git a/dot_config/waybar/style.css b/dot_config/waybar/style.css index 71c8b3d..f0d764d 100644 --- a/dot_config/waybar/style.css +++ b/dot_config/waybar/style.css @@ -49,6 +49,7 @@ window#waybar { #custom-memory, #custom-wifi, #custom-webcam, +#custom-dock, #custom-notifications, #custom-thunderbird { padding: 0 6px; @@ -123,6 +124,10 @@ window#waybar { color: #fb4934; /* red — only rendered when webcam is in use */ } +#custom-dock.docked { + color: #b8bb26; /* green — desk mode */ +} + #custom-notifications { color: #928374; /* gray baseline */ } |
