summaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO145
1 files changed, 109 insertions, 36 deletions
diff --git a/TODO b/TODO
index 49dd388..9133d96 100644
--- a/TODO
+++ b/TODO
@@ -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