avatar只是一個漢堡🍔

总结

本文介绍了在 macOS 系统上实现类似 Linux 环境下 i3-wm 窗口管理器的免滑鼠操作方法,通过结合使用 chunkwm 和 skhd 软件包,实现了键盘驱动的窗口管理,并提供了详细的安装和配置步骤。

摘要

文章首先提到了作者对于窗口管理器(WM)的使用经历,从 Gnome 到 Unity,再到 Awesome 和 i3-wm,最终在 macOS 上寻找到了类似的解决方案——chunkwm。作者通过 homebrew 安装了 chunkwm 和 skhd,并分享了自己的配置文件,以便其他用户能够快速上手。文章还详细说明了如何通过键盘快捷键来操作窗口的布局、移动和调整大小,以及如何结合 qutebrowser 实现完全的键盘操作体验。作者强调了全键盘操作提高专注和生产力的好处,并指出了学习曲线可能的挑战。最后,作者鼓励读者尝试这种操作方式,并提供了进一步交流的途径。

观点

  • 窗口管理器的选择对于提高操作效率至关重要:作者从多个窗口管理器的使用经验中,发现了对自己操作习惯最合适的 chunkwm。
  • 键盘操作提升专注:全键盘操作可以减少离开键盘的次数,从而减少分心,提高工作效率。
  • 配置和定制的重要性:作者分享了自己的配置文件,强调了通过定制快捷键来适应个人操作习惯的重要性。
  • 学习曲线的挑战:虽然全键盘操作有其优势,但作者也指出了初期学习和适应的难度。
  • 推荐其他工具以完善体验:作者推荐了 qutebrowser 作为完全支持键盘操作的浏览器,以配合 chunkwm 和 skhd 使用。
  • 社区支持和交流:文章鼓励读者在遇到问题时进行交流,提供了留言和 Twitter dm 的方式来获取帮助。

MacOS 免滑鼠的視窗管理 chunkwm + skhd = i3-wm

因為 Window Manager 不知道要打成視窗管理軟體還是視窗管理環境 在本篇文章統一名稱為 WM,請見諒。

以前沒有錢買 Mac 的時候除了 Windows 打遊戲之外,最常用的作業系統就是 Linux 了,我還記得那時候 Gnome(2010) 正在改朝換代。

Gnome 3 — 2010

因為 Unity 加上非常不順暢的多餘動畫效果,到處都在罵。

各種 MemLeak,效能拖垮舊式電腦,導致使用者快速出走。

各個大牌 WM 都在搶使用者的佔有率,已經習慣 Vim 操作的我也在茫茫 WM 海裡面浮載浮沉,一時之間盤子中太多東西,不知道要選哪一個的時候、我注意到了 Awesome:

AwesomeScreen

馬上就被吸引住了,主要是因為 操作中完全不需要用到滑鼠 這個點非常吸引我, 當下就自己嘗試編譯了,結果才發現學習曲線對於那時候的我來說太高,只好先放棄。

後來嘗試在網路上尋找類似的 WM ,我找到了那時候還很年輕的 i3-wm

i3-wm

簡單的 Hotkey,直觀的操作,簡易的 config 配置讓人一秒愛上。

還有 i3wm-gaps 版本更是讓人愛不釋手。

i3-wm-gaps

直到有了 Mac 之後一直對那個感覺念念不忘,畢竟那個年代的筆電觸控板,絕對不會讓你想要多用。

但是 Mac 上一直沒有人做出類似的套件,也寫不出來,這件事情就隨著生活越來越忙綠而拋到腦後⋯⋯

直到最近在 Github 上面亂逛的時候突然想到這件事情,一時興起就稍微拜了一下大神,發現了 chunkwm 這個套件,非常的小眾,看到 Youtube 上的不專業影片顯示出的效果之後感動到快落淚。

chunkwm

我想要這個東西,而且是馬上!

經過半小時的安裝跟配置,我現在幾乎不用碰到觸控板就能做出 90% 會在電腦上面做的事情了。

000

chunkwm 總共分為三個小套件,如果是手動編譯會非常麻煩,homebrew 安裝直接把三個都裝好了,所以不需要在做多餘的設置。

一開始沒找到方法,所以我是自己編譯的⋯⋯

再找到說明文檔的時候看到 homebrew 的方法立馬覺得自己是智障⋯⋯

首先,我們要先在 homebrew 上 tab 一個 source:

$ brew tap koekeishiya/formulae

然後就可以安裝 chunkwm 了:

$ brew install chunkwm

如果想要安裝最新的版本,在安裝前加上 --HEAD 即可: $ brew install --HEAD chunkwm

001

安裝 skhd 也是非常簡單, 直接執行 $ brew install skhd 就完成了

兩個套件都安裝完成之後,可以先執行 $ brew services start chunkwm 查看一下效果,但是記得看完之後先關閉,因為基本的操作按鍵我們要用 skhd 實現,下一步要開始安裝啦。

$ brew services stop chunkwm

010

chunkwm 預設的 config 檔案放置在 ~/ 的資料夾中,為了怕之後忘記, 編輯他之前先 $ chmod +x .chunkwmrc 將檔案改為可執行。

把檔案打開之後可以看到一堆註解掉的設定範例,可以依照自己的喜好做更改。

如果不想自己調適的話,可以直接使用我的版本:

然後 :wq 儲存關閉即可。但是不要緊張,現在打開 chunkwm 還是不能操作,因為 skhd 快捷鍵還沒編輯,

所以來去下一步。

配置 skhd

skhd 的設定當是最重要的部分,因為操作 chunkwm 的快捷鍵都必須在此設置, config 檔案安裝完之後應該會在 ~/.skhdrc 這個位置。 雖然說在官方的 repo 中有設定檔的 範例 , 但是跟我之前操作 i3-gaps 有明顯的差別,所以我打算把設定改成跟 i3 相似的設定檔案,

這邊我參考了 這個設定:

看過之後發現跟 i3 的設定非常像,因為 Mac 的 app 常常使用到 cmd 當作主要快捷組合,所以作者把 super 改為 alt,方便操作也不會遮蓋到大部分 app 的快捷鍵。但是總覺得少了什麼⋯⋯ 更改視窗大小的快捷鍵好像沒有寫進去,

沒關係,那我們來自行添加吧。

因為要考慮到下面的情況,所以 resize 並不是四條指令就能簡單的解決的:

+-----------------------+
|           |           |
|           |     2     |
|           |-----------|
|     1     |  3  |  5  |
|     ^     |-----------|
|           |     4     |
|           |           |
+-----------------------+

當要重新調整 3 的大小時我們必須要改變 4 個方向的大小。

經過一番研 (ㄗㄨㄛˋ) 究(ㄙˇ),在 Wiki 頁面的小角落找到啦~

# change windows size
# shrink/extend width/height                                       
alt + shift + cmd - h : chunkc tiling::window --use-temporary-ratio -0.05 --adjust-window-edge west;  chunkc tiling::window --use-temporary-ratio -0.05 --adjust-window-edge east
alt + shift + cmd - j : chunkc tiling::window --use-temporary-ratio -0.05 --adjust-window-edge north; chunkc tiling::window --use-temporary-ratio -0.05 --adjust-window-edge south
alt + shift + cmd - k : chunkc tiling::window --use-temporary-ratio  0.05 --adjust-window-edge north; chunkc tiling::window --use-temporary-ratio  0.05 --adjust-window-edge south
alt + shift + cmd - l : chunkc tiling::window --use-temporary-ratio  0.05 --adjust-window-edge west;  chunkc tiling::window --use-temporary-ratio  0.05 --adjust-window-edge east

把上面加進 config 的最下面就完成了。

011

首先我們要啟動兩個服務: $ brew services start chunkwm $ brew services start skhd

如果你跟我一樣桌面常常有很多視窗飛來飛去的話,應該可以看到視窗自動變成格子狀各自排好了。

可以看到當視窗正在被 Focus 的時候,有個小藍色框框圍繞在周圍:

示意圖

可以簡單的使用 alt + h j k l 切換視窗的 focus。 如果要切換 單一畫面暫時全畫面,可以按下 alt + s 將視窗暫時放大, 要變回 Tiling 模式的時候在按下 alt + e 即可。

快捷操作

下面來個簡單的快捷鍵介紹:

  • alt + hjkl 切換視窗的 focus
  • alt + s focus 視窗全屏
  • alt + e 切換回拼圖排列
  • alt + shift + hjkl 移動 focus 視窗的位置
  • alt + cmd + shift + hjkl 調整 focus 視窗的大小
  • alt + r 旋轉所有視窗 90 度
  • alt + shift + space focus 視窗懸浮(可以亂移動)
  • alt + shift + 1234 把 focus 視窗送到 1234 的桌面(要先有桌面,必須手動新增)
  • alt + shift + p n m 把 focus 視窗送到 p(上一個) n(下一個) m(最後切換的) 桌面,如果條件不成立將無動作。
  • alt + p n 切換 focus 到 p(上一個) n(下一個) 視窗

100

這個是我自己想要寫出來的,跟本文主題只有一點點有關係, 就是可以完全用鍵盤操作的瀏覽器,叫做 qutebrowser,用起來非常小巧好用,熟悉後手完全不用離開鍵盤就能做到瀏覽網頁的動作。

基於 Python + PyQt5 ,做出來一個 vim 操作方式的瀏覽器,因為定義在 ‘極簡’ 瀏覽器,所以內建 adblock ,瀏覽網站更輕鬆。

目前有 Mac 版本,直接使用 homebrew 就能安裝了:

$ brew cask install qutebrowser

就可以在 applications 資料夾裡面找到囉! 搭配 chunkwm 之後,除了需要按到 toolbox 的操作,基本上不會碰到滑鼠了。

心得

其實全鍵盤操作本來就是個很玄學的東西,使用人數可想而知非常的少,畢竟滑鼠帶給我們的便利性已經遠遠超乎想像了,只是在一些特殊的狀況下,例如正在做一些高度專注的事情,結果因為一些事情雙手必須要離開鍵盤,這個動作一來一往之後,往往高度專注的感覺都會被打斷而開始分心。

能夠把這種狀況發生的頻率降到最低,相信對產量(誤)也是會有好的提升。

唯一的缺點就是學習曲線可能比較大,一開始強迫自己使用的時候就像是重新開始學習一套軟體一樣,快捷鍵會比較難習慣,不過陣痛期大概就幾天到一個禮拜,因人而異,習慣之後會發現不一樣的世界的。

如果操作上有問題可以留言或者 Twitter dm 我,希望大家都有個愉快的跨年夜。

我是漢堡,我們下篇文章再見👋

Originally published at leburger.gitlab.io on December 27, 2018.

Chunkwm
Skhd
Macos
I3
教學
Recommended from ReadMedium