Focus stealing

Focus stealing is a misfeature built into some graphical user interfaces and windowing management systems that allows an application that is not in focus to suddenly gain focus and steal user input intended for the previously focused application.

Problems
Problems with software incorporating this misfeature are:

An application may may steal the focus whilst date is being entered, resulting in data being entered into the wrong application.

Damage may be caused if a user is entering data or operating the button at the time that an application program obtains focus. The application that has stolen the focus may obtain input that inadvertently allows deletion of files, (as a result of the user pressing a confirmation key, or clicking a confirmation button on a newly focused application.)

System security may be compromised by input being entered into the wrong application. For example a password may be revealed by being typed into an unmasked input field, rather than at the password entry point.

Microsoft Windows
Microsoft Windows based systems use pop up dialogue boxes which can steal focus from the current application.

Window Managers
The following window manager systems allow focus stealing to take place:


 * 9wm - Fails the launch test, giving focus to window placement facility
 * compiz - configurable, and capable of passing both the launch test and the Javascript test
 * fvwm - Passes the launch test, but fails the javascript test
 * icewm - Fails the launch test, giving focus to newly started applications
 * oroborus - Fails the launch test, giving focus to newly started applications

Web Browsers
The following internet browsers provide focus stealing facilities via a this.focus javascript facility:


 * Mozilla Firefox
 * Debian Iceape
 * Debian Iceweasel

Alternatives to focus stealing
These are alternative methods for grabbing the attention of the user that could be used instead of focus stealing:


 * 1) Pulse the applications icon in the taskbar, leaving the application in the background
 * 2) Output a message to the notification area
 * 3) Pulsate the display overscan area
 * 4) Use an audible alerting framework