目录


GHC的升级

随着2017年年初发布GHC8.0.2经过半年时间,笔者也决定跟随Overlay引入进行升级。总体来说升级还算顺利,但是我们都清楚,升级一般伴随着新功能的同时会移除老旧功能,甚至出现代码API变更,必须跟随升级。

添加以下配置即可伴随Gentoo的Haskell Overlay升级到最新的版本。升级完别忘记使用haskell-updater进行清理。

# /etc/portage/package.keywords
dev-haskell/*::haskell ~amd64

XMonad的升级

跟随GHC8.0.2,xmonad与xmonad-contrib可以升级到0.13版本。API方面并没有什么很严重的问题导致从0.11版本过来的用户需要改动配置文件。不过查看报错信息,还是可以看到一些已被弃用(deprecated)的用法。

下面将举出

Data.Default.def

默认变量现在均统一使用这个类中的类型。

  • defaultGSConfig
myGSConfig = defaultGSConfig { gs_font = "xft:monospace:size=8:bold" }
-- 改为
myGSConfig = def { gs_font = "xft:monospace:size=8:bold" }
  • defaultTheme
myTheme = TI { themeName = "..."
             -- theme = defaultTheme {...} 改为
             , theme = def {...}

             -- 补充新的配置选项,主题作者
             , themeAuthor = "..."
             -- 补充新的配置选项,主题描述
             , themeDescription = "..."
             }
  • defaultXPConfig
, ((modm .|. controlMask, xK_s), sshPrompt defaultXPConfig)
-- 改成
, ((modm .|. controlMask, xK_s), sshPrompt def)
  • defaultConfig
config <- ... $ defaultConfig {...}
-- 改成
config <- ... $ def {...}

工具条高度问题

xmonad升级后会发现原本工具条的高度占用似乎没了,也就是原来的avoidStructs功能失效了。这是由于引入了新的配置项目Dock导致,可以参考xmonad-contrib-0.13的文档1

-- 如果原来没有引入过,现在需要引入
import XMonad.Hooks.ManageDocks

xmonad config
-- 改成
xmonad $ docks config

程序启动器

相信用过Gnome2或者KDE的用户还是比较熟悉那个Alt+F2的功能,打入想要启动的应用名称回车即可,轻松写意。在Awesome下面有自带,XMonad其实也有。只是笔者之前沉迷suckless,所以选用了dmenu2,但这东西首次使用时都需要等待缓存所有命令好久,感觉不好用。

在升级配置的过程中发现XMonad自带就有挺好用的类似功能3,界面也非常朴素,老棒了。

-- 引入
import XMonad.Prompt.Shell (shellPrompt)

-- 在原来配置快捷键的地方加入,即可
-- shell
, ((modm, xK_r), shellPrompt def)

参考资料

__END__


  1. https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Hooks-ManageDocks.html

  2. http://tools.suckless.org/dmenu/

  3. https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Prompt-Shell.html