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