静音控制脚本(alsa、oss)

sh/bash/dash/ksh/zsh等Shell脚本
回复
zoujichun
帖子: 82
注册时间: 2007-05-09 6:50

静音控制脚本(alsa、oss)

#1

帖子 zoujichun » 2010-10-01 19:33

* 功能,执行此脚本自动在静音和非静音之间切换,适合openbox等窗口管理器,支持alsa、oss;
* 用法,执行脚本即可,会自动检测是否静音,建议绑定快捷键操作,例如多媒体静音按键;
* 安装 libnotify-bin,可以弹出桌面消息,以下是脚本,注意修改里面图片的路径;
* 无图无真相;
图片
* 以下是代码,复制保存为mute.sh;

代码: 全选

#!/bin/bash
if which ossmix > /dev/null 2>&1; then
    mix=ossmix # for oss
else
    mix=amixer # for alsa, default
fi

if which notify-send > /dev/null 2>&1; then
    alert="notify-send -t 1000"
else
    alert=echo
fi

case $mix in 
    amixer)
        MASTER_STATUS=`$mix get Master | tail -n 1 | awk '{print $7}'| cut -c 3`
        PCM_STATUS=`$mix get Master | tail -n 1 | awk '{print $7}'| cut -c 3`
        if [ $MASTER_STATUS = "n" ]; then
            $mix set Master mute
        else
            $mix set Master unmute
        fi
        if [ $PCM_STATUS = "n" ]; then
            $mix set PCM mute
            $alert -i /home/razone/.icons/myicon/volume-mute.png "无声模式"
        else
            $mix set PCM unmute
            $alert -i /home/razone/.icons/myicon/volume-max.png "有声模式"
        fi
        exit 0 
        ;;
    ossmix)
        vol=`$mix | grep '^vol ' | awk '{print $4}' | awk -F")" '{print $1}'`
        pcm=`$mix | grep '^pcm ' | awk '{print $4}' | awk -F")" '{print $1}'`
        if [ $vol = "0:0" -a $pcm = "0:0" ]; then
            $mix vol 30
            $mix pcm 30
            $alert -i /home/razone/.icons/myicon/volume-max.png "切换至有声模式"
        else
            $mix vol 0:0
            $mix pcm 0:0
            $alert -i /home/razone/.icons/myicon/volume-mute.png "切换至无声模式"
        fi
        ;;
esac
附件
mute.png
我的博客:关注Linux 企业应用,桌面折腾,python,perl,shell
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 静音控制脚本(alsa、oss)

#2

帖子 tusooa » 2010-10-01 23:00

。。。折腾什么阿?

代码: 全选

Key XF86AudioMute A A Exec exec amixer set Master toggle
Key XF86AudioLowerVolume A A Exec exec amixer set Master 10%-
Key XF86AudioRaiseVolume A A Exec exec amixer set Master 10%+
3行解决。
还get。直接toggle不行阿?

代码: 全选

] ls -ld //
zoujichun
帖子: 82
注册时间: 2007-05-09 6:50

Re: 静音控制脚本(alsa、oss)

#3

帖子 zoujichun » 2010-10-01 23:42

tusooa 写了:。。。折腾什么阿?

代码: 全选

Key XF86AudioMute A A Exec exec amixer set Master toggle
Key XF86AudioLowerVolume A A Exec exec amixer set Master 10%-
Key XF86AudioRaiseVolume A A Exec exec amixer set Master 10%+
3行解决。
还get。直接toggle不行阿?
为了那通知消息,才取的值,toggle 之前还是得判断一下状态的;不过学了一招,谢谢兄弟,ossmix 是没法了,只能取值了。
我的博客:关注Linux 企业应用,桌面折腾,python,perl,shell
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 静音控制脚本(alsa、oss)

#4

帖子 astolia » 2010-10-02 0:30

何必在toggle之前判断....

代码: 全选

if [  -n "`amixer set Master toggle| grep '\[on\]'`" ];then
    echo "on" 
else
    echo "off"
fi
zoujichun
帖子: 82
注册时间: 2007-05-09 6:50

Re: 静音控制脚本(alsa、oss)

#5

帖子 zoujichun » 2010-10-02 0:38

astolia 写了:何必在toggle之前判断....

代码: 全选

if [  -n "`amixer set Master toggle| grep '\[on\]'`" ];then
    echo "on" 
else
    echo "off"
fi
学习了,多谢兄弟。将来再用alsa 的时候再好好研究。
我的博客:关注Linux 企业应用,桌面折腾,python,perl,shell
回复