using kwm

  1. osx

一些废话(可跳过)

前一段时间也算是好好的折腾了一下 Linux 桌面,然后深深地“迷上”了 i3,不过由于在水果本子上安装 Linux 不太顺利(懒)。

所以工作的大部分时间还是用着先进系统,不停需要切换到鼠标点点点点点点点点点真的是很烦人,更不提先进系统上那先进的 Window 系统(每次切到 App 会把所有的窗口都拉到前面来)了。

之前也有测试过各种试图在先进系统上模拟 i3 的应用,比如 amethyst、slate 等等,怎么说呢…都…不好用…包括者别要说到的 kwm 之前也已经试过,当时相当不稳定,而且功能也不太全,不过这次尝试之后发现已经能用了,基本能有 1/3 用 i3 的时候那么爽了…

[GitHub](https://github.com/koekeishiya/kwm) 上非常详细的,最简单的当然是

brew install koekeishiya/kwm/kwm

启动/管理的最简单方法是用 [homebrew-services](https://github.com/Homebrew/homebrew-services):

brew servies start/stop/restart kwm

然后你就会发现你所有的 Window 开始跳来跳去了!Don't Panic!

在 Github 仓库里也有提供一个[example](https://github.com/koekeishiya/kwm/tree/master/examples) config, 不过好像现在的是简化版,大概是想让用户自行配置比较好吧,我这里是之前版本留下的比较完整的 [example](https://gist.github.com/merrickluo/b27fd1b69729d6e4bb8397a9a394b1ba) 和我自己的一些修改,里面基本所有的选项都有注释。

所有可用的选项在[这里](https://koekeishiya.github.io/kwm/kwmc.html)。

一些概念:

space = i3 workspace

window = i3 window

display = 显示器

然后下面是我自己用到的常用按键配置: cmd+ctrl 当做 i3 的 mod alt+ctrl 当作 i3 的 shift+mod

同一个 space 下切换焦点

kwmc bindsym cmd+ctrl-h window -f west
kwmc bindsym cmd+ctrl-l window -f east
kwmc bindsym cmd+ctrl-j window -f south
kwmc bindsym cmd+ctrl-k window -f north

同一个 space 下交换焦点 window 的位置

kwmc bindsym ctrl+alt-h window -s west
kwmc bindsym ctrl+alt-j window -s south
kwmc bindsym ctrl+alt-k window -s north
kwmc bindsym ctrl+alt-l window -s east

切换 space,基本跟 Mission Control 一样,不过没有动画(important!)

kwmc bindsym ctrl-1 space -fExperimental 1
kwmc bindsym ctrl-2 space -fExperimental 2
kwmc bindsym ctrl-3 space -fExperimental 3
kwmc bindsym ctrl-4 space -fExperimental 4

需要注意的是这个功能会把 Mission Control 搞坏

启动 prefix,类似 i3 的自定义 mode,在 prefix 状态下,所有快捷键有另外的用途

// Activate prefix mode
kwmc bindsym cmd+ctrl+q mode activate prefix

切换焦点到不同的显示器

kwmc bindsym cmd+ctrl+1 display -f 0
kwmc bindsym cmd+ctrl+2 display -f 1

轻量调整窗口宽度

kwmc bindsym prefix-h window -c reduce 0.05
kwmc bindsym prefix-l window -c expand 0.05

让 kwm 识别 Emacs 为普通窗口

kwmc rule owner="Emacs" properties={role="AXStandardWindow"}

有些需要 float 的窗口

kwmc rule properties={float="true"} owner="App Store"
kwmc rule properties={float="true"} owner="System Preferences"

可根据需求酌情添加

差点忘了最重要的:随时随地启动 iTerm2

kwmc bindsym cmd-return exec open -na /Applications/iTerm2.app

重启和重新加载配置

kwmc bindsym cmd+alt+ctrl-q quit
kwmc bindsym cmd+alt+ctrl-r config reload

这里上面一个命令虽然说是退出,但是因为我们是以 daemon 模式启动的,所以它会自动重启,我一般用这种方式来更新配置,因为下面一个命令按了之后 UI 没有反应,不知道有没有生效…

根据我这一两个星期的使用,大量使用的快捷键大概就这些了。

Problems

虽说现在已经到可用的程度,不过问题还是有一些的,比如有时候窗口跳来跳去,有些藏在后台的窗口会影响布局等…但是一般这种情况按下重启的快捷键也就好了…

现在拖后腿的反倒是用了 cVim 的 Chrome 呢,感觉不久后我又会启动一波 Firefox 体验活动了…