Для этого я использую следующий скрипт bash, который я написал с использованием различных команд, заимствованных из других источников. Вы просто просите функцию "playpause", но я подумал, что я мог бы также включить все это. Часть, которую вы хотите:
#!/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
в первое поле на вкладке "Команды", затем добавьте привязку ключа во вторую вкладку. Это может быть любой ключ, который вы хотите использовать.) Вам понадобятся 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