无法在 Xmonad 上设置亮度和媒体控制键

Can't set brigtness and media control keys on Xmonad

我设法自己从头开始设置我的 XMonad 配置 - 但我在设置亮度和媒体控制键时遇到困难 - 而且我没有编程经验或 Haskell 这方面的经验,因此我不知道如何阅读错误消息(我的错,对不起)。当我的问题恢复到更改前的状态时,我没有编译错误。

所以我尝试从其他人的点文件中复制,但我总是遇到编译错误。在这里,我复制了 Derrek Taylor 的 XMonad 配置,特别是与问题相关的部分。所以我复制了:

 -- Multimedia Keys
    , ("<XF86AudioPlay>", spawn (myTerminal ++ "mocp --play"))
    , ("<XF86AudioPrev>", spawn (myTerminal ++ "mocp --previous"))
    , ("<XF86AudioNext>", spawn (myTerminal ++ "mocp --next"))
    , ("<XF86AudioMute>",   spawn "amixer set Master toggle")
    , ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute")
    , ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute")
    , ("<XF86HomePage>", spawn "firefox")
    , ("<XF86Search>", safeSpawn "firefox" ["https://www.duckduckgo.com/"])
    , ("<XF86Mail>", runOrRaise "thunderbird" (resource =? "thunderbird"))
    , ("<XF86Calculator>", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk"))
    , ("<XF86Eject>", spawn "toggleeject")
    , ("<Print>", spawn "scrotd 0")
    ]

来自他位于 this link.

的点文件

我在编译时收到以下错误(很抱歉没有粘贴文本本身,因为我尝试过的键盘组合没有用):

The error message

就导入而言,我有以下内容:

import XMonad
 11 import Data.Monoid
 12 import System.Exit
 13 import XMonad.Util.SpawnOnce
 14 import XMonad.Util.Run
 15 import XMonad.Hooks.ManageDocks
 16 import qualified XMonad.StackSet as W
 17 import qualified Data.Map        as M
 18 import XMonad.Hooks.DynamicLog
 19 import XMonad.Hooks.ManageHelpers
 20 import XMonad.Hooks.UrgencyHook
 21 import XMonad.Util.WorkspaceCompare
 22 import XMonad.Util.EZConfig
 23 import Graphics.X11.ExtraTypes
 24 import XMonad.Hooks.EwmhDesktops
 

你能帮帮我吗?亮度和媒体控制键,以及后来 XMobar 上的电池小部件(如果我自己不明白的话,将放在另一个 post 上)是我的笔记本电脑 100% 准备就绪之前需要做的最后一件事.到目前为止,我真的很享受这段旅程,我学到了很多东西,所以如果你不仅帮助我解决问题而且向像我这样的菜鸟解释它,我会很高兴。

提前致谢!

好的,看来我不小心解决了我自己的问题,但以最不寻常的方式:

  1. 我转到 this site 因为我正在搜索如何控制亮度。从字面上看,只是去 Duck Duck Go 并输入“如何控制亮度 XMonad”或其他内容。安装了 Lux,程序来完成它。出于某种原因,在尝试 XBrightness 后它没有注册我的屏幕,或者发现了一些与此讨论无关的其他错误消息,所以我只是坚持使用 Lux。

  2. 然而,虽然一般语法看起来不错,但我现在注意到我在上面给 link 的 DT 配置对 XF 键有不同的名称。好吧,我在写这篇文章时才发现,我遇到问题的原因是 EZ 键盘映射配置——DT 在使用它,而我似乎没有。然而,这种认识是在完成第 3 步之后才实现的。

3.I 拍摄于 Luke Smith's DWM fork which I used for a while before switching to XMonad。原来键映射名称不同,我尝试了它们。然后注意到 XF86AudioLowerVolume 中的 X 被大写,而在第 1 步中的 , ((0, xF86XK_MonBrightnessUp), spawn "lux -a 10%") 之类的东西中则不是。由于此时 Lux 工作,我只是玩游戏以确保两种情况下的语法相同。最后我还发现 Luke 的 dwm 分支保存了键的确切名称,包括小写字母,所以我只是坚持复制语法并更改适当的键绑定。 几条 XMonad 编译错误消息后一切正常!

现在我的控件如下所示:

 , ((0, xF86XK_MonBrightnessUp), spawn "lux -a 10%")
 , ((0, xF86XK_MonBrightnessDown), spawn "lux -s 10%")
 , ((0, xF86XK_AudioMute), spawn "amixer set Master toggle")
 , ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 5%- unmute")
 , ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 5%+ unmute")

我不再讨厌 window 经理,而是对他们产生了兴趣。我想我应该学习一些基本的编程:)

希望这对其他遇到 XMonad 问题的人有用。

干杯!