ciusy的闲言碎语

好好学习,天天向上

介绍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。

为什么选择i3-gap

i3有完善的文档,而且也很受欢迎,网上讨论热烈。这样子一来,如果自己有什么想法,估计网上早就有实现方法了。这就是我选择i3的原因。 i3-gap 是i3的unofficial fork,可以非常方便的设置窗口之间的gap。

一段时间用下来,我真的是非常喜欢i3的各种简洁易折腾2

放图一张,这是目前我在笔记本上的设置:

2015-02-18-100146_1920x1200_scrot.png

个人设置

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:

1

在高中的时候曾经尝试用过Ubuntu,当时Ubuntu还在满世界地发光盘。不过那时只是图新鲜玩了一小段的时间,没有坚持下来。

2

现在我又发现了bspwm,好像在reddit/r/unix_porn和/g/上都更流行。什么时候可能又会去折腾看看。

3

其实我还找到另外一个项目i3-dtags https://bitbucket.org/MicroJoe/i3-dtags, 用C语言写的,不过它用到了一个我不常用的依赖cJSON。最后我还是选择了python的quickswitch.py。

5

其实现在的我deadline已经到了,但是这篇博文还是没有写完。目前已经花费了我接近3个小时。看来比我预计的要耗时得多。

Comments

comments powered by Disqus