From d29aae229b96de7d33d9887ec3784cb2f1b3cd67 Mon Sep 17 00:00:00 2001 From: Michael Cardell Widerkrantz Date: Tue, 6 Mar 2012 15:05:24 +0100 Subject: Added a lot about EWMH. Removed stuff already done. Changed "physical screen" and all "screen" that refers to monitors to "monitor". Slightly less confusing. --- TODO | 103 +++++++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 70 insertions(+), 33 deletions(-) diff --git a/TODO b/TODO index d7d5b00..cd1d4a9 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,23 @@ -*- text -*- -* When hiding a window always set XCB_ICCCM_SIZE_HINT_US_POSITION so - the window will be mapped where it was when it was unmapped. +* IconicState + + Currently we set IconicState only on windows we hide and not when we + unmap them to switch to another desktop. ICCCM and EWMH says we + should set IconicState in both situations. + + We should also set _NET_WM_STATE_HIDDEN when hiding windows. + + hidden.c should list windows with _NET_WM_STATE_HIDDEN and, + optionally, all with IconicState. + +* When hiding a window we want it to re-appear in the same position. + How? + + Setting XCB_ICCCM_SIZE_HINT_US_POSITION before hiding would work + without adding more code, but does ICCCM allow that? + + PPosition? * Feature: Handle several screens (DISPLAY=0.x) in classical X. @@ -19,7 +35,38 @@ * Bug: Ignore other modifiers, such as NumLock and CapsLock. -* Use the new xcb-ewmh for the EWMH hints. + We can use something like this to find the modifier mask for + NumLock: + + xcb_keycode_t *num_lock; + num_lock = xcb_key_symbols_get_keycode(symbols, XK_Num_Lock); + + and get an array of keycodes finished by XCB_NO_SYMBOL. + + then compare the keycodes in the array with the keycodes all the + modifier masks give. See getmodkeys(). + +* Extended Window Manager Hints (EWMH) + + - Use the new xcb-ewmh for the EWMH hints. + + I suggest listing least these in _NET_SUPPORTED (* marks + implemented): + + _NET_NUMBER_OF_DESKTOPS, _NET_WM_DESKTOP*, _NET_CURRENT_DESKTOP, + _NET_WM_STATE, _NET_WM_STATE_STICKY, + _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_HIDDEN, + _NET_WM_STATE_FULLSCREEN, _NET_ACTIVE_WINDOW + + _NET_NUMBER_OF_DESKTOPS can be set to the constant WORKSPACES. + + _NET_CURRENT_DESKTOP is just curws. Set the hint when starting and + when changing workspaces. + + We *may* want to support a message to the root window that *sets* + _NET_CURRENT_DESKTOP and then switch to it. + + We might want to support _NET_WM_WINDOW_TYPE_DESKTOP as well. * Bug: We grab MODKEY all the time! We can grab it only when we start tabbing instead and release it when tabbing is complete. @@ -35,24 +82,24 @@ * Full-screen windows that are resized from client requests should be kept full-screen. -* When moving windows between physical screens, try to place the - window on roughly the same place on a new screen, if possible. +* When moving windows between monitors, try to place the window on + roughly the same place on a new monitor, if possible. -* When a window tries to map itself outside the physical screens, - always map it to the screen closest to the coordinates it asked for - instead of always mapping on the first screen in the list. +* When a window tries to map itself outside the monitors always map it + on the monitor closest to the coordinates it asked for instead of + always mapping on the first monitor in the list. * Feature: We need to continue dragging for move and resize until *both* MODKEY and mouse button has been released. Will be much nicer with trackball. -* Move to first window (or middle of screen) on another screen - with MODKEY + . and , instead of moving windows to new screen. - Shifted these keys will move window to new screen? +* Move to first window (or middle of monitor) on another monitor with + MODKEY + . and , instead of moving windows to new monitor. Shifted + these keys will move window to new monitor? * Handle new modes on physical outputs. What do we have to do? -* A separate workspace list for every physical output. +* A separate workspace list for every monitor. * Allow hexadecimal colour values on command line. @@ -87,20 +134,16 @@ incompatible with the EWMH _NET_WM_DESKTOP hint we're currently using: We will only be able to save one of the desktops used. -* Hide windows - - Instead of iconifying, hide them à la 9wm. Even if we use a key to - hide them, this probably means we have to have a menu to get them - back. Perhaps use an external program somehow? Needs to talk to mcwm - anyway. Unix socket? - * Menu - We might need a menu for hidden windows (see above). Since I'm - probably implementing menu windows anyway, perhaps I should add a - menu with basic window functions, like 9wm and twm. This way, one - might use the window manager without keyboard, if necessary. Not - much work if I have to do the menu anyway... But also chords? + We might need a menu for hidden windows. Since I'm probably + implementing menu windows anyway, perhaps I should add a menu with + basic window functions, like 9wm and twm. This way, one might use + the window manager without keyboard, if necessary. Not much work if + I have to do the menu anyway... But also chords? + + On the other hand, see hidden.c and forthcoming external menu + program. * Chords @@ -133,13 +176,6 @@ the BEL character). Do we want to handle it? How do we tell the user? Can this be done with some stand-alone program instead? -* Support sensible portions of ICCCM and EWMH - - EWMH hints that tells applications about active workspace and - focused window... - - And a few others. - * Code cleaning - Obivous cleanup: The event switch is way too big. @@ -147,9 +183,10 @@ - The states are known everywhere. A tight state machine would be nicer. - - Dispatch table for key bindings instead of keysym->enum->case? + - Dispatch table with function pointers for key bindings instead of + keysym->enum->case? - - Use bitfields instead of extra lists for virtual screens? + - Use bitfields instead of extra lists for workspaces? * Resize behaviour -- cgit v1.2.3