# See the License for the specific language governing permissions and
# limitations under the License.
+# mutes or unmutes ffmpeg stream
+# usage: toggle-mute [mute|unmute|mute notify]
+#
+#
+# gets state from $HOME/.iank-stream-muted
if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
-mute=true
-volume_level=0
-
-# mute / unmute instead of toggle.
-if [[ $1 ]]; then
- case $1 in
- mute)
- mute=true
- ;;
- unmute)
- mute=false
- ;;
- esac
-else
-
- muted=$(pactl get-source-mute @DEFAULT_SOURCE@ | awk '{print $2}' ||:)
- case $muted in
- no) : ;;
- yes) mute=false; volume_level=1 ;;
- *)
- i3-nagbar -m "FAILED TO GET PULSE MUTE STATE" -t error -f "pango:monospace 30"
- ;;
- esac
-fi
-
-# we double mute here because it could be useful, and I figured out how
-# and feel like using what I know.
-
-pactl set-source-mute @DEFAULT_SOURCE@ $mute
-
+v=0
+notify=false
# note: condition duplicated in stream-clip, myi3statsus
if pgrep -fc '^ffmpeg.*icecast://source.*/fsf' >/dev/null; then
- out=$(echo Parsed_volume_1 volume $volume_level | zmqsend ||:)
- if [[ $out != "0 Success" ]]; then
- i3-nagbar -m "FAILED to set ffmpeg volume to $volume_level" -t error -f "pango:monospace 30"
+ if [[ $1 ]]; then
+ case $1 in
+ mute)
+ v=0
+ if [[ $2 == notify ]]; then
+ notify=true
+ fi
+ ;;
+ unmute)
+ v=1
+ ;;
+ *)
+ i3-nagbar -m "INVALID mute argument:$1" -t error -f "pango:monospace 30"
+ ;;
+ esac
+
+ else
+ v_state=$(cat $HOME/.iank-stream-muted) ||:
+ case $v_state in
+ 1) : ;; # default action
+ 0) v=1 ;;
+ *)
+ i3-nagbar -m "FAILED GETTING MUTE STATE:$v" -t error -f "pango:monospace 30"
+ ;;
+ esac
+ fi
+
+ out=$(echo Parsed_volume_1 volume $v | zmqsend ||:)
+ if [[ $out == "0 Success" ]]; then
+ echo $v >$HOME/.iank-stream-muted
+ if $notify; then
+ dunstify -h string:x-dunst-stack-tag:alert "automuted"
+ fi
+ else
+ i3-nagbar -m "FAILED ffmpeg volume:$v out:$out" -t error -f "pango:monospace 30"
fi
fi
+
+
+# note: i figured out how to do system input level muting, but I don't
+# really have a use case for it other than being doubly sure that i'm
+# muted. leaving it commented in case I figure out a use case, or I
+# find the application level muting to be unreliable.
+
+# uncomment and refactor for system muting
+# muted=$(pactl get-source-mute @DEFAULT_SOURCE@ | awk '{print $2}' ||:)
+# case $muted in
+# no) v=0 ;;
+# yes) v=1 ;;
+# esac
+
+
+
+# uncomment for system muting, and set $mute_p
+# pactl set-source-mute @DEFAULT_SOURCE@ $mute_p