MINI FREEZE: Status: OFF What is this: We will have lots more of these during e17 devel for serveral reasons. A mini freeze is a call to STOP adding new features and funkiness. It means people need to stop and go BACK over their code and fix FIXME's. All those bits of code where things are string together with sticky tape and chewing gum need to be fixed PROPERLY. This may mean pooling code into a common subsystem (this is not a new feature. it is fixing loose ends with design). This may mean adding api calls to make implementation cleaner or remove hacks. it may mean more debugging tools in things like e_object and more checks for sanity. This means testing stuff so it doesnt crash. or make things unusable or leak memory. check leaks (use valgrind or whatever tools) to check for leaks, and for stability issues. double check you return the correct values from functions or use return values. Check callbacks. Compile with -W -Wall to help find obvious bugs waiting to happen. Modules need to clean up on shutdown. Code needs to use the appropriate subsystem that is available for what it wants OR a subsystem needs writing if it will be a shared/common feature. This issues list must be brought to 0 size before E17 features can move further. Current freeze issues are: ISSUES: FIXME: group these TODO items into: 1. essential features 2. fixes 3. cleanups 4. optimisations 5. nice to have features Some of the things (in very short form) that need to be done to E17... Also look at all the .c files - they have their own localized TODO lists These are in no particular order: * transients should have option to always follow parent (move/resize/raise/lower) * netwm center on parent support * setup configs for gnome and kde (as options) if they are installed (eg run gnome-settings-daemon). * sometimes the mouse gets locked to a window with a mouse grab of some sort in x (it gets the down event and not the up?) so e thinks its down but it isnt * maximised apps when e restarts are not recognised as maximised * maximised apps need their border to change (only titlebar for example) * need an "expanded" mode for windows that maximises but NOT over modules and you can still shade, resize etc. * actions to make current zone different (warp mouse to there) * actions to make the current container different * could speedup dropshadow's gaussian blurr with mmx and sse by doign 2 or 4 rows at once * make it easy for modules to hook into ipc and extend it for themselves * check evas has eet support early on. * add locale and encoding fields to eapp files (to launch eapp in that locale+encoding) * add input method selector stuff to eapp - same as locale * gadman needs some changes to virtualise the canvas/container the gadget ends up in (eg in popups or border) * titlebar/border expansion/gadget panel for modules to put window widgets in * add actions to flip desktops on a given zone and/or container only * re-implement all ipc to go via e_ipc_handlers.h and e_ipc_codec.[ch] * on restart e always goes back to desktop 0,0 - it should go to the desktop it was last on (per zone, per container, per manager). * start module needs to have a way to alert users to "click here" and back off alerting users as they learn what it is (over time) * sometimes windows that get shut down/closed get unparented but the whole border stays around - something is keeping extra references maybe? it is hidden, until you flip desktops then it appears again - but with no client around. currently they have a dangling reference - need to find out WHO added that ref and didnt remove it (i haven't seen this for ages now) * fix action delete (can segv if action is stored for "long runing actions" like move/resize) * break out desks x/y size config so you can have a different desktop size per zone - right now there is a signle global (use this later as the default for new/unconfigured zones) * language packs: need to have a tool to load/setup a language pack (which means .mo compiled files from a .po, an optional font and a config file that specifies the locale and font) and then install the font(s) either as a user or superuser, and the .mo in the system or a user locales dir. * perhaps we should split focus and "selected" windows. selected window is what ocused is now and focus is something only affectinbg keyboard input. if the focus window becoems another managed window it becoems the selected window - otherwise click to focus or pointer focus will chose the selected window that may get the focus if it allows it... * check window max size. if < size of zone (or maximisation area) disallow maximising and tell border edje object (via signals) to somehow disable the maximise buttons :) (and remove from the menu) or center client in frame or something else to not exceed max size for window * bug: if you have 2 zones and you fill up zone 2 (right) mostly and then run a big xev (xev -g 1280x1024) that wont fit it gets placed offscreen to the right of zone 2 * gadman gadget menu needs icons :) * module api needs to move label and icon to data file (.eapp file?), not api * gadman edit mode for simple gadgets activate with a button bind (eg alt+click on module like windows) or a pure key binding * make e17 re-locatable (ie use e_prefix.c stuff instead of #defined paths) * gadget containers (shelves?) using popups as well as in-line in a canvas * add key input focus control for desktop modules * finish off icccm support * optimize clock theme (speed/cpu) (rotation in edje??? or evas???) * finish complete netwm support * make the cursors an edje buffer canvas for changinig cursor depending on context * different cursors for different parts of the screen * add a "taskbar" module * add cpu load module * add a way to access "all" apps app dir * non opaque move/resize * ibar need to support label pop-ups * ibar should support subdirs with pop-up icons... * ibar need to handle drop from other places (xdnd, drop from window etc.) * ibar lamp needs short timer on mouse out for hide before hiding (and del the time on mouse in) * borders need to be able to change border theme on the fly by mene or app properties * add window glueing * add window tabs (multiple clients in 1 border) * add setup/install wizard to seed eapp files etc. etc. * make ipc try open on other ports numbers if current is taken * make ipc try re-open if connection dies * add clientinfo pane/popdown for borders * add a button area expansion for borders ??? * add template button for expanded buttons ??? * support text and color classes * add tooltips * add fullscreen support (e16 xvidmode or xrandr style) * make xrandr support get rotation and store it * maybe add systray module/support? * allow object paranoia to be a runtime option too * add sliders, radio and check buttons for clientinfo pane * add separate app menu bars at top of screen support * add "osd" subsystem for things like volume controls on keybboards, etc. that overlay the screen * add really nice "about" box with theme, authors credits list etc etc. * init splash needs te be able to be signalled "end of init" and it can respond with a "splash end" signal * "immortal" windows (e will not allow that window to be closed or will refuse to exit as long as the immortal flags is set until it is unset to stop users from doing silly things like logging out while important stuff is happening in that window -a menu option for this woudl be nice) * need to be able to remember client positons/etc. * with remember need to be able lock in attributes so the app (or user or both) cannot change them (eg this window is a fixed size and location - app cannot ask for a new size or location) * file icons on the desktop (people ask for it) - xdnd for these * gui config tools for bg's, keybindings, etc. etc. etc. * "control panel" app to launch the gui config tools * dnd from pager to other pagers/ to desktop/ibox etc. * make it possible to disable border buttons/actions (tell theme what is disabled) * modules need config executables with proper widgets (sliders, check boxes, radio etc. not massive menus) * remove module config menus (make them part of the module control panel and as separate executables) * tip/hint/suggestion dialog app (textblock etc.)