Como você faz com que as teclas de volume e a tecla mudo funcionem no Xmonad?

21

Eu sou novo no Xmonad (acabei de instalá-lo ontem), e como nunca usei o haskell antes, achei a configuração um pouco confusa para mim. Eu consegui fazer o xmobar e o trayer funcionarem, mas não tenho ideia de como eu poderia fazer teclas multimídia para ajustar o volume. Alguém pode ajudar com isso?

Pergunta adicional: Como você gerencia seu volume no xmonad. Você usa o ícone da bandeja ou outras coisas assim?

Aqui está minha configuração do xmonad:

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")
    ]
    
por yasar 14.02.2012 / 13:01

4 respostas

22

Use 'xev' e toque nas teclas multimídia para descobrir seus nomes. Um pode ser 'XF86XK_AudioMute'. Então olhe o conteúdo de '/usr/include/X11/XF86keysym.h' e procure pelo nome. No meu sistema, 'XF86XK_AudioMute' é '0x1008FF12'.

Descarte onde você colocaria uma chave no seu arquivo de configuração. Pode parecer assim:

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

-CUT -

 } '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' irá definir o seu volume. O '0' substituindo mod4Mask permite que você toque na tecla multimídia sem segurar sua tecla mod.

    
por 14.02.2012 / 16:35
14

Veja este Graphics.X11.ExtraTypes.XF86 para obter as chaves que deseja e adicione ao seu arquivo de configuração:

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")
...]
    
por 19.02.2013 / 10:54
8

Se você estiver usando pulseaudio, pactl também deve funcionar.

, ((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")
]

0 é o id do sumidouro. pactl list short sinks mostrará lista de afundamentos.

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

mostrará o coletor padrão atual. Você pode usar o nome do coletor em vez da ID numérica.

Doulble traço -- informa 'isso não é opção (como -h), apenas valor' para pactl .

    
por 20.12.2013 / 09:25
3

Se amixer set Master 2- não funcionar. Tente amixer -D pulse set Master 2- em vez disso. Além disso, 2%- e 2%+ alteram o volume em 2%, o que pode ser mais fácil de usar. Você pode testar esses comandos no terminal para ajustá-los ao seu gosto antes de colocá-los em seu arquivo de configuração xmonad.

    
por 30.08.2015 / 03:15

Tags