问题描述
我设法自己从头开始设置我的 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. 的 dotfiles
我在编译时遇到以下错误(抱歉没有粘贴文本本身,因为我尝试过没有键盘组合):
就进口而言,我有以下几点:
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
你能帮帮我吗? Bightness 和 Media Control 键,以及稍后 XMobar 上的电池小部件(如果我自己不明白,将在另一篇文章中)是我的笔记本电脑 100% 准备就绪之前我需要做的最后一件事。到目前为止,我真的很喜欢这段旅程,我学习了很多,所以如果你不仅帮助我解决问题,而且向像我这样的菜鸟解释一下,我会很高兴。
提前致谢!
解决方法
好吧,看来我不小心解决了自己的问题,但以最不寻常的方式:
-
我去了this site,因为我正在研究如何控制亮度。从字面上看只是去了 Duck Duck Go 并输入了“如何控制亮度 XMonad”或其他内容。装好Lux,程序来做。由于某种原因,在尝试 XBrightness 后,它没有注册我的屏幕,或者发现了一些其他与本次讨论无关的错误消息,所以我只是坚持使用 Lux。
-
然而,虽然一般的语法看起来不错,但我现在注意到我在上面提供链接的 DT 配置对 XF 键有不同的名称。好吧,我在写这篇文章时才发现,我遇到问题的原因是 EZ 键盘映射配置 - DT 正在使用它,而我似乎没有使用它。然而,在完成第 3 步之后,这种认识已经很多了。
3.我接受了 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 fork 保存了包括小写在内的键的确切名称,所以我只是坚持复制语法并更改适当的键绑定。
一些 XMonad 编译错误消息之后它让一切正常!
现在我的控件如下所示:
,spawn "lux -a 10%"),xF86XK_MonBrightnessDown),spawn "lux -s 10%"),xF86XK_AudioMute),spawn "amixer set Master toggle"),xF86XK_AudioLowerVolume),spawn "amixer set Master 5%- unmute"),xF86XK_AudioRaiseVolume),spawn "amixer set Master 5%+ unmute")
与其让我讨厌窗口管理器,我现在更感兴趣了。我猜我应该学习一些基本的编程:)
希望这对其他在使用 XMonad 时遇到问题的人有用。
干杯!