Jump or Exec: The Sharp Sword for your Desktop

October 7, 2007 – 10:34 pm

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
  1. 8 Responses to “Jump or Exec: The Sharp Sword for your Desktop”

  2. Wow, clean theme!

    By Jack on Oct 8, 2007

  3. blog换了风格了,赞~

    By zhouyuan on Oct 9, 2007

  4. Hah, 一直都想找到一个类似的软件呢,没想到在你这里找到了,很有用, 感谢分享!

    By mmao on Oct 9, 2007

  5. to mmao:
    建议订阅 lifehacker ,那上面经常介绍一些很实用的小软件。 :)

    By pluskid on Oct 10, 2007

  6. 哦?
    看来MacOSX里面的Dock就是根据这样的理论设计的。

    By pig345 on Dec 19, 2007

  7. 哦?那样挺不错的嘛!

    By pluskid on Dec 19, 2007

  1. 2 Trackback(s)

  2. May 22, 2008: Millenniumdark » Blog Archive » JumpOrExec書目
  3. Jun 21, 2009: Free Mind » Gracefully Shutdown in openbox

Post a Comment