Checklist: ICCCM/EWMH
Marty Jack
martyj19 at comcast.net
Thu Jan 27 10:44:07 PST 2011
Design choice recommendations
Move to a single character set (UTF-8)
Move to a single coordinate space for multiple video cards, multiple outputs on same video card
I think EGLDisplay should be what X would call a Virtual screen and that is large enough to combine the outputs of all video cards being managed
I know the EGL spec equates EGLDisplay to "monitor"
Dispense with Screen, Zaphod, Xinerama
Need an equivalent to xorg.conf.d for annotating and blacklisting video cards and their outputs
Need an equivalent to xorg.conf.d for annotating and blacklisting input devices
Move to a single coordinate space for multiple desktops
User support requests indicate they really like keeping applications on (the illusion of) multiple desktops and switching them
Too much complexity here
Dispense with _NET_NUMBER_OF_DESKTOPS, _NET_CURRENT_DESKTOP, ability to mix large desktops and multiple desktops
Try to dispense with panning and only allow paging multiple desktops (is this exactly backwards for mobile?)
Would have been nice to move to a single Visual/Colormap equivalent, that is, RGBA-32, always composited
But, EGL has these as choices and I suppose YUV is relevant
ICCCM not desktop environment relevant requirements, may be someone else's
Window geometry constraints (minimum size, resize increments) in WM_NORMAL_HINTS
Window gravity (no longer of much interest?)
Input focus model knob in WM_HINTS
ICCCM/EWMH requirements, from desktop environment's point of view
Way of detecting unresponsive client
Enumerate toplevel windows (would be equivalent if we could get New and Gone events) (taskbar, pager): _NET_CLIENT_LIST
Enumerate stacking order (pager): _NET_CLIENT_LIST_STACKING
Window that has focus: _NET_ACTIVE_WINDOW (taskbar, pager may draw it differently)
Window title (display in taskbar): WM_NAME, WM_ICON_NAME, _NET_WM_NAME, _NET_WM_ICON_NAME, _NET_WM_VISIBLE_NAME, _NET_WM_VISIBLE_ICON_NAME
Carry forward only a single UTF-8 title found now in _NET_WM_NAME
Window icon (taskbar, title bar) _NET_WM_ICON, WM_HINTS as Pixmaps requiring extra round trips
Carry forward only a literal icon found now in _NET_WM_ICON
Re-evaluate whether having a lot of sizes is necessary
Window class (arbitrary string controlling taskbar button grouping) WM_CLASS
Carry forward at least the Class part, don't use the Instance part
Iconic state: WM_HINTS
Window purpose: WM_TRANSIENT_FOR, _NET_WM_WINDOW_TYPE, _NET_WM_STATE (used ad-hoc to add to _NET_WM_STATE_SKIP_*)
Window urgency: WM_HINTS
Window type and state _NET_WM_WINDOW_TYPE, _NET_WM_STATE:
Lots of "window roles" that affect placement and stacking order
Taskbar visibility controls _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_HIDDEN
Taskbar/pager tends to use other window roles in an ad hoc way to affect visibility
Version control on features: _NET_SUPPORTED
Window operations
Close: _NET_CLOSE_WINDOW, WM_PROTOCOLS[WM_DELETE]
Iconify, Restore: XIconifyWindow, XMapWindow
Shade, unshade: _NET_WM_STATE_SHADED
Maximize, demaximize: _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ
Raise: _NET_ACTIVE_WINDOW, XMapRaised, XSetInputFocus
Full screen: _NET_WM_STATE_FULLSCREEN
Take input focus: _NET_ACTIVE_WINDOW
Mass iconify/restore: _NET_SHOWING_DESKTOP
Make sticky: _NET_WM_STATE_STICKY
Change visibility in desktop metaphor: _NET_DESKTOP_VIEWPORT
Move window to different view in desktop metaphor: _NET_MOVERESIZE_WINDOW
Window geometry relative to desktop metaphor (pager)
Pager uses ConfigureNotify event and XGetGeometry to get position on virtual desktop
The coordinate space changes, and there is a race condition between ConfigureNotify and _NET_DESKTOP_VIEWPORT;
causes an unnecessary XGetGeometry round trip;
fix this by not changing the coordinate space
Space allocation for docks in presence of application windows, so maximized windows won't overlay them
_NET_WORKAREA
_NET_WM_STRUT, _NET_WM_STRUT_PARTIAL
Geometry of iconified view so window manager can animate iconify: WM_ICON_GEOMETRY
Desktop metaphor configuration sensing, including "sticky" windows that are visible on all views
_NET_WM_DESKTOP (window property)
_NET_NUMBER_OF_DESKTOPS
_NET_DESKTOP_GEOMETRY
_NET_DESKTOP_VIEWPORT
_NET_CURRENT_DESKTOP
_NET_DESKTOP_NAMES
_NET_DESKTOP_LAYOUT
Window information
_NET_WM_PID, backpointer to owning process in case we want to kill() it
Event when
Hotkey presses (do the requested action)
New or deleted toplevel window (update taskbar, pager)
Locked keyboard group changes (update country flag, update on-screen keyboard keycaps)
Keyboard changes (re-enumerate keyboard symbols, update country flag)
Keyboard indicators change (update on-screen indicator display)
Monitor geometry changes (re-enumerate monitors, update all panel geometry, configuration dialog if open)
Monitor backlight changes (update on-screen display)
Window moves (update pager)
Visible desktop changes (update taskbar, pager)
Not relevant
Entire design for compositing manager
_NET_SUPPORTING_WM_CHECK
_NET_VIRTUAL_ROOTS
_NET_REQUEST_FRAME_EXTENTS
_NET_WM_HANDLED_ICONS
_NET_WM_USER_TIME
_NET_WM_USER_TIME_WINDOW
_NET_FRAME_EXTENTS
_NET_WM_SYNC_REQUEST
_NET_WM_FULLSCREEN_MONITORS
_NET_WM_FULL_PLACEMENT
WM_COLORMAP_WINDOWS
WM_CLIENT_MACHINE
WM_ICON_SIZE
More information about the wayland-devel
mailing list