喜讯:PPS for Linux 复活!

mocp的可贵之处在于它的后台控制功能...
输入mocp后,它会在交互模式下工作,按下q离开交互界面后仍然可以在其它地方输入命令控制,比如:
引用:
mocp -P #暂停
mocp -U #继续
mocp -f #下一曲
mocp -x #退出程序
mocp -p #执行后直接后台打开mocp并播放列表中的歌曲,不进入交互界面.

所以,就可以利用这些命令自定义后台热键,我利用了CCSM的command管理功能来实现了后台热键.
但是定义了之后有一点遗憾,一般支持热键的播放器中,播放和暂停都使用一个按钮,我把我的多媒体键中的播放和暂停按钮赋给了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

把上面的脚本放在某个bin目录下,赋予可执行权,并把它绑定到某个快捷键.然后按一下那个键,音乐就暂停啦,再按一下相同的键,又继续啦,再按一下又可以暂停...以此类推...好惬意啊!!!终于实现了我的要求.
受到刚写的脚本的启发,我又想到一个方法可以让我变得更惬意:
在面板上放一个启动器,点击一下,开始播放音乐;在点击同一个启动器,变成了停止音乐.
就像下面这个可爱的按钮:
附件:

screenshot2.png [ 9.73 KiB | 被浏览 757 次 ]

方案跟上面一样,点击该面板图标执行一个叫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

现在可以惬意地点击按钮了,点击后不会出现界面的,自动在后台播放列表中的歌曲(前提是已经添加好播放列表了),对!!!这正是我想要的!音乐是用来听的,要界面干啥?有界面更加可控?我用mocp也很可控啊.我已经绑定好了快捷键啦,后台热键控制更加随意,不管何时,在操作那个窗口...都可以惬意地按下你熟悉的键,下一首、暂停。。。

作者: 潇洒走一回   发布时间: 2009-10-07

作者: photor   发布时间: 2009-10-07

作者: rhfcaesar   发布时间: 2009-10-07

代码:
mocp -G
暂停,继续都是它.........

作者: nuanhuai   发布时间: 2009-10-07

moc-tray 也不错。

作者: rhfcaesar   发布时间: 2009-10-07

nuanhuai 写道:
代码:
mocp -G
暂停,继续都是它.........

羞愧中... 我的英文不太好,看那个英文帮助文件(mocp -h)的时候有点费力...看来我的做了些无用功...
不过它的设计也有点问题,既然mocp -G就代表暂停继续,还设计mocp -P 和mocp -U干啥用...

最后由 潇洒走一回 编辑于 2009-10-07 17:47,总共编辑了 1 次

作者: 潇洒走一回   发布时间: 2009-10-07

有一个功能,别的播放器都有,但是mocp好像没有办法实现,那就是记住上次退出时播放到列表中的哪首歌,以便接着上次的那首歌播放。

作者: photor   发布时间: 2009-10-07

photor 写道:
有一个功能,别的播放器都有,但是mocp好像没有办法实现,那就是记住上次退出时播放到列表中的哪首歌,以便接着上次的那首歌播放。


我想应该是可以的。

像lz这样用脚本调用mocp的,完全可以在脚本里面退出之前记录下最后的歌,存到文件,下次开始的时候再从这首开始的。

作者: roylez   发布时间: 2009-10-07

photor 写道:
有一个功能,别的播放器都有,但是mocp好像没有办法实现,那就是记住上次退出时播放到列表中的哪首歌,以便接着上次的那首歌播放。

这个俺不需要,就不关心了...俺对播放器的功能要求不多,但是俺对细节要求特别苛刻:
基本功能要求: 能够随机重复地对一个预设的列表播放
细节要求:必须支持自动播放,即打开后不需要再去点击某首歌曲,audacious启动时加上-p参数自动播放列表中的音乐,mocp一样;
必须支持后台热键;
界面应该简洁,排除我不需要的冗余功能.这一点足以革掉banshee,rhythmbox...

作者: 潇洒走一回   发布时间: 2009-10-07

mpd或许更适合楼主....

作者: adam8157   发布时间: 2009-10-07

adaml 写道:
mpd或许更适合楼主....

mpd的客户端没有一个像mocp的交互界面这么简洁的

作者: photor   发布时间: 2009-10-07

潇洒走一回 写道:
photor 写道:
有一个功能,别的播放器都有,但是mocp好像没有办法实现,那就是记住上次退出时播放到列表中的哪首歌,以便接着上次的那首歌播放。

这个俺不需要,就不关心了...俺对播放器的功能要求不多,但是俺对细节要求特别苛刻:
基本功能要求: 能够随机重复地对一个预设的列表播放
细节要求:必须支持自动播放,即打开后不需要再去点击某首歌曲,audacious启动时加上-p参数自动播放列表中的音乐,mocp一样;
必须支持后台热键;
界面应该简洁,排除我不需要的冗余功能.这一点足以革掉banshee,rhythmbox...

楼主和我有相同的癖好,就是不喜欢媒体库这样的冗余功能,我的歌曲都是用目录来井井有条地管理的

作者: photor   发布时间: 2009-10-07

photor 写道:
adaml 写道:
mpd或许更适合楼主....

mpd的客户端没有一个像mocp的交互界面这么简洁的

cli:ncmpc
gui:sonata
两个都超级简洁...

但是我只用mpc....

作者: adam8157   发布时间: 2009-10-07

adaml 写道:
photor 写道:
adaml 写道:
mpd或许更适合楼主....

mpd的客户端没有一个像mocp的交互界面这么简洁的

cli:ncmpc
gui:sonata
两个都超级简洁...

但是我只用mpc....

都试过,还是不如mocp的两个版面都超级有用,所以……

作者: photor   发布时间: 2009-10-07

mocp不能放ape,有点郁闷
而且我也想要记住上次退出时候播的哪首歌
同样不喜欢媒体库

作者: xjpvictor   发布时间: 2009-10-07

xjpvictor 写道:
mocp不能放ape,有点郁闷
而且我也想要记住上次退出时候播的哪首歌
同样不喜欢媒体库

虽然我对记住上次播放歌曲没有强烈要求,不过能实现更好啦...roylez说这个不难,不过我纯属菜鸟,搞不好...roylez已经搞定过类似的功能啦,看他发的这篇贴子(http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=69447)找点灵感吧...sed命令我还用不好,准备有时间再看.......
引用:
理所当然,很多人想要知道是不是可以做点什么让正在播放的歌曲的歌曲名显示在桌面上,或者将MOC和监视器(比如conky)整合起来?这是当然可行的!:)怎么做?MOC有一个很有用的 --info 命令行参数用来显示当前的播放状态。Conky正好可以用来显示其他程序的输出,所以,只需要写一个小脚本可以了。以下是一个叫做 folken 的用户写的一个bash脚本。

作者: 潇洒走一回   发布时间: 2009-10-07

潇洒走一回 写道:
nuanhuai 写道:
代码:
mocp -G
暂停,继续都是它.........

羞愧中... 我的英文不太好,看那个英文帮助文件(mocp -h)的时候有点费力...看来我的做了些无用功...
不过它的设计也有点问题,既然mocp -G就代表暂停继续,还设计mocp -P 和mocp -U干啥用...

E文确实不咋的,帮助里没啥特难的单词嘛。

作者: kakashan   发布时间: 2009-10-18

潇洒走一回 写道:
...俺对播放器的功能要求不多,但是俺对细节要求特别苛刻:
基本功能要求: 能够随机重复地对一个预设的列表播放

viewtopic.php?f=74&t=236602
不到 100 行的 Python3+对 mocp 的两个小小设置。想要预设的列表播放而不是 mocp 的,请看其附件。

作者: lilydjwg   发布时间: 2009-10-31

lilydjwg 写道:
潇洒走一回 写道:
...俺对播放器的功能要求不多,但是俺对细节要求特别苛刻:
基本功能要求: 能够随机重复地对一个预设的列表播放

viewtopic.php?f=74&t=236602
不到 100 行的 Python3+对 mocp 的两个小小设置。想要预设的列表播放而不是 mocp 的,请看其附件。

我以前说的能够随机重复地对一个预设的列表播放
mocp本身已经实现了啊,你可以解压查看/usr/share/doc/moc/examples/config.example.gz 它就是moc的配置文件示例,默认情况下家目录下是没有moc的配置文件的,可以新建一个~/.moc/config文件配置你的mocp的工作方式...内容就可以参照示例文件...
引用:
# Turn on repeat.
Repeat = no

# Turn on shuffle.
Shuffle = no

把上面的no改为yes就可以开启随机并重复播放功能了...
至于播放列表功能,也实现的很完美啊!
我的音乐全都放在$HOME/music/下面,执行下面的命令:
代码:
mocp -a $HOME/music/
就可以把其下的文件添加到mocp的播放列表了(在~/.moc/playlist.m3u中),当music/下面添加了新的音乐时,要更新moc的播放列表,请执行:
代码:
mocp -c; mocp -a $HOME/music/

下面的命令就是我享受惬意时使用的
代码:
mocp -p
# 打开moc以随机重复方式播放列表中的音乐

当然我是用一个叫Mocp(大写的M)的脚本来简化我对mocp的控制的

作者: 潇洒走一回   发布时间: 2009-10-31

潇洒走一回 写道:
引用:
# Turn on repeat.
Repeat = no

# Turn on shuffle.
Shuffle = no

把上面的no改为yes就可以开启随机并重复播放功能了...

Shuffle是随机播放的意思?

作者: lilydjwg   发布时间: 2009-10-31

嗯。。shuffle是随机

作者: xjpvictor   发布时间: 2009-10-31

xjpvictor 写道:
嗯。。shuffle是随机


这个我唯一没看懂的选项原来就是我想要的

作者: lilydjwg   发布时间: 2009-10-31

xjpvictor 写道:
嗯。。shuffle是随机

我记得直接按下组合键就可以切换 [STEREO] [NET] [SHUFFLE] [REPEAT] [NEXT] 这几个选项的,前几天试过,记得好像是alt+tab来着,但事实证明,不是这个……

作者: pityonline   发布时间: 2009-11-01

pityonline 写道:
我记得直接按下组合键就可以切换 [STEREO] [NET] [SHUFFLE] [REPEAT] [NEXT] 这几个选项的,前几天试过,记得好像是alt+tab来着,但事实证明,不是这个……

怎么会是 Alt-tab 呢。你按 h 看看就知道了。
我这里
NEXT -- X
SHUFFLE -- S
REPEAT --- R

作者: lilydjwg   发布时间: 2009-11-01

lilydjwg 写道:
pityonline 写道:
我记得直接按下组合键就可以切换 [STEREO] [NET] [SHUFFLE] [REPEAT] [NEXT] 这几个选项的,前几天试过,记得好像是alt+tab来着,但事实证明,不是这个……

怎么会是 Alt-tab 呢。你按 h 看看就知道了。
我这里
NEXT -- X
SHUFFLE -- S
REPEAT --- R

你回贴时我正在看h,嘿嘿……

作者: pityonline   发布时间: 2009-11-01

我基本只随机播放,呵呵

作者: bones7456   发布时间: 2009-11-01

bones7456 写道:
我基本只随机播放,呵呵

我也是呵。 不过最近才知道Shuttle是随机播放的意思。

作者: lilydjwg   发布时间: 2009-11-01

很强大...

作者: _Pilgrim   发布时间: 2010-11-19

xjpvictor 写道:
mocp不能放ape,有点郁闷
而且我也想要记住上次退出时候播的哪首歌
同样不喜欢媒体库

虽然我对记住上次播放歌曲没有强烈要求,不过能实现更好啦...roylez说这个不难,不过我纯属菜鸟,搞不好...roylez已经搞定过类似的功能啦,看他发的这篇贴子(http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=69447)找点灵感吧...sed命令我还用不好,准备有时间再看.......
引用:
理所当然,很多人想要知道是不是可以做点什么让正在播放的歌曲的歌曲名显示在桌面上,或者将MOC和监视器(比如conky)整合起来?这是当然可行的!:)怎么做?MOC有一个很有用的 --info 命令行参数用来显示当前的播放状态。Conky正好可以用来显示其他程序的输出,所以,只需要写一个小脚本可以了。以下是一个叫做 folken 的用户写的一个bash脚本。

作者: 潇洒走一回   发布时间: 2009-10-07

潇洒走一回 写道:
nuanhuai 写道:
代码:
mocp -G
暂停,继续都是它.........

羞愧中... 我的英文不太好,看那个英文帮助文件(mocp -h)的时候有点费力...看来我的做了些无用功...
不过它的设计也有点问题,既然mocp -G就代表暂停继续,还设计mocp -P 和mocp -U干啥用...

E文确实不咋的,帮助里没啥特难的单词嘛。

作者: kakashan   发布时间: 2009-10-18

潇洒走一回 写道:
...俺对播放器的功能要求不多,但是俺对细节要求特别苛刻:
基本功能要求: 能够随机重复地对一个预设的列表播放

viewtopic.php?f=74&t=236602
不到 100 行的 Python3+对 mocp 的两个小小设置。想要预设的列表播放而不是 mocp 的,请看其附件。

作者: lilydjwg   发布时间: 2009-10-31

lilydjwg 写道:
潇洒走一回 写道:
...俺对播放器的功能要求不多,但是俺对细节要求特别苛刻:
基本功能要求: 能够随机重复地对一个预设的列表播放

viewtopic.php?f=74&t=236602
不到 100 行的 Python3+对 mocp 的两个小小设置。想要预设的列表播放而不是 mocp 的,请看其附件。

我以前说的能够随机重复地对一个预设的列表播放
mocp本身已经实现了啊,你可以解压查看/usr/share/doc/moc/examples/config.example.gz 它就是moc的配置文件示例,默认情况下家目录下是没有moc的配置文件的,可以新建一个~/.moc/config文件配置你的mocp的工作方式...内容就可以参照示例文件...
引用:
# Turn on repeat.
Repeat = no

# Turn on shuffle.
Shuffle = no

把上面的no改为yes就可以开启随机并重复播放功能了...
至于播放列表功能,也实现的很完美啊!
我的音乐全都放在$HOME/music/下面,执行下面的命令:
代码:
mocp -a $HOME/music/
就可以把其下的文件添加到mocp的播放列表了(在~/.moc/playlist.m3u中),当music/下面添加了新的音乐时,要更新moc的播放列表,请执行:
代码:
mocp -c; mocp -a $HOME/music/

下面的命令就是我享受惬意时使用的
代码:
mocp -p
# 打开moc以随机重复方式播放列表中的音乐

当然我是用一个叫Mocp(大写的M)的脚本来简化我对mocp的控制的

作者: 潇洒走一回   发布时间: 2009-10-31

潇洒走一回 写道:
引用:
# Turn on repeat.
Repeat = no

# Turn on shuffle.
Shuffle = no

把上面的no改为yes就可以开启随机并重复播放功能了...

Shuffle是随机播放的意思?

作者: lilydjwg   发布时间: 2009-10-31

嗯。。shuffle是随机

作者: xjpvictor   发布时间: 2009-10-31

xjpvictor 写道:
嗯。。shuffle是随机


这个我唯一没看懂的选项原来就是我想要的

作者: lilydjwg   发布时间: 2009-10-31

xjpvictor 写道:
嗯。。shuffle是随机

我记得直接按下组合键就可以切换 [STEREO] [NET] [SHUFFLE] [REPEAT] [NEXT] 这几个选项的,前几天试过,记得好像是alt+tab来着,但事实证明,不是这个……

作者: pityonline   发布时间: 2009-11-01

pityonline 写道:
我记得直接按下组合键就可以切换 [STEREO] [NET] [SHUFFLE] [REPEAT] [NEXT] 这几个选项的,前几天试过,记得好像是alt+tab来着,但事实证明,不是这个……

怎么会是 Alt-tab 呢。你按 h 看看就知道了。
我这里
NEXT -- X
SHUFFLE -- S
REPEAT --- R

作者: lilydjwg   发布时间: 2009-11-01

lilydjwg 写道:
pityonline 写道:
我记得直接按下组合键就可以切换 [STEREO] [NET] [SHUFFLE] [REPEAT] [NEXT] 这几个选项的,前几天试过,记得好像是alt+tab来着,但事实证明,不是这个……

怎么会是 Alt-tab 呢。你按 h 看看就知道了。
我这里
NEXT -- X
SHUFFLE -- S
REPEAT --- R

你回贴时我正在看h,嘿嘿……

作者: pityonline   发布时间: 2009-11-01

我基本只随机播放,呵呵

作者: bones7456   发布时间: 2009-11-01

bones7456 写道:
我基本只随机播放,呵呵

我也是呵。 不过最近才知道Shuttle是随机播放的意思。

作者: lilydjwg   发布时间: 2009-11-01

很强大...

作者: _Pilgrim   发布时间: 2010-11-19