When I used to use an extremely minimal X environment, I needed a way to launch applications without taking up extra screen space. I came up with the idea of monitoring mouse events on the root window, and developed kiss as a result. The concept is simple - hit the mouse pointer against the edge of the screen two or more times in quick succession, and this triggers some behaviour that you define in a user-supplied client program.
Download
kiss-1.1.tgz version 1.1 [BSD license]
kisslib-1.1.tgz version 1.1 [public domain]
Installation
Unpack the kiss archive, enter the directory and review the settings in the Makefile to make sure that they match your system. Then make and make install, the latter with root access if installing system-wide (via su or sudo for example.)
You may need to install some packages to have a working development environment to build X applications. On a Debian-based system, this will be something like build-essentials and libx11-dev.
The default client is pretty simple, but should be generic enough to be a useful base for customisation. The optional kisslib has my original client setup in it, which references a load of old scripts, but could be useful for further ideas.
Usage
In your X startup (e.g. in .xsession) run kiss:
/usr/local/bin/kiss -client /usr/local/etc/kisslib/kiss-client
kiss keeps running until the client exits normally, or if the client exits abnormally too many times. You can use it as the main session if you're confident that it won't exit straight away; when I had a minimal setup I spawned everything as background tasks and held onto the session with a dummy program.
The full list of options:
Option | Purpose |
---|---|
-display display | Set the display to connect to |
-screen screen | Set the screen to connect to |
-fifos directory | Specify the directory in which to create fifos (internal communication channels) |
-delay ms | Specify the maximum delay between edge hits to allow them to chain together into a kiss event |
-client client | Specify the client to execute to handle kiss events |