aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/waybar/executable_dock-status.sh
diff options
context:
space:
mode:
Diffstat (limited to 'dot_config/waybar/executable_dock-status.sh')
-rw-r--r--dot_config/waybar/executable_dock-status.sh27
1 files changed, 27 insertions, 0 deletions
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