|Scripts quick access edit this|
- Author: Stephen Farrell <email@example.com>
- Version: 1.4
- License: GNU GPL 2 or later
- Download: waffle.jl
Typically graphical environments separate the tasks of switching between applications and starting new ones. I'm not sure why this is, since the thought process is interwoven: I only want to start a program if it isn't currently running or the running windows are unsuitable; I only want to switch to a program if it is currently running and one of the running windows is suitable. Really, I know what I want to do and don't want to take the time to grok the state of my desktop to do it.
Waffle let's you type in what it is you want, interactively see if it is already running, and only then decide whether to switch to a window or launch a new program. Say, for example, that I want a terminal to run a command. With waffle, I can type in "term", get a list of terminals which are running, and then decide to reuse an existing terminal (maybe it already has the right path and history) or start up a new one.
Waffle works by essentially combining iswitch (interactive switching between windows, inspired by the emacs mode by Stephen Eglen) and the standard "run" type utility which launches application by name. As you type, the run history and open window list are filtered by case-insensitive substring search. So say you start to type "netscape", by the time you get to "nets" you will see a listing of the time you launched netscape on top, and you will see a listing of all the netscape windows on the bottom. The lists will be narrowed based on the what you have typed. To resolve ambiguities, press C-s to switch to a currently running window, and C-e to exec a new one.
- Get the String2 Library.
- Put waffle.jl and string2.jl in your load-path.
- Add this code to your ~/.sawfishrc:
(require 'waffle) (waffle-initialize)
- Middle-click/Customize/Bindings/Add/Waffle (recommend C-A-TAB)