Wie kann ich Medienschlüssel mit i3 zum Laufen bringen?

8

Ich bin auf Manjaro von Gnome zu i3 gewechselt und bin fast fertig mit der Konfiguration des Fenstermanagers, der Terminalfarben und so weiter. Nach einiger Zeit habe ich mich entschlossen, Musik zu hören, und nach ein paar Minuten wurde mir klar, dass die Lautstärketasten und Wiedergabetasten nicht funktionieren.

Ich habe eine Razer Blackwidow Stealth 2014-Tastatur, daher sind diese Medientasten tatsächlich zusammen mit den Funktionstasten. Beispiel: Wiedergabe / Pause ist aktiviert F6und fungiert als Medientaste, wenn ich die FnTaste drücke , wie in Fn + F6.

Renato Oliveira
quelle
Ich habe versucht, diese Frage zu bereinigen, weil ehrlich gesagt etwa 90% davon einfach falsch waren . Jetzt ist es in Ordnung und Ihre Antwort klärt es auf. Zwei der Dinge, auf die Sie Ihre Antwort vorher / als nächstes hatten, waren genau in Ihrer Antwort. Die einzige wirkliche Verbesserung bestand darin, Play zu Play / Pause zu verschieben (was keinen Unterschied macht, ob es überhaupt funktioniert oder nicht). Darüber hinaus war der xevBefehl völlig Koje. Wenn dies die Ausgabe von xev wäre, wenn Sie diese Tasten drücken, würde Ihre Antwort funktionieren. Versuche es noch einmal. Ihr Staat sollte etwas XF86AudioNextund dergleichen sagen .
Evan Carroll

Antworten:

9

Die Suche nach der Antwort

Nach einiger Zeit mit den Steuerelementen habe ich einen Beitrag auf der alten i3-FAQ-Tafel gefunden: https://faq.i3wm.org/question/3747/enabling-multimedia-keys.1.html

Es heißt, Folgendes in die .config-Datei von i3 einzufügen (unten ist eine leicht modifizierte Version, bei der einige Zeilen entfernt wurden, die für diese spezielle Frage nicht relevant sind):

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sreen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness

# Media player controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPause exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

Und es hat auch nicht funktioniert, aber der Prozess, die Antwort zu finden, ist korrekt.

Die wahre Antwort

Zumindest für mich war das Problem, dass nach dem Kopieren dieser Zeilen die Schlüssel nicht funktionieren würden. Nach einigen weiteren Recherchen stellte ich fest, dass die Lautstärkebefehle etwas anders sein könnten, amixeranstatt PulseAudio zu verwenden pactl.

Am Ende blieben diese so:

# Media volume controls
bindsym XF86AudioMute exec amixer sset 'Master' toggle
bindsym XF86AudioLowerVolume exec amixer sset 'Master' 5%-
bindsym XF86AudioRaiseVolume exec amixer sset 'Master' 5%+

und sie fingen an zu arbeiten.

Die Wiedergabetasten waren etwas kniffliger. Ich folgerte, dass die .config angibt, welcher Befehl ausgeführt wird, um die Aktion auszuführen . Dann probierte ich playerctl play-pausemein Terminal an. Natürlich hat es nicht funktioniert, da playerctl nicht installiert war . Nach der Installation (mit sudo pacman -S playerctl) funktionierten diese Tastaturbefehle ebenfalls einwandfrei.

Renato Oliveira
quelle
Bei der Lautstärkeregelung hat der erste Weg für mich funktioniert, indem die Senken auf 1 anstatt auf 0 geändert wurden. Sie können Ihre Senken anzeigen, indem Sie die Paktliste | ausführen grep sink
Ramzi C.
1

Ich habe gerade 0 durch ein Beispiel ersetzt:

Pulse Audio-Steuerelemente

bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 1 + 5% # Soundlautstärke erhöhen bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 1 -5% # Soundlautstärke verringern bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 1 umschalten # Mute-Sound

Um zu sehen, welche Nummer für Ihr Audiogerät gilt, öffnen Sie pavucontrol und klicken Sie auf Ausgabegeräte. Die oberste ist 0, darunter eins usw.

hilf Kumpel
quelle
1

Ich fand, dass ich ein brauchte --, um das pactlvon dem zu trennen, set-sink-...und dass es konsistenter zu verwenden war, @DEFAULT_SINK@wenn Sie Kopfhörer verwenden.

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl -- set-sink-volume @DEFAULT_SINK@ +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl -- set-sink-volume @DEFAULT_SINK@ -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl -- set-sink-mute @DEFAULT_SINK@ toggle # mute sound
Luke Murray
quelle