Ubuntuのグローバルキーでspotifyの曲を変えたいです。これは、キーボードの特別なキーである「次の曲のキー」(?)を備えたWindowsで可能です。
Ubuntuのキー(ここには「次の曲」ボタンはありません)を「次の曲」ボタンとして機能するように再マップするにはどうすればよいですか? 「ctrl +右キー」のように。
そして、ワインを介して実行されているspotifyでこれを機能させるにはどうすればよいですか?
基本的に、「次の曲」ボタンのASCIIコードとは何か、そしてそれをubuntuの下のキーの組み合わせにマップする方法を知りたいです。そして、このコマンドが問題なくワインを介してルーティングされることを願っています。
編集:ubuntuマシンに「次の曲」ボタンがありません。
またはjbonneyは、dbus-send を使用してかなりきちんとした解決策を見つけました(= /// =)ここで彼の要点
またはあなたが急いでいる場合:
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause" XF86AudioPlay
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop" XF86AudioStop
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next" XF86AudioNext
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous" XF86AudioPrevious
Ubuntuの場合、「 Spotify for Linux "」が追加されました。キーの組み合わせを「次の曲」にマッピングするには、dconf-editorが役立ちます( ここを参照 )。 「次の曲」へのキーマッピングが完了すると、John Reeseによって作成されたメディアキー統合用のNice Spotifyラッパー があります。
編集:Spotify forlinuxがメディアキーをサポートするようになりました。
これを行う方法は、他のソースから借用したさまざまなコマンドを使用して作成した次のbashスクリプトを使用することです。 「再生一時停止」機能を要求しているだけですが、すべてを含める方がよいと思いました。必要な部分は次のとおりです。
#!/bin/bash
# Spotify Launch Script by Ben Kraft
# Borrows some commands from Spotify Control by Tommy Matilla:
# http://sites.google.com/site/tommymattila/home/spotifycontrol
# which itself is based on Stuart Colville's
# http://muffinresearch.co.uk/archives/2009/10/22/ubuntu-lock-screen-and-pause-spotify/
# Requires wmctrl and xvkbd
WP="$HOME/.wine"
SPATH="$HOME/.wine/drive_c/Program Files/Spotify/spotify.exe"
TITLE=$(wmctrl -xl | grep -o -e "spotify\.exe\.Wine.*$" | grep -o -e "Spotify.*$")
ACTIVEWIN=$(wmctrl -va ":ACTIVE:" 2>&1 | grep -o -e "0x.*$")
sendkeys () {
wmctrl -xa "spotify.exe.Wine" || return 1
xvkbd -q -delay 100 -text "$1"
wmctrl -ia $ACTIVEWIN
}
if [ -z $TITLE ] ; then
echo "Spotify is not running!
exit 1
else
sendkeys '\ '
fi
exit 0
つまり、wmctrl
を使用してSpotifyがオンになっているワークスペースに移動し、xvkbd
を使用してスペースキーストロークをSpotifyに送信してから、wmctrl
を使用して戻ります。
使用するには、ファイルに保存し、ファイルの実行可能ファイルにマークを付け([ファイルのアクセス許可]ダイアログで)、CompizConfig設定マネージャーを使用してコマンドに追加します。 ([コマンド]タブの最初のボックスにbash /path/to/script
を入力し、2番目のタブにキーバインディングを追加します。これは、使用する任意のキーにすることができます。)wmctrl
とxvkbd
をインストールする必要があります。 Ubuntuソフトウェアセンターで検索してください。
前または次のトラックに移動して曲のタイトルを表示するなど、その他の優れた機能を提供するスクリプト全体を以下に示します。上記のスニペットと同じように使用しますが、コマンドボックスにbash /path/to/script --option
を入力する必要があります。ここで、--option
はスクリプトにリストされているもののいずれかです。
#!/bin/bash
# Spotify Launch Script by Ben Kraft
# Borrows some commands from Spotify Control by Tommy Matilla:
# http://sites.google.com/site/tommymattila/home/spotifycontrol
# which itself is based on Stuart Colville's
# http://muffinresearch.co.uk/archives/2009/10/22/ubuntu-lock-screen-and-pause-spotify/
# Requires wmctrl and xvkbd
# Usage:
USAGE="
usage: spotify [OPTIONS]
OPTIONS:
--play: Starts Spotify playing if it isn't already
--pause: Pauses Spotify if it isn't already
--playpause: Toggles Spotify between playing and pausing
--prev: Plays the previous song
--next: Plays the next song
--display: Prints the currently playing song and artist to stdout
--notify-send: Use only *after* --display; also pops up a notification with currently playing song and artist
--uri URI: tells Spotify to display URI (e.g. a playlist or user).
With no options, this script will kill a currently running instance of spotify if there is one. With --uri, it starts Spotify iff it isn't running. With any other option, it will return 1 if Spotify is not running.
"
WP="$HOME/.wine"
SPATH="$HOME/.wine/drive_c/Program Files/Spotify/spotify.exe"
TITLE=$(wmctrl -xl | grep -o -e "spotify\.exe\.Wine.*$" | grep -o -e "Spotify.*$")
ACTIVEWIN=$(wmctrl -va ":ACTIVE:" 2>&1 | grep -o -e "0x.*$")
sendkeys () {
wmctrl -xa "spotify.exe.Wine" || return 1
xvkbd -q -delay 100 -text "$1"
wmctrl -ia $ACTIVEWIN
}
if [ $# -eq 0 ] ; then
if pgrep spotify.exe &>/dev/null ; then
killall spotify.exe
fi
exec env WINEPREFIX="$WP" wine "$SPATH"
Elif [ "$1" == "--uri" ] ; then
shift
exec env WINEPREFIX="$WP" wine "$SPATH" /uri "$@"
Elif [ -z "$TITLE" ] ; then
echo "Spotify is not running" >&2
if [ "$@" = "--display --notify-send" ] ; then
notify-send "Spotify is not running"
fi
exit 1
else
case "$1" in
--playpause) #toggles
sendkeys '\ '
;;
--next)
sendkeys '\C\[Right]'
;;
--prev)
sendkeys '\C\[Left]'
;;
--pause) #pauses if playing; does nothing if not
if [ -n "${TITLE:9}" ] ; then
sendkeys '\ '
fi
;;
--play) #plays if paused; does nothing if not
if [ -z "${TITLE:9}" ] ; then
sendkeys '\ '
fi
;;
--display)
if [ -n "${TITLE:9}" ] ; then
OUT1="Now Playing"
OUT2="${TITLE:9}"
else
OUT1="Spotify paused."
OUT2=""
fi
echo "$OUT"
if [ "$#" -ge 2 ] && [ $2 == "--notify-send" ] ; then
notify-send "$OUT1" "$OUT2"
fi
;;
*)
echo "$USAGE"
exit 2
;;
esac
fi
exit 0
xev
(Xイベントビューア) を使用して、そのキーを押したときに送信されるキーコードを決定します。次に、使用しているシステム(Gnome、KDE、bare Xなど)のキーマッピングユーティリティでキーを再マッピングできます。
私のDebianシステムでは、xev
はx11-utils
パッケージとともにインストールされるため、通常のUbuntuデスクトップインストールに含まれている可能性があります。
使用例:
$ xev
[example keypress: right option key on an Apple USB keyboard]
KeyPress event, serial 33, synthetic NO, window 0x1200001,
root 0x2e, subw 0x0, time 122600873, (-49,299), root:(679,325),
state 0x0, keycode 255 (keysym 0xffec, Super_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0x1200001,
root 0x2e, subw 0x0, time 122600971, (-49,299), root:(679,325),
state 0x0, keycode 255 (keysym 0xffec, Super_R), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False