Files
gh0stzk-dotfile/config/bspwm/scripts/Volume
T
2023-10-13 10:24:13 +05:45

71 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# ██╗ ██╗ ██████╗ ██╗ ██╗ ██╗███╗ ███╗███████╗
# ██║ ██║██╔═══██╗██║ ██║ ██║████╗ ████║██╔════╝
# ██║ ██║██║ ██║██║ ██║ ██║██╔████╔██║█████╗
# ╚██╗ ██╔╝██║ ██║██║ ██║ ██║██║╚██╔╝██║██╔══╝
# ╚████╔╝ ╚██████╔╝███████╗╚██████╔╝██║ ╚═╝ ██║███████╗
# ╚═══╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
#
# gh0stzk
# https://github.com/gh0stzk/dotfiles
# This script controls the volume of your system, using pamixer.
# 23.09.2023 09:30:24
#
# Icons
vol_dir="$HOME/.config/bspwm/assets"
notify_cmd='dunstify -u low -h string:x-dunst-stack-tag:cvolum'
# Get Volume
get_volume() {
pamixer --get-volume-human | sed 's/%//'
}
# Get icons
get_icon() {
current="$(get_volume)"
if [[ "$current" -eq "0" || "$current" == "muted" ]]; then
icon="$vol_dir/mute.png"
else
icon="$vol_dir/vol.png"
fi
}
# Notify
notify_user() {
${notify_cmd} -i "$icon" "Volume : $(get_volume)%"
}
# Adjust Volume
adjust_volume() {
[[ $(pamixer --get-mute) == true ]] && pamixer -u
pamixer --allow-boost --set-limit 150 "$1" "$2" && get_icon && notify_user
}
# Toggle Mute
toggle_mute() {
if [[ $(pamixer --get-mute) == false ]]; then
pamixer --toggle-mute
get_icon
message="Mute"
else
pamixer --toggle-mute
get_icon
message="Unmute"
fi
${notify_cmd} -i "$icon" "$message"
}
# Execute accordingly
if command -v pamixer &>/dev/null; then
case "$1" in
--get) get_volume ;;
--inc) adjust_volume -i 5 ;;
--dec) adjust_volume -d 5 ;;
--toggle) toggle_mute ;;
*) echo "$(get_volume)%" ;;
esac
else
${notify_cmd} "'pamixer' is not installed."
fi