X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=toggle-mute;fp=toggle-mute;h=b50b37eaabf4087c4cd3c15a192f022b853cb9ca;hb=e6cd2e555df3af0cf23da016b833529a34ffc84c;hp=0000000000000000000000000000000000000000;hpb=3ba18a2c386a5a9962cf7b47f490a17f244a0774;p=distro-setup diff --git a/toggle-mute b/toggle-mute new file mode 100755 index 0000000..b50b37e --- /dev/null +++ b/toggle-mute @@ -0,0 +1,66 @@ +#!/bin/bash +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to change +# to a recommended GPL license. + +# Copyright 2024 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +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 +set -eE -o pipefail +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 + +# 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" + fi +fi