21

Я новичок в Xmonad (только что установил его вчера), и, поскольку я никогда раньше не использовал haskell, я обнаружил, что конфигурация меня немного смущает. Я кое-что заставил xmobar и trayer работать, но я понятия не имею, как мне сделать мультимедийные клавиши для регулировки громкости. Кто-нибудь может помочь с этим?

Дополнительный вопрос: как вы управляете своим объемом в xmonad. Вы используете иконку в трее или что-то подобное?

Вот моя конфигурация 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")
    ]

4 ответа4

22

Используйте «xev» и нажмите мультимедийные клавиши, чтобы узнать их имена. Одним из них может быть «XF86XK_AudioMute». Затем посмотрите содержимое файла /usr/include/X11/XF86keysym.h и найдите его имя. В моей системе «XF86XK_AudioMute» имеет значение «0x1008FF12».

Бросьте туда, где вы положили бы ключ в ваш конфигурационный файл. Это может выглядеть так:

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

-РЕЗАТЬ-

 } `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» установит вашу громкость. «0», заменяющая mod4Mask, позволяет вам нажимать мультимедийную клавишу, не удерживая нажатой клавишу «mod».

14

Смотрите эту графику.X11.ExtraTypes.XF86 для ключей, которые вы хотите добавить в свой конфигурационный файл:

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")
...]
8

Если вы используете pulseaudio, pactl также должен работать.

, ((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 является идентификатором раковины. pactl list short sinks .

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

покажет текущий приемник по умолчанию. Вы можете использовать имя раковины вместо числового идентификатора.

Doulble dash -- говорит 'это не опция (например, -h), просто значение' для pactl .

3

Если amixer set Master 2- не работает. Попробуйте amixer -D pulse set Master 2- . Также 2%- и 2%+ изменят громкость на 2 процента, что может быть проще в использовании. Вы можете проверить эти команды в терминале, чтобы настроить их по своему вкусу, прежде чем помещать их в свой файл конфигурации xmonad.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .