无法在 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. 的 dotfiles

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

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
 

你能帮帮我吗? Bightness 和 Media Control 键,以及稍后 XMobar 上的电池小部件(如果我自己不明白,将在另一篇文章中)是我的笔记本电脑 100% 准备就绪之前我需要做的最后一件事。到目前为止,我真的很喜欢这段旅程,我学习了很多,所以如果你不仅帮助我解决问题,而且向像我这样的菜鸟解释一下,我会很高兴。

提前致谢!

解决方法

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

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

  2. 然而,虽然一般的语法看起来不错,但我现在注意到我在上面提供链接的 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 时遇到问题的人有用。

干杯!