Cmusというターミナル上の音楽プレーヤーを見つけてから、GUI の音楽プレーヤーをほとんど使わなくなりました。
cmus-remote
を使用してリモート制御もできますが、cmus-remote
を使用するにはまずCmus
を起動する必要があります。そうしないとcmus-remote: cmus is not running
というエラーメッセージが表示されます。
しかし、Cmus
を起動するにはターミナルを開く必要があります。これは GUI の音楽プレーヤーとほとんど同じです。怠け者にとっては許容できません。では、Cmus
を起動するときにバックグラウンドにする方法はありますか?
答えはtmuxです!
tmuxはターミナルのマルチプレクサであり、screenなどと同様の機能を持っています。
方法は?#
まず、アイデアを整理しましょう。
まず、cmus-remote
を使用してCmus
を制御したいのですが、まずCmus
を起動する必要があります。そのため、Cmus
をバックグラウンドで起動する方法を考える必要があります。なぜなら、そのインターフェースを見る必要はなく、このプロセスはtmux
を使用して完了できます。
手順は次のとおりです。
tmux
でセッションを作成する- セッション内で
Cmus
を起動する - セッションをバックグラウンドにする
通常の方法ではうまくいきません。なぜなら、このプロセスが感知されず、完全にバックグラウンドで実行される必要があるからです。
したがって、次のことが必要です。
- バックグラウンドで
tmux
セッションを作成する - コマンドをバックグラウンドセッションに渡して
Cmus
を起動する
tmux
でバックグラウンドセッションを作成するコマンドは次のとおりです。
tmux new -s セッション名 -d
tmux
でコマンドを渡すコマンドは次のとおりです。
tmux send-keys -t セッション名 "渡すコマンド"
したがって、スクリプト全体は次の 2 行のコードになります。
tmux new -s cmus -d # cmusという名前のtmuxセッションを作成する
tmux send-keys -t cmus "cmus" C-m # cmusという名前のtmuxセッションにcmusコマンドを送信し、Enterキーを押す
# コマンドを送信する場合、Enterキーを押す必要がある場合は、C-mを追加する必要があります
起動したら再生する必要がありますので、起動後にcmus-remote
を使用してCmus
を制御できます。
tmux new -s cmus -d
tmux send-keys -t cmus "cmus" C-m
sleep 1s
cmus-remote --play
ここでsleep
を追加するのは、cmus
がまだ起動していないのにcmus-remote
が実行されることを防ぐためです。
起動できたら、終了もできるようにします。ここでは、コードを直接使用します。
tmux send-keys -t cmus "cqy" # cmusという名前のtmuxセッションにcqyを送信してcmusを終了する
# cは一時停止、qは終了、yは確認を意味します。Enterキーが不要なので、C-mを追加する必要はありません
tmux kill-session -t cmus # cmusという名前のtmuxセッションを終了する
もちろん、単純にtmux
セッションを終了することもできます...
完成品#
上記の 2 つの部分を関数として書き、引数によってどちらをトリガーするかを決定するためにif
文を使用すると、完成品は次のようになります。
play() {
tmux new -s cmus -d
tmux send-keys -t cmus "cmus" C-m
sleep 1s
cmus-remote --play
}
quit() {
tmux send-keys -t cmus "cqy"
tmux kill-session -t cmus
}
if [ $1 == "play" ];then
play
elif [ $1 == "quit" ];then
quit
else
echo "指令错误!"
fi
cmus-remote コマンド#
cmus-remote --help
を使用してヘルプを表示するか、直接man
を使用することもできます。
ここでは、いくつかの一般的なコマンドを示します。
# 再生
cmus-remote --play
または
cmus-remote -p
# 一時停止
cmus-remote --pause
または
cmus-remote --u
# 前の曲
cmus-remote --prev
または
cmus-remote -r
# 次の曲
cmus-remote --next
または
cmus-remote -n
dwm キーバインディング#
dwm を使用している人は、すでに知っていると思います。