输入mocp后,它会在交互模式下工作,按下q离开交互界面后仍然可以在其它地方输入命令控制,比如:
所以,就可以利用这些命令自定义后台热键,我利用了CCSM的command管理功能来实现了后台热键.mocp -P #暂停
mocp -U #继续
mocp -f #下一曲
mocp -x #退出程序
mocp -p #执行后直接后台打开mocp并播放列表中的歌曲,不进入交互界面.
但是定义了之后有一点遗憾,一般支持热键的播放器中,播放和暂停都使用一个按钮,我把我的多媒体键中的播放和暂停按钮赋给了mocp -P(暂停),mocp -U(继续)就找不到理想的键了,于是决定绕一下,让它们都使用一个热键...方案如下:
在CCSM中定义按下[播放/暂停]按钮后,执行一个叫mocpP-U的脚本,然后让该脚本来决定执行P(暂停)还是U(继续).脚本内容如下:
代码: 全选
#!/bin/bash
#scriptname: mocpP-U,用来暂停&继续mocp播放音乐.通过多媒体快捷键控制.
#如果是第一次使用该脚本,将创建一个状态文件,并写入P(意为暂停)作为内容.
[ ! -f $HOME/.moc/PorU ] && touch $HOME/.moc/PorU && echo "P" > $HOME/.moc/PorU
##########################################################
state=`cat $HOME/.moc/PorU`
#检察$HOME/.moc/PorU文件内容,如果为P,下面就执行pause;为U,则执行continue.
if [ "$state" = "P" ]; then
mocp -P #暂停播放
echo 'U' > $HOME/.moc/PorU #每执行一次,状态都会改变.
exit 0
elif [ "$state" = "U" ]; then
mocp -U #接着刚才的继续播放.
echo P > $HOME/.moc/PorU
exit 0
else #可能数据被破坏过.
echo "P" > $HOME/.moc/PorU #重置内容为P.
fi
受到刚写的脚本的启发,我又想到一个方法可以让我变得更惬意:
在面板上放一个启动器,点击一下,开始播放音乐;在点击同一个启动器,变成了停止音乐.
就像下面这个可爱的按钮: 方案跟上面一样,点击该面板图标执行一个叫mocpMymusic脚本,让它决定是打开还是停止.内容如下:
代码: 全选
#!/bin/bash
#scriptname: mocpMymusic
#特性:更加可控地播放我的音乐... 该脚本执行后将用mocp播放我的音乐,再执行一次将关闭我的音乐...以此类推.
#判断状态文件是否存在,否则创建一个,并写入"to-open"...
[ ! -f $HOME/.moc/openORclose ] && touch $HOME/.moc/openORclose && echo "to-open" > $HOME/.moc/openORclose
#######################################################
state=`cat $HOME/.moc/openORclose`
if [ "$state" = "to-open" ]; then
mocp -p #打开mocp,同时自动播放列表中的音乐,
lrcdis & #启用歌词显示, 见 http://code.google.com/p/lrcdis/
##lrcdis必须要在后台执行,否则将导致下一句不能及时执行...
echo "to-close" > $HOME/.moc/openORclose
elif [ "$state" = "to-close" ]; then
mocp -x #退出mocp,同时修改状态文件,以便下次执行该脚本时,状态是"to open"
echo "to-open" > $HOME/.moc/openORclose
else #如果状态文件里面是垃圾值(可能被意外修改),就给它一个to open吧...
echo "to-open" > $HOME/.moc/openORclose
fi