Hacking Limbo

Reading / Coding / Hacking

介绍两个新工具

Guake

Guake 是一个“下拉式终端模拟器”,特点是可以用热键呼出窗口,不需要的时候又可以将其隐藏——本质上它跟我之前用的 Terminator 没有什么不同(Terminator 也可以设置热键呼出),对于 Awesome 党来说无非是 Win+1 (Awesome 里切换到 Desktop 1 的热键)和 Win+` 的区别而已……不过它更轻量,也更稳定(Terminator 经常假死),所以还是值得一试的。

有一个小问题需要自己改源码解决:光标形状。Guake 里默认所有光标的形状都是方块形(block)的,在 Vim 里看着很不方便。Google 到的解决方案是修改 /usr/lib/guake/guake.py 里的 GuakeTerminal 类:

# guake.py 第 433 行
class GuakeTerminal(vte.Terminal):
    """Just a vte.Terminal with some properties already set.
    """
    def __init__(self):
        super(GuakeTerminal, self).__init__()
        self.configure_terminal()
        # 加入这一行,TerminalCursorShape 的参数请自行试验
        self.set_cursor_shape(vte.TerminalCursorShape(1))
        # 省略 N 行代码...

修改完重启 Guake,光标的形状就会变成竖线形(beam)的啦。

tmux

tmux 可以看作是增强版的 screen,在窗口操作和配置等方面都比 screen 顺手。很早就听说过它的强大,只是之前一直在用 Terminator,有多标签页和分屏等功能,就懒得去配置 tmux。这次从 Terminator 切换到 Guake,发现没了分屏功能真的很不习惯,而且用 Ctrl+Page Up 或鼠标来切换标签也太低效了(而且 Guake 的标签 UI 好丑 = =),就给了 tmux 一次机会,只用了不到半小时就爱不释手了~

利用 tmux 的按键绑定,可以减少很多重复操作,比如我在写 Rails 程序的时候需要同时打开 unicorn, tail -f development.log, tail -f unicorn.stderr.log, compass watchrails c,在 tmux 里就可以这样设置:

# 分屏显示 log
bind L neww -n log -t 4 'tail -f log/unicorn.stderr.log' \; \
       splitw 'tail -f log/development.log' \; \
       resizep -U 10 \; selectp -U \; splitw -h \; \
       send 'unidev && bundle exec compass watch' 'C-m'

# 启动 rails console
bind R neww -n repl -t 3 \; send 'rails c' 'C-m'

只要在 Rails 项目的目录里按 C-b L,就可以同时打开所需的 log,效果图:

tmux 效果图

有兴趣可以看看我的 tmux.conf