
Also habe ich diese Tastatur für meinen Laptop gekauft, der keine Medientasten hat, und ich bin es gewohnt, die Wiedergabe-/Pause-Taste auf meinem Laptop zu drücken, um im Hintergrund laufende Medien anzuhalten. Mit dieser Tastatur muss ich jedoch meine eigenen Tastenkombinationen erstellen, da es keine Medientasten gibt. Bis jetzt habe ich es geschafft, Tastenkombinationen für die Lautstärkeregelung zu erstellen.
Recherche und meine Versuche:
Ich habe diese Seite gefunden, die einen Befehl zum Simulieren von Medientasten vom Terminal zeigt. https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181. Der Befehl ist
xdotool key XF86AudioPlay
, aber wenn ich daraus eine Tastenkombination mache, indem ich gehe zuEinstellungen > Tastatur > Anwendungsverknüpfungen. Es scheint nicht zu funktionieren.Wenn ich die Tastenkombination drücke, die ich aufSuper+F11meine CPU-Auslastung steigt etwas an, was bedeutet, dass die Verknüpfung funktioniert. Ich habe dies bestätigt, indem ich den Befehl geändert habe, den die Verknüpfung ausführt, wodurch,
exo-open --launch WebBrowser
wie Sie vielleicht gedacht haben, mein Webbrowser geöffnet wird, wenn ich drückeSuper+F11.Da ich mich ein wenig mit C/C++ auskannte, habe ich dieses Wrapper-Programm erstellt, das genau dasselbe macht
#include <stdlib.h>
int main() {
system("xdotool key XF86AudioPlay");
}
und habe die Verknüpfung zum Ausführen dieses Programms zugeordnet, aber leider funktioniert es immer noch nicht.
Wie erhalte ich den Befehl, den XFCE ausführt, wenn ich die Standard-Wiedergabe-/Pause-Taste auf meiner Laptoptastatur drücke, da dadurch scheinbar alle im Hintergrund laufenden Medien abgespielt/pausiert werden.
Ich verwende XFCE unter Arch Linux. Normalerweise höre ich Musik über Rhytmbox Music Play.
Antwort1
Wenn Sie nur steuern möchten, sollte es ausreichen, rhythmbox
das rhythmbox-client --play
Lied abzuspielen oder anzuhalten.rhythmbox-client --pause
Aber ich habe diese Software playerctl
in einem Arch-Wiki gefunden, die die aktuell wiedergegebenen Medien steuert. Ich bin mir nicht 100 % sicher, welche Priorität sie hat, aber wenn ich ein YouTube-Video geöffnet habe, steuert sie das standardmäßig, anstatt mit Rhythmbox zu kollidieren. Um zwischen Wiedergabe und Pause zu wechseln, führen Sie aus playerctl play-pause
. Um zum nächsten Video/Musikstück zu gelangen, führen Sie aus playerctl next
, und für das vorherige Video/Musikstück führen Sie aus playerctl previous
.
Ich bin nicht 100 % sicher, ob dies auf anderen Distributionen funktioniert oder ob es überhaupt verfügbar ist, aber bei mir funktioniert es auf Arch.
Antwort2
Rhythmbox scheint beide rhythmbox-client --play/--pause
Befehle zu unterstützen, und D-Bus-Befehle, die mit gesendet werden dbus-send
, wie indiese Frage auf AskUbuntuUnddiese Frage hier auf U&L.SE, verlinkt von dieser AskUbuntu-Antwort.
Kurz gesagt dbus-send
würde der Befehl lauten:
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
unter der Bedingung, dass zuerst die MPRIS-API von Rhythmbox aktiviert werden muss.
Wenn Sie jedoch mit denselben Tastendrücken auch YouTube-Videos steuern müssen, müssen Sie diese Tastendrücke wahrscheinlich verwenden, um ein Skript zu aktivieren, das ermittelt, welcher Player gerade abspielt, und die richtigen Befehle entweder an Rhythmbox oder an den Webbrowser (oder eine andere App) sendet, den Sie zum Abspielen von YouTube-Videos verwenden. Und für den Browser müsste der Befehl/Tastendruck für die richtige Browser-Registerkarte gesendet werden, was nicht unbedingt die aktuelle sein muss ...
Antwort3
Ich habe das Gleiche festgestellt wie Sie: Der Befehl xdotool key XF86AudioPlay
funktioniert von einer Shell aus, aber nicht von einer Verknüpfung oder einem Anwendungsstarter aus. Daher bin ich zu dem Schluss gekommen, dass er xdotool
nur funktioniert, wenn er von einer interaktiven Shell aus ausgeführt wird. Und lustigerweise habe ich ihn mit dem folgenden Befehl in Tastaturkürzeln und Startsymbolen (z. B. in der Taskleiste) zum Laufen gebracht:
bash -i -c 'xdotool key XF86AudioPlay'
Sobald man den -i
Schalter entfernt und damit bash
nicht-interaktiv macht, funktioniert es nicht mehr. Keine Ahnung, warum das so ist...
Das Schöne an der XF86AudioPlay
Methode ist, dass sie auch zum Anhalten im Hintergrund laufender Youtube-Videos beispielsweise in Firefox funktioniert.
Aktualisieren
Okay, ich habe herausgefunden, warum das passiert. In meinem .bashrc
hatte ich geändert $LD_LIBRARY_PATH
, was zum Ausführen notwendig war xdotool
. Dies geschah jedoch nicht, als ich mich bei meiner GUI-Sitzung (XFCE) anmeldete. Daher würde jedes Programm, das direkt von der GUI (z. B. einem Launcher oder Alt+F2) und nicht von einem Terminal gestartet wird, die geänderten nicht sehen und $LD_LIBRARY_PATH
somit einige Bibliotheken vermissen.
$LD_LIBRARY_PATH
Die richtige Lösung bestand also eigentlich darin, die Änderungen von in .profile
statt in einzufügen .bashrc
. Auf diese Weise würde XFCE sie beim Anmelden ausführen und alle Programme könnten sie sehen. Trotzdem werde ich die alte Antwort für zukünftige Besucher hier lassen.
Antwort4
Wenn Sie Audacious verwenden, können Sie
audacious -t
um zwischen Pause und Wiedergabe umzuschalten (siehe man audacious
).