feat(eww): add config

This commit is contained in:
2026-03-12 17:42:32 +01:00
parent adeb93bd24
commit c6eaad94ef
11 changed files with 1128 additions and 0 deletions

62
eww/scripts/volume.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# audio + brightness info for eww volume-popup
action="${1:-status}"
case "$action" in
status)
default_sink=$(pactl get-default-sink 2>/dev/null)
default_source=$(pactl get-default-source 2>/dev/null)
# get all sink+source info in one pactl call, extract volume/mute + device lists
all_data=$(pactl --format=json list sinks 2>/dev/null)
sinks=$(jq -c --arg d "$default_sink" \
'[.[] | {name: .description, sink_name: .name, active: (.name == $d)}]' <<< "$all_data" 2>/dev/null || echo '[]')
# extract default sink volume+mute
volume=$(jq --arg d "$default_sink" \
'[.[] | select(.name == $d)][0] | .volume | to_entries[0].value.value_percent | rtrimstr("%") | tonumber' <<< "$all_data" 2>/dev/null || echo 0)
muted=$(jq --arg d "$default_sink" \
'[.[] | select(.name == $d)][0].mute' <<< "$all_data" 2>/dev/null || echo false)
all_sources=$(pactl --format=json list sources 2>/dev/null)
sources=$(jq -c --arg d "$default_source" \
'[.[] | select(.name | test("monitor$") | not) | {name: .description, source_name: .name, active: (.name == $d)}]' <<< "$all_sources" 2>/dev/null || echo '[]')
mic_volume=$(jq --arg d "$default_source" \
'[.[] | select(.name == $d)][0] | .volume | to_entries[0].value.value_percent | rtrimstr("%") | tonumber' <<< "$all_sources" 2>/dev/null || echo 0)
mic_muted=$(jq --arg d "$default_source" \
'[.[] | select(.name == $d)][0].mute' <<< "$all_sources" 2>/dev/null || echo false)
brightness=$(brightnessctl -m 2>/dev/null | cut -d, -f5 | tr -d '%')
sink_count=$(jq 'length' <<< "$sinks" 2>/dev/null || echo 0)
source_count=$(jq 'length' <<< "$sources" 2>/dev/null || echo 0)
jq -nc \
--argjson volume "${volume:-0}" \
--argjson muted "${muted:-false}" \
--argjson mic_volume "${mic_volume:-0}" \
--argjson mic_muted "${mic_muted:-false}" \
--argjson brightness "${brightness:-0}" \
--argjson sinks "${sinks:-[]}" \
--argjson sources "${sources:-[]}" \
--argjson sink_count "${sink_count:-0}" \
--argjson source_count "${source_count:-0}" \
'{$volume,$muted,$mic_volume,$mic_muted,$brightness,$sinks,$sources,$sink_count,$source_count}'
;;
set-sink)
pactl set-default-sink "$2"
( data=$(~/.config/eww/scripts/volume.sh); eww update vol="$data" ) &
;;
set-source)
pactl set-default-source "$2"
( data=$(~/.config/eww/scripts/volume.sh); eww update vol="$data" ) &
;;
toggle-mute)
pamixer -t
( data=$(~/.config/eww/scripts/volume.sh); eww update vol="$data" ) &
;;
toggle-mic)
pamixer --default-source -t
( data=$(~/.config/eww/scripts/volume.sh); eww update vol="$data" ) &
;;
esac