updated waybar

This commit is contained in:
2025-08-29 00:58:18 +02:00
parent 52cc37a102
commit 02e48b7d1e
12 changed files with 275 additions and 102 deletions

40
waybar/scripts/audio.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
DEFAULT_SINK=$(pactl info | grep 'Default Sink' | cut -d ' ' -f3)
DESCRIPTION=$(pactl list sinks | grep -A2 "Name: $DEFAULT_SINK" | grep "Description:" | cut -d ' ' -f2-)
case $1 in
cycle)
SINKS=($(pactl list short sinks | awk '{print $2}'))
NUM_SINKS=${#SINKS[@]}
CURRENT_SINK=$(pactl info | grep 'Default Sink' | cut -d ' ' -f3)
for i in "${!SINKS[@]}"; do
if [[ "${SINKS[$i]}" == "$CURRENT_SINK" ]]; then
NEXT_INDEX=$(( (i + 1) % NUM_SINKS ))
pactl set-default-sink "${SINKS[$NEXT_INDEX]}"
exit 0
fi
done
;;
show)
TEXT=$(echo "$DESCRIPTION" | cut -c -20)
if [ -z "$DESCRIPTION" ]; then
DESCRIPTION=$DEFAULT_SINK
fi
CLASS=""
case $(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') in
yes)
CLASS="muted"
;;
no)
CLASS="unmuted"
;;
esac
printf '{"text": "%s", "tooltip": "%s", "class": "%s"}' "$TEXT" "$DESCRIPTION" "$CLASS"
;;
*)
echo "usage audio.sh {cycle|show}"
;;
esac

View File

@@ -109,7 +109,7 @@ if [ -n "$device_mac" ]; then
device_name=$(bluetoothctl info "$device_mac" | rg "Alias:" | cut -d ' ' -f 2-)
# Output in Waybar's JSON format
tooltip=$(bt-audio-info $device_mac)
echo "{\"text\": \"$device_name <span size='large'>󰂰</span>\", \"tooltip\": \"$tooltip\"}"
echo "{\"text\": \"$device_name <span size='large'>󰂰</span>\", \"tooltip\": \"$tooltip\"}"
else
# Output empty string when no device is connected
echo "{}"

18
waybar/scripts/cpu_info.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
USAGE=$(mpstat 1 1 | awk '/Average:/ {print 100 - $12}')
TEMP=$(cat /sys/class/hwmon/hwmon6/temp1_input)
TEXT="$(printf "%.1f" $(echo "$USAGE"))% TEMP: $(printf "%.1f" $(echo "scale=2; $TEMP"/1000 | bc -l))C"
CPU=$(lscpu | grep 'Model name' | awk -F': ' '{print $2}' | sed 's/^[ \t]*//')
TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk -v ncores=$(nproc) '{printf "%.1f%%\t%s\\n", $1/ncores, $2}')
CLASS=""
if (( $(echo "$USAGE > 95" | bc -l) )); then
CLASS="max"
elif (( $(echo "$USAGE > 75" | bc -l) )); then
CLASS="high"
else
CLASS="normal"
fi
echo "{\"text\":\"CPU: $TEXT\", \"tooltip\": \"$TOOLTIP\", \"class\":\"$CLASS\"}"

View File

@@ -1,7 +1,10 @@
#!/usr/bin/env sh
FORMAT_ACTIVATED="<span size='large'>󰊖</span>"
FORMAT_DEACTIVATED="<span size='large'></span>"
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
echo '{"text": "Gamemode", "tooltip": "Gamemode deactivated"}'
printf "{\"text\": \"$FORMAT_DEACTIVATED\", \"tooltip\": \"Gamemode deactivated\"}"
else
echo '{"text": "Gamemode", "tooltip": "Gamemode activated", "class": "active"}'
printf "{\"text\": \"$FORMAT_ACTIVATED\", \"tooltip\": \"Gamemode activated\", \"class\": \"active\"}"
fi

View File

@@ -1,18 +1,20 @@
#!/bin/bash
PID_FILE="/tmp/gpu-screen-recorder.pid"
FORMAT_RECORDING="<span size='large'></span>"
FORMAT_STOPPED="<span size='large'></span>"
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null; then
echo '{"text": "Replay", "tooltip": "Replay running", "class": "recording"}'
echo "{\"text\": \"$FORMAT_RECORDING\", \"tooltip\": \"Replay running\", \"class\": \"recording\"}"
else
# The process is not running, but the PID file exists.
# This can happen if the process crashed.
# We'll remove the stale PID file.
rm "$PID_FILE"
echo '{"text": "Replay", "tooltip": "Replay paused"}'
echo "{\"text\": \"$FORMAT_STOPPED\", \"tooltip\": \"Replay paused\"}"
fi
else
echo '{"text": "Replay", "tooltip": "Replay paused"}'
echo "{\"text\": \"$FORMAT_STOPPED\", \"tooltip\": \"Replay paused\"}"
fi

22
waybar/scripts/gpu_info.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
USAGE=$(cat /sys/class/drm/card1/device/gpu_busy_percent)
MEM_USED=$(cat /sys/class/drm/card1/device/mem_info_vram_used)
MEM_TOTAL=$(cat /sys/class/drm/card1/device/mem_info_vram_total)
EDGE_TEMP=$(cat /sys/class/drm/card1/device/hwmon/hwmon2/temp1_input)
JUNC_TEMP=$(cat /sys/class/drm/card1/device/hwmon/hwmon2/temp2_input)
MEM_TEMP=$(cat /sys/class/drm/card1/device/hwmon/hwmon2/temp3_input)
GPU=$(/opt/rocm/bin/rocm-smi --showproductname | grep "Card Series" | awk -F':' '{print $3}' | xargs)
TEXT="$USAGE% $(printf "%.1f" $(echo "scale=2; $MEM_USED/1024/1024/1024" | bc -l))/$(printf "%.1f" $(echo "scale=2; $MEM_TOTAL/1024/1024/1024" | bc -l))GB TEMP: $(printf "%.1f" $(echo "scale=2; $EDGE_TEMP/1000" | bc -l))/$(printf "%.1f" $(echo "scale=2; $JUNC_TEMP/1000" | bc -l))/$(printf "%.1f" $(echo "scale=2; $MEM_TEMP/1000" | bc -l))C"
RATIO=$(echo "$MEM_USED/ $MEM_TOTAL" | bc -l)
CLASS=""
if (( $(echo "$USAGE > 95" | bc -l) )); then
CLASS="max"
elif (( $(echo "$USAGE > 75" | bc -l) )); then
CLASS="high"
else
CLASS="normal"
fi
echo "{\"text\":\"GPU: $TEXT\", \"tooltip\": \"$GPU\", \"class\":\"$CLASS\"}"

18
waybar/scripts/memory.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
TOOLTIP=$(ps -eo rss,comm --sort=-rss | head -n 6 | sed '1d' | awk '{output = output sprintf("%.2f GB\t%s\\n", $1/1024/1024, $2)} END {printf "%s", output}')
TOTAL=$(awk '/MemTotal/ {printf "%.2f\n", $2/1024/1024}' /proc/meminfo)
USED=$(awk '/MemTotal/ {total=$2} /MemAvailable/ {available=$2} END {printf "%.2f\n", (total-available)/1024/1024}' /proc/meminfo)
RATIO=$(echo "$USED/ $TOTAL" | bc -l)
CLASS=""
if (( $(echo "$RATIO> 95" | bc -l) )); then
CLASS="max"
elif (( $(echo "$RATIO> 75" | bc -l) )); then
CLASS="high"
else
CLASS="normal"
fi
printf '{"text": "MEM: %s/%sGB", "tooltip": "%s", "class": "%s"}' "$USED" "$TOTAL" "$TOOLTIP" "$CLASS"

View File

@@ -6,8 +6,8 @@ MAC_ADDRESS="B4:23:A2:09:D3:53"
# --- END CONFIGURATION ---
not_connected() {
printf '{"text": "L: --- | R: ---", "tooltip": "Pixel Buds Pro 2 not connected", "class": "disconnected"}\n'
exit 0
printf "{\"text\": \"<span size='large'></span>\", \"tooltip\": \"Pixel Buds Pro 2 not connected\", \"class\": \"disconnected\"}\n"
exit
}
# This function gets the current status and formats it for Waybar.
@@ -27,7 +27,7 @@ get_status() {
if ([[ "$left_bud" == "unknown" ]] && [[ "$right_bud" == "unknown" ]]) || \
[[ -z "$left_bud" && -z "$right_bud" ]]; then
echo "{}"
exit 0
exit
fi
if [[ "$left_bud" == "unknown" ]]; then
@@ -67,6 +67,7 @@ get_status() {
# --- FORMAT OUTPUT ---
printf '{"text": "%s | %s | %s", "tooltip": "Pixel Buds Pro 2", "class": "%s"}\n' \
"$left_display" "$right_display" "$anc_icon" "$class"
exit
}
status() {
@@ -98,22 +99,28 @@ case "$1" in
esac
pbpctrl set anc "$next_mode"
sleep 0.1
exit
;;
connect)
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
notify-send "Pixel Buds Pro 2 are already connected"
exit
else
bluetoothctl connect "$MAC_ADDRESS" & disown
bluetoothctl connect "$MAC_ADDRESS"
exit
fi
;;
disconnect)
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
bluetoothctl disconnect "$MAC_ADDRESS" & disown
bluetoothctl disconnect "$MAC_ADDRESS"
exit
else
notify-send "Pixel Buds Pro 2 aren't connected"
exit
fi
;;
*)
status
exit
;;
esac