blob: 36cebca9d2821231dd1ad52055e275a95a167716 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/bin/sh
input_source() {
# Extract Audio Sources (POSIX-compliant)
audio_sources=$(wpctl status | awk '
/^Audio$/ {audio=1}
/^Video$/ {audio=0}
audio && /^ ├─ Sources:/ {flag=1; next}
flag && /^ ├─ Filters:/ {flag=0}
flag
')
# Extract default source (marked with '*') and remove '*'
default_source=$(echo "$audio_sources" | awk '/\*/ {sub(/\*/, ""); print}')
default_source=$(clean_line "$default_source")
# Extract other sources (excluding default) and format them cleanly
other_sources=$(echo "$audio_sources" | grep -v '\*' | while IFS= read -r line; do
clean_line "$line"
done)
# Combine and let user choose via dmenu
chosen_source=$(printf "%s\n" "$other_sources" | dmenu -i -p "Change default input from \"${default_source#* }\" to:")
# Extract the ID from the chosen source
chosen_id=$(echo "$chosen_source" | awk '{print $1}')
# Set the new default input source
if [ -n "$chosen_id" ]; then
wpctl set-default "$chosen_id"
notify-send "🎤Input Source Changed" "Now using: $chosen_source"
fi
}
clean_line() { echo "$1" | sed -e 's/^[[:space:]│]*//;s/[[:space:]]*$//;s/[[:space:]]*\[vol:.*\]//'; }
case $BLOCK_BUTTON in
1) input_source ;;
2) wpctl set-mute @DEFAULT_SOURCE@ toggle ;;
3)
notify-send "🎤 Microphone module" "\- Show current input source
- Left click to change input source
- Middle click to toggle mic"
;;
6) setsid -f "$TERMINAL" -e "$EDITOR" "$0" ;;
esac
mic="$(wpctl get-volume @DEFAULT_AUDIO_SOURCE@)"
if [ "$mic" != "${mic%\[MUTED\]}" ]; then
echo "😷"
else
echo "😲"
fi
|