我是 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")
]
答案1
使用“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” 将设置您的音量。替换 mod4Mask 的“0”允许您点击多媒体键而无需按住 mod 键。
答案2
看到这个图形.X11.额外类型.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")
...]
答案3
如果您正在使用 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
是接收器 ID。pactl list short sinks
将显示接收器列表。
pactl stat|grep 'Default Sink' | cut -f2 -d':'
将显示当前默认接收器。您可以使用接收器名称代替数字 ID。
双破折号--
表示“这不是选项(像 -h),只是值” pactl
。
答案4
如果amixer set Master 2-
不起作用,请尝试一下amixer -D pulse set Master 2-
。此外,2%-
和2%+
将改变音量 2%,这可能更容易使用。您可以在终端中测试这些命令,以根据自己的喜好进行调整,然后再将它们放入 xmonad 配置文件中。