Ubuntu 22.04安装Xmonad 0.17时提示找不到DBus模块的求助
在Ubuntu 22.04上安装带DBus支持的最新版Xmonad(Stack方式)
以下是针对全新Ubuntu 22.04系统的分步安装指南,解决DBus模块找不到的问题:
1. 安装系统基础依赖
首先更新系统包并安装Stack和DBus相关开发库:
sudo apt update && sudo apt upgrade -y sudo apt install haskell-stack libdbus-1-dev -y
libdbus-1-dev是系统级DBus开发文件,确保Haskell的DBus绑定能正常编译haskell-stack用于管理Haskell项目的依赖和编译环境
2. 初始化Stack环境
运行以下命令让Stack自动下载并配置适配的GHC编译器(无需手动安装Haskell环境):
stack setup
3. 创建Xmonad配置项目
Stack通过项目目录管理依赖,我们需要在Xmonad配置目录下创建配置文件:
- 创建并进入Xmonad配置目录:
mkdir -p ~/.xmonad && cd ~/.xmonad - 创建
stack.yaml文件(指定依赖版本和解析器):
注:resolver: lts-21.25 packages: - . extra-deps: - xmonad-0.17.2 - xmonad-contrib-0.17.1 - dbus-1.2.18lts-21.25是兼容Ubuntu 22.04和Xmonad 0.17的解析器版本,确保依赖兼容性 - 创建
package.yaml文件(定义项目依赖):name: xmonad-config version: 0.1.0.0 dependencies: - base >= 4.14 && < 5 - xmonad - xmonad-contrib - dbus executables: xmonad: main: Main.hs source-dirs: . - 创建
Main.hs配置文件(基础配置+DBus支持,适配Polybar):import XMonad import XMonad.Hooks.DynamicLog import DBus.Client import DBus.Types main = do dbus <- connectSession xmonad $ def { logHook = dynamicLogWithPP $ def { ppOutput = sendPolybarUpdate dbus } } sendPolybarUpdate :: Client -> String -> IO () sendPolybarUpdate dbus str = do let signalMsg = signal "/org/polybar/xmonad" "org.polybar.xmonad" "update" appendVariant signalMsg $ toVariant str send dbus signalMsg
4. 编译并安装Xmonad
在~/.xmonad目录下执行编译命令,Stack会自动下载所有依赖并编译:
stack install
编译完成后,可执行文件会被放到~/.local/bin目录下。
5. 配置系统识别自定义Xmonad
- 确保
~/.local/bin在系统PATH中:echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc - 创建Xsession桌面文件,让登录界面能识别我们编译的Xmonad:
写入以下内容后保存退出:sudo nano /usr/share/xsessions/xmonad-stack.desktop[Desktop Entry] Name=Xmonad (Stack) Comment=Lightweight tiling window manager with DBus support Exec=/home/$USER/.local/bin/xmonad Type=Application Keywords=tiling;window;manager;
6. 测试登录
注销当前系统,在登录界面选择Xmonad (Stack)选项登录,此时Xmonad应该能正常启动,且DBus模块不会再出现找不到的错误。
内容的提问来源于stack exchange,提问作者AGE_DK
相关产品推荐
相关产品推荐

