Wie können Sie in Xmonad Lautstärketasten und Stummschalttasten aktivieren?


22

Ich bin neu in Xmonad (habe es erst gestern installiert) und da ich noch nie zuvor haskell verwendet habe, fand ich die Konfiguration etwas verwirrend für mich. Ich habe etwas XMobar und Trayer-Arbeit gemacht, aber ich habe keine Ahnung, wie ich Multimedia-Tasten zum Anpassen der Lautstärke machen könnte. Kann mir jemand dabei helfen?

Zusätzliche Frage: Wie verwalten Sie Ihr Volume in xmonad? Verwenden Sie ein Taskleistensymbol oder ähnliches?

Hier ist meine xmonad Konfiguration:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

main = xmonad =<< statusBar myBar myPP toggleStrutKey myConfig

-- Command to launch the bar
myBar = "xmobar"

-- Custom PP, it determines what is written to the bar
myPP = xmobarPP { ppCurrent = xmobarColor "#429942" "" . wrap "<" ">" }

-- Key bindings to toggle the gap for the bar
toggleStrutKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)

myConfig = defaultConfig {
    manageHook = manageDocks <+> manageHook defaultConfig,
    layoutHook = avoidStruts $ layoutHook defaultConfig,
    modMask = mod4Mask -- Rebind Mod to windows key
    } `additionalKeys`
    [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock")
    ]

Antworten:


24

Verwenden Sie 'xev' und tippen Sie auf die Multimedia-Tasten, um deren Namen zu ermitteln. Eine davon könnte "XF86XK_AudioMute" sein. Schauen Sie sich dann den Inhalt von '/usr/include/X11/XF86keysym.h' an und suchen Sie nach dem Namen. Auf meinem System ist "XF86XK_AudioMute" "0x1008FF12".

Legen Sie das dort ab, wo Sie einen Schlüssel in Ihre Konfigurationsdatei einfügen würden. Es könnte so aussehen:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

-SCHNITT-

 } `additionalKeys`
    [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock"),
      ((0                     , 0x1008FF11), spawn "amixer -q sset Master 2%-"),
      ((0                     , 0x1008FF13), spawn "amixer -q sset Master 2%+"),
      ((0                     , 0x1008FF12), spawn "amixer set Master toggle")
    ]

'amixer' regelt die Lautstärke. Mit der '0', die mod4Mask ersetzt, können Sie auf die Multimediataste tippen, ohne die Mod-Taste gedrückt zu halten.


Wenn das Amixer-Set Master 2- für Ihr System nicht funktioniert, versuchen Sie es mit dem Amixer-Set Master 2% -
zhenjie

1
Wenn ich xev verwende und die Lautstärketasten auf meinem HP-Laptop drücke , werden keine Schlüsselcodes angezeigt , aber der Befehl showkey zeigt sie als Schlüsselcode 114 und Schlüsselcode 115 an. Wie muss ich diese XMonad-Konfigurationsdatei ändern, um mit meinen Schlüsseln zu arbeiten?
Valentinstag

Unter Ubuntu 13.04 funktionierte das Kopieren / Einfügen, ohne die Schlüsselsymbole nachzuschlagen.
Cory Klein

2
Wenn die Stummschaltung oben nicht aufgehoben werden kann, versuchen Sie es amixer -D pulse set Master togglestattdessen.
26.

1
Problem mit der xevStummschalttaste : Wenn ich die Stummschalttaste starte und drücke, ist im Terminal nichts zu finden. (Andere Tasten sind in Ordnung.) Ich habe nachgesehen /usr/include/X11/XF86keysym.hund Folgendes festgestellt: #define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */Wissen Sie, wo das Problem mit meiner Stummschalttaste liegt? Vielen Dank.
Nick

14

In der Datei Graphics.X11.ExtraTypes.XF86 finden Sie die gewünschten Schlüssel, die Sie zu Ihrer Konfigurationsdatei hinzufügen:

import Graphics.X11.ExtraTypes.XF86
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ...
, ((0, xF86XK_AudioLowerVolume   ), spawn "amixer set Master 2-")
, ((0, xF86XK_AudioRaiseVolume   ), spawn "amixer set Master 2+")
, ((0, xF86XK_AudioMute          ), spawn "amixer set Master toggle")
...]

Ich erhalte einen Fehler mit dieser Konfiguration: "xmonad.hs: 29: 1: Analysefehler (möglicherweise falscher Einzug) Bitte überprüfen Sie die Datei auf Fehler." In dieser Zeile beginnt "[...". Wissen Sie, warum dies passiert?
Valentinstag

4
Die Verwendung von Graphics.X11.ExtraTypes.XF86 ist die bessere Lösung für die Lesbarkeit.
Erik

@valentt Die Linie mit den Punkten ist nur ein Beispiel. Es sollte so aussehen, also haben Sie anstelle der drei Punkte Ihren ersten Schlüssel definiert:[ ((modMask, xK_e ), spawn "dmenu_run")
erik

9

Wenn du pulseaudio verwendest, pactlsollte das auch funktionieren.

, ((0 , xF86XK_AudioRaiseVolume), spawn "pactl set-sink-volume 0 +1.5%")
, ((0 , xF86XK_AudioLowerVolume), spawn "pactl set-sink-volume 0 -- -1.5%")
, ((0 , xF86XK_AudioMute), spawn "pactl set-sink-mute 0 toggle")
]

0ist sink id. pactl list short sinksZeigt die Senkenliste an.

pactl stat|grep 'Default Sink' | cut -f2 -d':'

zeigt die aktuelle Standardsenke an. Sie können anstelle der numerischen ID den Namen der Senke verwenden.

Doulble dash --sagt 'das ist keine Option (wie -h), nur value' zu pactl.


1
Nett! Allerdings --funktionierte das bei mir am 15.10 nicht, nur das Entfernen hat den Trick getan. Außerdem gibt es einen speziellen Namen @DEFAULT_SINK@, sodass Sie nicht mit gerätespezifischen Nummern / Namen herumspielen müssen.
IGEL

1
Dies ist perfekt und wird 0durch @DEFAULT_SINK@die obigen Befehle ersetzt! Zumindest für diejenigen, die von anderen DEs wechseln - vielen Dank an Sie!
Jan D

Diese Antwort hat den Vorteil, dass sie 100% übersteigt, anstatt zu verschließen (wie bei Amixer Caps). Das Schlimme ist, dass es nicht mehr funktioniert, wenn Sie die Musik von einem anderen Waschbecken abspielen.
Styropor fliegen

3

Wenn amixer set Master 2-das nicht geht. Versuchen Sie es amixer -D pulse set Master 2-stattdessen. Auch 2%-und 2%+wird die Lautstärke um 2 Prozent ändern, was möglicherweise einfacher zu bedienen ist. Sie können diese Befehle im Terminal testen, um sie Ihren Wünschen anzupassen, bevor Sie sie in Ihre xmonad-Konfigurationsdatei einfügen.


... -D pulse ...arbeitete für mich! Außerdem wird -qdie Ausgabe durch ein Flag beruhigt
Josh.F
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.