68 lines
1.5 KiB
Bash
68 lines
1.5 KiB
Bash
#! /usr/bin/env bash
|
|
|
|
# @describe Wrapper for toggling between audio profiles
|
|
#
|
|
# https://github.com/sigoden/argc
|
|
|
|
# HACK: Condition based on file content, requires execution at login to set state
|
|
#?? exec-once = audio --init
|
|
|
|
# @meta combine-shorts
|
|
# @arg profile=Normalizer EasyEffects profile to toggle to
|
|
# @option -F --flat=`_default_flat` Flat profile to toggle from
|
|
# @option -f --file=`_default_file` Specify file for state
|
|
# @flag -b --bypass Toggle bypass instead of flat profile
|
|
# @flag -i --init Enforce state without toggling
|
|
|
|
_default_file() {
|
|
echo "$HOME/.audio"
|
|
}
|
|
|
|
_default_flat() {
|
|
echo Flat
|
|
}
|
|
|
|
eval "$(argc --argc-eval "$0" "$@")"
|
|
|
|
# Get current profile from file
|
|
if [[ -f "${argc_file:-}" ]]; then
|
|
profile="$(cat "${argc_file:-}")"
|
|
else
|
|
# Create file with flat profile if missing
|
|
profile="${argc_flat:-}"
|
|
echo "$profile" > "${argc_file:-}"
|
|
fi
|
|
|
|
# Toggle profile
|
|
if ! [[ "${argc_init:-}" ]]; then
|
|
if [[ "$profile" == "${argc_profile:-}" ]]; then
|
|
# Flat or bypass
|
|
if [[ "${argc_bypass:-}" ]]; then
|
|
profile=1
|
|
else
|
|
profile="${argc_flat:-}"
|
|
fi
|
|
else
|
|
# Specified profile
|
|
profile="${argc_profile:-}"
|
|
fi
|
|
fi
|
|
|
|
# Enforce profile
|
|
if [[ "$profile" == 1 ]]; then
|
|
easyeffects --bypass 1 # Enable
|
|
|
|
if ! [[ "${argc_init:-}" ]]; then
|
|
notify-send "> audio" "Bypass" --urgency low
|
|
fi
|
|
else
|
|
easyeffects --load-preset "$profile"
|
|
easyeffects --bypass 2 # Disable
|
|
|
|
if ! [[ "${argc_init:-}" ]]; then
|
|
notify-send "> audio" "$profile" --urgency low
|
|
fi
|
|
fi
|
|
|
|
# Save state
|
|
echo "$profile" > "${argc_file:-}"
|