diff --git a/.config/waybar/base.jsonc##hostname.viking-mate b/.config/waybar/base.jsonc##hostname.viking-mate index 173954b..e65f765 100644 --- a/.config/waybar/base.jsonc##hostname.viking-mate +++ b/.config/waybar/base.jsonc##hostname.viking-mate @@ -181,6 +181,39 @@ "format": "{text}", "tooltip": true }, + // --- NEW: Mic (PipeWire/WirePlumber) --- + "custom/mic": { + "exec": "$HOME/.config/waybar/scripts/mic_status.sh", + "return-type": "json", + "interval": 2, + "on-click": "$HOME/.config/waybar/scripts/mic_toggle.sh", + "tooltip": true + }, + + // --- NEW: Touchpad toggle --- + "custom/touchpad": { + "exec": "$HOME/.config/waybar/scripts/touchpad_status.sh", + "return-type": "json", + "interval": 5, + "on-click": "$HOME/.config/waybar/scripts/touchpad_toggle.sh", + "tooltip": true + }, + + // --- NEW: Temperatures (built-in waybar temperature) --- + "temperature": { + "critical-threshold": 90, + "format": " {temperatureC}°C", + "hwmon-path": "/sys/class/thermal/thermal_zone0/temp", + "tooltip": true + }, + + // --- NEW: Backlight --- + "backlight": { + "format": " {percent}%", + "on-scroll-up": "brightnessctl set +5%", + "on-scroll-down": "brightnessctl set 5%-", + "tooltip": true + }, // Performance (same concept as desktop) "custom/performance": { diff --git a/.config/waybar/conf.d/laptop.jsonc##hostname.viking-mate b/.config/waybar/conf.d/laptop.jsonc##hostname.viking-mate index 4a5d30e..a83a9a4 100644 --- a/.config/waybar/conf.d/laptop.jsonc##hostname.viking-mate +++ b/.config/waybar/conf.d/laptop.jsonc##hostname.viking-mate @@ -4,10 +4,12 @@ "height": 32, "spacing": 8, - "modules-left": ["hyprland/workspaces", "hyprland/window"], - "modules-center": ["privacy", "mpris"], + "modules-left": ["hyprland/workspaces", "hyprland/window", "privacy"], + "modules-center": [], "modules-right": [ "group/sys", + "custom/mic", + "temperature", "network", "backlight", "custom/kbdlight", @@ -17,10 +19,7 @@ "custom/bt", "custom/airplane", "battery", - "custom/batteryhealth", - "power-profiles-daemon", - "custom/performance", - "custom/hyprsunset", + "custom/touchpad", "tray", "clock" ], @@ -35,7 +34,7 @@ "click-to-reveal": true, "transition-left-to-right": false }, - "modules": ["custom/sys", "cpu", "memory", "custom/temps", "disk#root"] + "modules": ["custom/sys", "cpu", "memory", "custom/temps", "disk#root", "custom/batteryhealth", "power-profiles-daemon", "custom/performance", "custom/hyprsunset"] } } diff --git a/.config/waybar/scripts/mic_status.sh b/.config/waybar/scripts/mic_status.sh new file mode 100755 index 0000000..90bacbc --- /dev/null +++ b/.config/waybar/scripts/mic_status.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Prints JSON for Waybar showing mic muted/unmuted +set -euo pipefail +is_muted=$(wpctl get-mute @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}') +vol=$(wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{printf("%.0f", $2*100)}' || echo 0) + +if [[ "$is_muted" == "true" ]]; then + echo '{"text":"","tooltip":"Mic: muted","class":"muted"}' +else + echo "{\"text\":\" ${vol}%\",\"tooltip\":\"Mic: ${vol}%\",\"class\":\"live\"}" +fi + diff --git a/.config/waybar/scripts/mic_toggle.sh b/.config/waybar/scripts/mic_toggle.sh new file mode 100755 index 0000000..a747b76 --- /dev/null +++ b/.config/waybar/scripts/mic_toggle.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle + diff --git a/.config/waybar/scripts/touchpad_status.sh b/.config/waybar/scripts/touchpad_status.sh new file mode 100755 index 0000000..3e9258a --- /dev/null +++ b/.config/waybar/scripts/touchpad_status.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail +dev="$(hyprctl -j devices | jq -r '.touchpads[0].name')" +if [[ -z "$dev" || "$dev" == "null" ]]; then + echo '{"text":"󰍽","tooltip":"No touchpad detected","class":"absent"}' + exit 0 +fi +state=$(hyprctl getoption "device:$dev:enabled" -j | jq -r '.int') +if [[ "$state" -eq 1 ]]; then + echo '{"text":"󰍿","tooltip":"Touchpad: enabled","class":"on"}' +else + echo '{"text":"󰜭","tooltip":"Touchpad: disabled","class":"off"}' +fi + diff --git a/.config/waybar/scripts/touchpad_toggle.sh b/.config/waybar/scripts/touchpad_toggle.sh new file mode 100755 index 0000000..0d61237 --- /dev/null +++ b/.config/waybar/scripts/touchpad_toggle.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Toggles touchpad using Hyprland device keyword. +set -euo pipefail +dev="$(hyprctl -j devices | jq -r '.touchpads[0].name')" +[[ -z "$dev" || "$dev" == "null" ]] && exit 0 +state=$(hyprctl getoption "device:$dev:enabled" -j | jq -r '.int') +if [[ "$state" -eq 1 ]]; then + hyprctl keyword "device:$dev:enabled" 0 + notify-send -a waybar "Touchpad" "Disabled" +else + hyprctl keyword "device:$dev:enabled" 1 + notify-send -a waybar "Touchpad" "Enabled" +fi + diff --git a/.config/waybar/style.css##default b/.config/waybar/style.css##default index 144d454..4cb289f 100644 --- a/.config/waybar/style.css##default +++ b/.config/waybar/style.css##default @@ -180,4 +180,12 @@ window#waybar.bar-hdmi .module { color: @warning_color; } +/* Mic / Touchpad state tinting */ +#custom-mic.muted { opacity: 0.6; } +#custom-touchpad.off { opacity: 0.6; } +#temperature.critical { color: #FFCC33; font-weight: 600; } + +/* Backlight spacing */ +#backlight { padding: 0 6px; border-right: 1px solid @border_main; } +#custom-mic, #custom-touchpad { padding: 0 6px; }