Jump or Exec 是我在
Sawfish 中学到的一个理念,自从习惯以后就再也离不开它了。它究竟有什么神奇的地方呢?这还得从我们使用电脑的习惯说起:我们最常见的操作应当属于切换窗口和打开程序了,然而我们似乎从来没有考虑过为什么要有这两个操作。
我们要干什么呢?完成一个任务,这个任务要用到一个程序,于是看看这个程序是否已经打开了,如果是,就切换到那里,如果不是,就打开它。这似乎是很顺理成章的嘛,然而实际上我们让电脑偷懒了。我只是想要这个程序到我面前来而已,为什么要我去检查它是不是已经运行了?这应该是电脑的工作!
Jump or Exec 就是这样的概念。把打开程序和切换窗口结合为一个指令。你告诉电脑的不再是“运行某个程序”或者是“把某个窗口切换到前台来”,你只需要说“我要某个程序”,然后计算机会负责检查程序是否运行并相应采取“Jump”或“Exec”的措施。
当然 Jump or Exec 也并不是万金油,对于某些程序,即使他已经在运行了,我们还可能需要运行新的实例,所以其实 Jump or Exec 对那些通常只需要运行一个实例的程序特别有用(例如 Firefox 、Emacs 等)。
那么究竟如何实现 Jump or Exec 的功能呢?在 Sawfish 里面已经有现成的扩展可以使用了,我在我的
Wiki 笔记 里面进行了介绍。
如果没有使用 Sawfish 窗口管理器,也有解决办法。比如在 EWMH/NetWM 兼容的窗口管理器里面可以使用
wmctrl + xbindkeys 的办法 ,而 FVWM 作为一个高度可定制的窗口管理器也能
轻松实现 Jump or Exec 的功能,其他情况还可以使用我写的一个
Python 脚本(我在 KDE 下就使用这个脚本)。
在 Windows 下也有解决办法。有一个叫做
AutoHotkey 的开源软件,可以支持这个功能。这是一个非常强大的工具,它有一套脚本语言,因此可定制性非常高。可以定制快捷键、修改键盘映射、创建键盘宏等等。要实现 Jump or Exec 也非常简单,例如下面就是针对 Firefox 的 Jump or Exec 脚本:
#f::
IfWinExist ahk_class MozillaUIWindowClass
{
WinActivate
}
else
{
Run D:\Program Files\Mozilla Firefox\firefox.exe
}
return
Comments (6)
建议订阅 lifehacker ,那上面经常介绍一些很实用的小软件。 :)
看来MacOSX里面的Dock就是根据这样的理论设计的。