介绍i3-gap的个人设置
个人桌面环境的变迁
我第一个正式使用1的Linux发行版是Opensuse,所以入门的桌面环境应该算是KDE。
对Opensuse我有一点不满就是,Opensuse的设置中心与kde的设置中心有很多地方重合了,感觉很累赘,而且安装软件包的GUI做得还不是很好。
后来看到Gentoo能够按照自己的想法搭建环境,实在是非常喜欢。换到Gentoo后,选的还是KDE,不过Gentoo还有三种选择:
- kde-base/kde-meta 完整的KDE
- kde-base/kdebase-meta 基本的KDE环境
- kde-base/kdebase-startkde 非常精简的KDE
所以,即便就是在安装过程中,我也对“All about choices”这句Gentoo的口号有了很深的体会。
不过后来好景不长。我个人很多时候需要并列窗口,比如一边上网查资料,一边就在命令行中输入。虽说KDE可以用鼠标拖放并列,但是频繁地切换键盘鼠标总觉得很烦人。也曾经用过某个可以平铺窗口的kwin script,但不太理想,经常在打开emacs的时候假死掉。
碰到这些问题后,我把目光投向了真正的平铺式窗口管理器。其实在浏览4chan /g/版的时候,我就经常看到有人分享tilling wm的桌面截图,而且他们的截图窗口之间还有一定间隔,不像一般的tilling wm那样窗口之间是并在一起的,看起来很是高大上XD。既然要转到tilling wm,我的想法就是也要像4chan的一样。
因此最后,我选择了i3-gap。
个人设置
gap
~/.i3/config
... set $default_gaps_inner 8 set $default_gaps_outer 10 gaps inner $default_gaps_inner gaps outer $default_gaps_outer ... # fix graphics glitch for_window [class="^.*"] border pixel 0 for_window [class="(?i)urxvt"] border pixel 3
alternative dmenu
换了一个更快的菜单启动器
~/.i3/config
bindsym $mod+d exec --no-startup-id j4-dmenu-desktop
Dynamically tagging & quick switch
默认光用数字给workspace命名,实在不够直观。
有一种方案是把各种可能的workspace对应到各个数字上去,比如:
- 1:www 运行firefox
- 2:org-mode 运行emacs
- 3-6: coding
个人不太喜欢这种设置,太死板了。我偏好能够对工作空间动态命名,当然命名后也要能够做到用键盘快速切换。所以我就找到了quickswitch.py 3,正符合我的需求。
~/.i3/config
# quickswitch key bindings bindsym $mod+ctrl+w exec quickswitch.py -w bindsym $mod+ctrl+e exec "quickswitch.py -e ; i3-input -F 'rename workspace to %s' -P 'New name: '" bindsym $mod+ctrl+v exec quickswitch.py bindsym $mod+ctrl+s exec quickswitch.py -s bindsym $mod+ctrl+shift+s exec quickswitch.py -ms bindsym $mod+ctrl+shift+m exec quickswitch.py -m
Super+ctrl+e 我绑定如下行为:先创建一个空的workspace,然后再重命名。 当然按理说,%s应该用双引号括起来,否则不支持名字里面带空格。但是我的设置外面已经有了一层双括号,我现在暂时没办法解决这个冲突问题。
statusbar
首先我要说明一下我个人的提高注意力的方法。
想必很多人和我一样,明明已经制订好了学习计划或者有其他什么要紧事要做,但是一时半会儿是没有效果的,总会给自己找各种理由逃避。比如看会儿微博/论坛/动画片养精蓄锐下,然后整个上午就没了。
之前我认为是自己的注意力有问题,尝试过番茄工作法,说实话对我没有什么效果。后来我发现,其实我只要迈出第一步,后面几乎都能坚持下来。关键是我一直没有找到鼓励我迈出第一步的动力源。
曾经以为游戏化(gamification)任务管理系统是我的救星,用过habitrpg及org-gamify,但还是不理想。
最后我看到播放器MPV上面显示的不是一般的总时长,反而是剩余时长,从而灵机一动,用python写了一个倒计时的简单脚本。原理是设定一个deadline,然后倒计时,看着时间一点一滴地减少,这种动力对于我来说简直是效果拔群,因为我是没办法忍受当倒计时结束,结果发现在2个小时或者4个小时等大段时间内居然没有干成一件正事这种事实的。
所以换到i3后,我就干脆把倒计时显示到了statusbar上面,让自己可以时时刻刻看到。
显示自定义的Python脚本结果,我使用的是wrapper.py方法4。
~/.i3/config
bar { # i3bar posiiton position top # status_command i3status -c ~/.i3status.conf status_command i3status | ~/.i3/wrapper.py 11 0 }
具体的wrapper.py我就不放上来了,写得实在是简陋。我用的是python的sys.argv取得deadline的数值。正常来说,更优雅的实现方法应该是弹出一个窗口输入deadline,但是我用i3-input没有实验成功。现在暂时只能手动写在config设置里面5。
X starts without displaymanager
Footnotes:
在高中的时候曾经尝试用过Ubuntu,当时Ubuntu还在满世界地发光盘。不过那时只是图新鲜玩了一小段的时间,没有坚持下来。
现在我又发现了bspwm,好像在reddit/r/unix_porn和/g/上都更流行。什么时候可能又会去折腾看看。
其实我还找到另外一个项目i3-dtags https://bitbucket.org/MicroJoe/i3-dtags, 用C语言写的,不过它用到了一个我不常用的依赖cJSON。最后我还是选择了python的quickswitch.py。
其实现在的我deadline已经到了,但是这篇博文还是没有写完。目前已经花费了我接近3个小时。看来比我预计的要耗时得多。