Wandering Thoughts archives


The different sorts of 'iconification' of windows in X

In X, application windows can be in a variety of states. They can be on the screen, they can not have been 'mapped' yet, they can be mapped but located off the currently visible area of the screen (many of my windows spend a lot of time in other pages of my virtual desktop), and pretty much since the beginning they can be what was originally called 'iconified' but which these days is often called 'minimized' in documentation that ordinary people read.

(Things like the Inter-Client Communication Conventions Manual (ICCCM) and Extended Window Manager Hints tend to use 'iconify' and similar terminology, but very few people read the ICCCM. Desktop environments and programs generally describe the state and the action as 'minimize'.)

In the usual X manner, what happens when an application is iconified varies a lot between window managers, and there are two general versions. The original window manager approach, still in use by things like fvwm, is that an iconified window is represented as an icon on the root window (the 'desktop'), using an icon that can come from a variety of places, and generally has a little title below it. You can see a number of these iconified windows in this tour of my (2011) desktop, including a use of the default 'X' icon for two iconified windows.

Because everything in X is a window, these icons are windows (as are the title bars); they're protocol level window entities that are managed internally by the window manager. When a regular window is iconified, the window manager creates or re-maps an appropriate window entity for the icon and for the title and puts it in the right spot. If you have such a window manager around, you can see these protocol level window entities with tools like xwininfo. The icon windows are generally using the Shape extension so they don't have to be rectangles.

However, this 'icons on the desktop' approach has been out of fashion since people started building X desktop environments that used the same general ideas as macOS and Windows. Both of those have always used icons on the desktop for passive objects that had yet to be opened or activated, not active applications; active application windows were collected together in a taskbar. In X window managers that follow this general approach, 'iconifying' an application window doesn't involve materializing a second X window entity; it simply updates the visual appearance of some existing X window.

I believe that basically all modern X desktop environments operate this way with some sort of a taskbar; this definitely includes Cinnamon and modern GNOME. Even the modern default configurations of old school window managers like fvwm often come set up to imitate this (the Fedora default fvwm configuration is set up this way, for example).

(Fvwm itself has several ways to do a taskbar equivalent for some or all windows if you want that, and I use one of them for my terminal windows. This shouldn't be a surprise, because the general taskbar approach is a compact and organized way of keeping track of application windows.)

The difference matters to the X server and at the level of the X protocol, because the 'icons on a desktop' approach creates, destroys, and manipulates a lot more top level X window entities than the taskbar approach does, and in some circumstances it may be doing this in a burst (you can have an application start up by creating two iconified top level windows, for example; the window manager will create all four or so icon windows for them basically at once). The natural consequence of this is you can have an X server bug that only shows up with one of these two approaches to iconification.

(At least the condensed reproduction is small enough to fit into a Mastodon post.)

As a side note, I don't know enough about tiling window managers to know how they (or people using them) typically handle iconified (aka minimized) windows. They're not likely to be using the 'icons on root window' approach for the obvious reason that tiling window managers generally don't have any empty space to show the root window (and icons on it). Since iconifying an application window is something the window manager does, the window manager can also just not do it. Applications can ask to be minimized, but the window manager can always ignore them (or treat it as a request for something else, for example to be moved to a secondary off-screen area).

unix/XIconificationManyWays written at 23:11:54; Add Comment

Page tools: See As Normal.
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.