summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Cardell Widerkrantz <mc@hack.org>2012-03-06 15:05:24 +0100
committerMichael Cardell Widerkrantz <mc@hack.org>2012-03-06 15:05:24 +0100
commitd29aae229b96de7d33d9887ec3784cb2f1b3cd67 (patch)
treea9fe98c199f95e56a33e56c327d86843294741d2
parentaf7d2118ef241da20570bf448cb006c598e56d7e (diff)
downloadmcwm-d29aae229b96de7d33d9887ec3784cb2f1b3cd67.zip
Added a lot about EWMH.
Removed stuff already done. Changed "physical screen" and all "screen" that refers to monitors to "monitor". Slightly less confusing.
-rw-r--r--TODO103
1 files 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