Xalf (http://www.lysator.liu.se/~astrand/projects/xalf/)
This a utility to provide feedback when starting X11 applications.
Xalf is solving the same problem as Busycursor (also written by me), but in a more reliable and flexible way. The main differences are:
- Xalf can reliable detect if newly mapped windows are belonging to a particular launched application. It does this by overloading the Xlib function XMapWindow with a version that signals the tracking xalf process.
- Xalf provides (currently) four different types as "indicators", described below.
Invisible Window:
Xalf creates an invisible window, to be used in conjunction with a
standard task pager like Gnomes tasklist_applet or the KDE
Taskbar. The name of the window is the application name within
parenthesis. The small window icon (KWM_WIN_ICON) is set to a small
hourglass. This indicator is default.
Splash screen:
An generic splashscreen is displayed during application launch.
Mouse cursor change:
Xalf adds an hourglass symbol to the mousecursor for the root window
and the Gnome panel. Note that the cursor is not changed for the Gnome
foot-menu windows.
Animated star:
An animated indicator resembling the look of that on SGI/Irix
machines (a kind of yellow animated star).
INSTALL
See the file INSTALL.
SUPPORTED PLATFORMS
The main platforms for Xalf are Linux and Solaris. People have reported that Xalf also runs on FreeBSD and Irix. Newer versions are only tested on Linux and Solaris. If you want support for other platforms and are willing to test beta-versions, contact me.
GNOME INTEGRATION
Xalf is included with GNOME 1.4. Xalf also works with earlier GNOME versions if you have Gnome-libs version 1.2.11 or newer.
You can control Xalf via GNOME Control Center (or by editing ~/.gnome/xalf). Note:
You can prepend NO_XALF to desktop entries commandlines to disable Xalf for a specific application. This is especially useful for launching applications that doesn't start new processes but only creates new windows. Gmc works like this, so I recommend change "Exec=gmc" in /usr/share/gnome/apps/Gmc.desktop to "Exec=NO_XALF gmc".
KDE INTEGRATION
KDE has borrowed some Xalf techniques, and integrated them into KDE2. I don't know the current status of this work, though.
USING SAWFISH "Matched Windows"
Beginning with version 0.11, Xalf sets different WM_CLASS names for the different indicators. The class name is always set to "xalf". The instance name is set to "invisiblewindow", "splash" and "anim", depending on the indicator that is used.
This can be used with Sawfish to automatically iconify, for example, the invisible window. This can be done by:
- Create and match on Class: xalf/invisiblewindow
- Set its state to "Iconified" in the State pane.
THE FUTURE
Xalf needs to do quite many tricks to work. The principle with LD_PRELOAD is not very beautiful and there are many cases when it does not work. These issues were discussed on the Window manager specification mailing list. Most people (including myself) thinks that an Toolkit-based implementation is a better long term solution. Mary Dwyer at Sun Microsystems has begun working on such an implementation.
USAGE
If you are not using GNOME with built-in hooks, prepend xalf to your commandlines. For example, create an desktop icon running: "xalf gnumeric"
COMMANDLINE OPTIONS
-h, --help display this help and exit
-v, --version output version information and exit
-t, --timeout nseconds use a time-out period of nseconds seconds
-n, --noxalf do nothing, besides launch application
-m, --mappingmode compatibility mode: Do not distinguish between
windows. All new mapped windows turns off indicator
-i, --invisiblewindow use an invisible window as indicator (default)
(for use with Gnome panel, KDE taskbar etc)
-s, --splash use splashscreen as indicator
-c, --cursor add hourglass to mouse cursor
-a, --anim use animated star as indicator
-l, --title titlestring Title to show in the tasklist
Comments and bug-reports are appreciated.
/Peter Åstrand <astrand@lysator.liu.se>
