diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 145 |
1 files changed, 109 insertions, 36 deletions
@@ -1,20 +1,105 @@ -*- text -*- -* 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. +* 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 unhiding a window we want it to re-appear in the same position. + How? + + Setting XCB_ICCCM_SIZE_HINT_US_POSITION before hiding would probably + work without adding more code, but does ICCCM allow that? + + PPosition? + +* Feature: Handle several screens (DISPLAY=0.x) in classical X. + + This means we will have several root windows. + + setup = xcb_get_setup(conn); + screens = xcb_setup_roots_length(setup); + + returns the number of screens available. + + We can walk over them with xcb_setup_roots_iterator(setup). + +* Feature: Xinerama support. Needed when XRANDR above 1.1 not + supported, for instance with Nvidia cards in Twinview configuration. + +* Bug: Ignore other modifiers, such as NumLock and CapsLock. + + 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. + +* Key to move to previous and next workspace. David Jacobs has a patch + for mod4+shift + I/O. + + https://gist.github.com/1478365 + +* Key to move windows to other workspaces, perhaps mod4+Shift + 0..9 + and mod4+shift + I/O. + +* Full-screen windows that are resized from client requests should be + kept full-screen. + +* 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 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. @@ -42,27 +127,23 @@ - A window might be on one, *several* or all virtual screens. - We already have a way of fixing a window on all screens (Mod2-f), - but we need a way of saying "stick on this workspace". Perhaps - something like Mod2-a <n>, where <n> is 1--9 for virtual screens. - Better ways? Note that this seems to be mildly 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? + We already have a way of fixing a window on all screens + (MODKEY-f), but we need a way of saying "stick on this workspace". + Perhaps something like MODKEY-a <n>, where <n> is 1--9 for virtual + screens. Better ways? Note that this seems to be mildly + incompatible with the EWMH _NET_WM_DESKTOP hint we're currently + using: We will only be able to save one of the desktops used. * 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 @@ -88,8 +169,6 @@ * Configuration file. -* Start configurable programs when clicking on root window. - * Handle Urgency hint Some windows might need attention and marks this with an urgency @@ -97,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. @@ -111,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 |