You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.18
    
    注:lts-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:45:31