星期二, 6月 24, 2008

mplayer in fluxbox !

這幾天在用電腦, 突然覺得每次mplayer 都佔一個terminal 有點煩
所以開始想有沒有辦法讓 fluxbox bind 一些key 來控制mplayer

一開始我打算用mplayer + (nc + retty) 來做, 是可以做可是有點麻煩
做法大概是用
nc -c retty $(pidof mplayer) -l -p [port] 作為server,
然後 echo "command" |nc localhost [port] -q 1 來控制
這樣需要改一點nc 的code .. 有時間再說

今天在surf 的時候看到這篇, 是FVWM 的 user 提供的解法, fluxbox 也可以用喔!
原來是mplayer 本來就提供pipe in command 的 功能 :p (我還大費周張!@%&$!)

大致上的步驟...
mkfifo ~/.mplayer/pipe #做個named pipe 給mplayer 讀


開啟mplayer: (可以放到menu 或另外bind key, 不然乾脆開機直接打開
mplayer -slave -idle -input file=~/.mplayer/pipe


-slave 用來關閉mplayer 從 stdin 讀取command
-idle 是用來啟動mplayer 並且halt 在那邊等你command
-input 是來開啟神奇的pipe 功能

再來就在fluxbox 的設定 bind 一點key: (~/.fluxbox/keys )
Control Next :ExecCommand echo "pt_step 1" > ~/.mplayer/pipe
Control Prior :ExecCommand echo "pt_step -1" > ~/.mplayer/pipe
Control KP_Add :ExecCommand echo "volume +1" > ~/.mplayer/pipe
Control KP_Subtract :ExecCommand echo "volume -1" > ~/.mplayer/pipe
Control KP_0 :ExecCommand echo "pause" > ~/.mplayer/pipe


其實就是 echo "command" > ~/.mplayer/pipe
可以用的command 可以查mplayer ( mplayer -input cmdlist )

個人比較常用的還有 loadlist:
echo "loadlist ~/music/xxxxx" > ~/.mplayer/pipe

學原po 說一句:
Now I have a simple but cool "Fluxbox-Player".

沒有留言: