Ich verwende dazu das folgende Bash-Skript, das ich mit verschiedenen Befehlen geschrieben habe, die aus anderen Quellen stammen. Sie fragen nur nach der "Playpause" -Funktion, aber ich dachte mir, ich könnte das Ganze genauso gut einbeziehen. Der Teil, den Sie wollen, ist:
#!/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
Kurz gesagt, es wird verwendet wmctrl
, um zum Arbeitsbereich zu wechseln, in dem Spotify aktiviert ist, verwendet xvkbd
einen Leertastaturbefehl an Spotify und dann wmctrl
zurück.
Um es zu verwenden, speichern Sie es in einer Datei, markieren Sie die ausführbare Datei (im Dialogfeld mit den Dateiberechtigungen) und fügen Sie sie mit dem CompizConfig Settings Manager zu Befehlen hinzu. (Setzen Sie bash /path/to/script
das erste Kästchen auf der Registerkarte "Befehle" ein, und fügen Sie dann in der zweiten Registerkarte eine Tastenbindung hinzu. Dies kann der beliebige Schlüssel sein, den Sie verwenden möchten.) Sie benötigen wmctrl
und xvkbd
installiert sind; Suche sie im Ubuntu Software Center.
Das gesamte Skript, das einige weitere nützliche Funktionen enthält, wie zum vorherigen oder nächsten Titel zu gehen und den Titel des Songs anzuzeigen, ist unten aufgeführt. Sie verwenden es genauso wie das obige Snippet, außer dass Sie bash /path/to/script --option
das Befehlsfeld eingeben müssen, in dem --option
alle im Skript aufgeführten Elemente stehen können.
#!/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 "$" ] ; then sendkeys '\ ' fi ;; --play) #plays if paused; does nothing if not if [ -z "$" ] ; then sendkeys '\ ' fi ;; --display) if [ -n "$" ] ; then OUT1="Now Playing" OUT2="$" 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