blob: 43d2a9a0fef56900c378c60f46c533cece7645fe (
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#!/bin/bash
# A script to manage the volume on my system universally
# Depends on: bash, pactl, libnotify
# By David Penkowoj, 2024-09-16
memfile="/tmp/$(whoami)-volctl.memtxt"
# Headphones
def_sink="$(pactl get-default-sink)"
sink_volume="$(pactl get-sink-volume "$def_sink" | grep -o [0-9]*% | head -n 1)"
# Microphone
def_source="$(pactl get-default-source)"
source_volume="$(pactl get-source-volume "$def_source" | grep -o [0-9]*% | head -n 1)"
# Send notification
notify_volume() {
v="$2"
if [ "$2" == "0%" ]; then
v="muted"
fi
notify-send -u low -r "110" "$1 volume: $v"
}
# Toggle headphones volume
toggle_deaf() {
newvol="0%"
if [ "$sink_volume" == "0%" ]; then
newvol="$(<"$memfile")"
pactl set-sink-volume "$def_sink" "$newvol"
else
echo "$sink_volume" > "$memfile"
pactl set-sink-volume "$def_sink" 0%
fi
# notify_volume "Output" "$newvol"
}
# Toggle microphone volume
toggle_mute() {
newvol="0%"
if [ "$source_volume" == "0%" ]; then
pactl set-source-volume "$def_source" 70%
newvol="70%"
else
pactl set-source-volume "$def_source" 0%
fi
notify_volume "Input" "$newvol"
}
# Decide what to do
case "$1" in
"up")
pactl set-sink-volume "$def_sink" +5%
;;
"down")
pactl set-sink-volume "$def_sink" -5%
;;
"deaf")
toggle_deaf
;;
"mute")
toggle_mute
;;
"get")
printf "In: %s, Out: %s\n" "$source_volume" "$sink_volume"
;;
*)
printf "[ Error ] Usage: volctl [up|down|deaf|mute|get]"
exit 1
;;
esac
|