XMonad 配置教程

我已经用XMonad作为窗口管理器好几年了,XMonad非常稳定,但是中文里一直都没有一篇 比较好懂的XMonad配置教程,我想可能的原因是XMonad的门槛比较高—配置需要懂一点 Haskell。

如果你还没有听过Haskell,我想需要先了解一下Haskell:

窗口管理器和桌面环境

最开始玩的时候,我是傻傻分不清这两个东西。竟然还有窗口管理器这个东西? 桌面环境是指一些集成了很多工具的集合,例如 Gnome,例如 KDE,例如Windows桌面。 而窗口管理器则是其中一个单独的部分,专门用来管理窗口(window)该要怎么摆放。

绝大部分桌面提供的窗口管理器都是手动档,即需要用户手动去把窗口移到不同的地方,调整 成不同的大小。如图:

Widnows 7 window manager

而XMonad则是自动档,它会自动帮你调整窗口的大小。再加上XMonad的另一个特性:平铺。 窗口管理器一般分为两种,平铺式和遮盖式。遮盖式即像Windows7那样,一个窗口遮挡住 另外一个窗口,而XMonad则与之相反,是平铺式,即窗口和窗口之间互不遮挡,例如这样:

XMonad

安装XMonad

XMonad现在最新的版本是 0.13。一般会分成两个包:xmonadxmonad-contrib。前者 是XMonad的核心,而后者则是一些用户贡献的插件。

  • ArchLinux: $ sudo pacman -S xmonad xmonad-contrib
  • Ubuntu/Debian: $ sudo apt-get install xmonad xmonad-contrib

此时执行一下 ls /usr/share/xsessions/ 会发现多了一个 xmonad.desktop,但是 先不要着急退出当前窗口管理器或者桌面环境,先安装一下 dmenu

  • ArchLinux: $ sudo pacman -S dmenu
  • Ubuntu/Debian: $ sudo apt-get install dmenu

此外还需要保证自己安装了最少一个终端程序,例如 gnome-terminal 或者 xterm

然后退出当前桌面环境或者窗口管理器,选择xmonad,然后输入用户名密码,登录之后就会 发现空空的啥也没有了。不要担心,这样才是正常的:

选择XMonad

开始配置

我们首先当然是一通乱按,发现什么也没有。

然后我们按下 altp,这时候看最上面,是不是出现了一个可以输入字符的地方? 那就是dmenu。假设我们安装的终端模拟器是 gnome-terminal,那么我们输入 gnome-terminal 然后回车,gnome-terminal 就会显现在我们眼前了。之后我们输入一个简单的配置文件。

$ cat ~/.xmonad/xmonad.hs
import XMonad
import XMonad.Config.Desktop
import XMonad.Hooks.EwmhDesktops

main = do
    xmonad $ ewmh $ desktopConfig {
        terminal = "gnome-terminal"
    }

然后我们按下 altq,稍等一下,duang,是不是立马就变了样呢?此时我们多次 按下 shiftaltenter,会发现多个终端自动被排列好,shift,alt,c则关闭 了当前聚焦的窗口。

常用快捷键

那当然是要看 man page啦。打开终端模拟器,输入 man xmonad。此处需要提醒的是 modmodMask 默认情况下指的都是 alt键。

其他软件

学完了XMonad的常用快捷键,接下来我们看看一些常用的软件:

  • xmobar 状态栏,一般会配合trayer构成一个panel,这样就可以显示各种状态和后台运行的icon了
  • taffybar 状态栏,是上面的组合的替换者,但是在ArchLinux下得自己安装
  • feh 用来设置背景图片的
  • udiskie 自动挂载U盘
  • nautilus 图形化文件管理器,偶尔还是用得着的
  • xcompmgr 将多个图形叠加,美化
  • fcitx 输入法
  • network-manager和network-manager-applet 安装之后,执行 nm-applet,就可以看到一个icon,点开就可以管理网络了
  • lxappearance 美化,默认的界面真实丑的要命,所以每次我都会安装这个,选一个好看的gtk主题。。。
  • scrot 截图
  • virt-manager和kvm 安装虚拟机,虽然host不是Windows,但是现实生活中还是无法完全离开Windows的

如何配置

本来最开始我想讲一讲怎么配置的,后来我想了一下,XMonad门槛高就高在,其配置文件是Haksell写的, 而Haskell一时半会儿讲不完,所以我只能说,我学习配置XMonad的过程,主要是:

Haskell的好处就在于,你知道 main函数里 xmonad需要接什么参数,然后按照类型提示 把参数塞进去就可以。


更多文章
  • Gin源码阅读与分析
  • 如何面试-作为面试官得到的经验
  • 自己写一个容器
  • Golang(Go语言)中实现典型的fork调用
  • 软件开发之禅---大事化小,各个击破
  • 程序员的自我修养:链接,装载与库 阅读笔记
  • Redis源码阅读与分析二:双链表
  • Redis源码阅读与分析三:哈希表
  • Redis源码阅读与分析一:sds
  • Golang runtime 源码阅读与分析
  • Golang的一些坑
  • GC 垃圾回收
  • 设计一个路由
  • Go语言性能优化实战
  • 那些年开发的时候踩过的坑