TODO:
* scriptlets: stdin/out module that provides gui services to some
  back-end script or process where e just talks via stdin/out.
  things to provide:
  * only run scriptlet every N seconds to poll then send back data
  * only run scriptlet at specific times of day (cron-like)
  * only run scriptlet when some event happens
    * dbus signals (some way to define what to listen for)
    * acpi bindings
    * key bindings
    * mouse bindings
    * startup, shutdown, suspend, resume, lock/unlock, ...
    * ... screen add/del, backlight dim/undim, ...
    * ... blank/unblank, ac plug/unplug, battery full, ...
    * ... battery charge begin, battery charge end, ...
    * ... network connect/disconnect (connman), ...
    * ... bt device find/lose, ...
    * ... volume/mute/audio dev change, virtual desktop change, ...
    * ... app window appear/disappear/exit, ...
    * ... something goes fullscreen/unfluscreen, ...
    * other events on the system or in e?
  * run script all the time and talk to it and "keep state"
  * provide menu content in menu specific tree...
  * provide popups like pager mid-screen one with content like below...
  * provide gadgets with display content like below...
  * provide gadget popups (like mixer/clock) with content like below...
  * provide full windows with content like below...
  * possible content in a tree:
    * probably have to provide markdown of below in some way...
      * thinkimg of mustache style {{{ }}} ?
      * shell friendly so it doesnt have special meanings in sh
    * image (png/jpg/gif/video ... whatever)
    * edje theme element/file fallback
      * send/get signals
      * set text parts
      * send/get messages
      * create, delete, swallow other edje/image objects
    * box
    * table
    * grid
    * scroller (content holder)
    * lists to select from (icon, text, icon at end, groups - genlist)
    * button
    * radio
    * check
    * label/text
    * entry (editable single/multi line, passwd)
    * separator
    * frame (content holder)
    * slider
    * progress/busy spinner
    * dropdown/hoversel
    * graph (multiple overlayed with N points horiz or vert, line/solid)
    * dials (like cpufreq)
    * mixers like ... mixer
    * temperature guages like temperature
    * scrollable logs with per line/item content objects
    * list trees (genlist)
    * grid lists (gengrid)
    * efm show dir
    * efm open specific file with default mime handler
    * efm open specific file with mime handler chooser
  * tell scriptlet where it is stored (env var)
  * tmpdir setup/deletion for scriptlet (env var)
  * more permanent config dir setup/storage for scriptlet (env var)
  * pop up specified menu content
  * display screen popup with content
  * display gadget popup with content
  * get events from content (clicked, selected, etc.)
  * get state of content
  * create timers and get called on timeout
  * built in wget via e/ecore_con_url
  * built in tcp/tcp+ssl netcat provided by ecore_con
  * direct notification display (via notification module) e/stdin/out
  * provide built-in editor to edit scripts and auto-re-run as you edit
    * entry or elm code based?
    * massive lowering of barrier ro create/change scriptlets
    * offer a share mechanism like shots?
      * security issue - they run. verification needed?
* fix lock screen to force dpms on once it has blanked if special
  timeout exists
* keyboard backlight controls, not just screen
* backlight module/controls should control the screen the gadget is on
  * allow multiple screens to have different backlight controls
* login manager mode - be able to function as a login manager/gui since
  most everything you want in a login manager is already present in e
  like suspend/resume on lid open/close, multi screen config and even
  auto-extension, backlight and other such controls.
* console logger much like quake console like dropdown for logging etc
  (api to append logs. always stores to disk to specific file.
   add button to explicitly share like screenshots. add higher level
   logging like tables, icons, timelines and graphs that can be output
   in text emulation and to screen - change eina log to go into here
   with eina_log_print_cb_set() )
* crash alert: use full fat efl stack and remove xcb/ecore_drm2 stuff
  * supply custom theme to guarantee theme is not an issue
  * create text mode fallback with detection for crashes in crash handler
    * turtles all the way down - a crash handler for our crash handler
  * problem: we have to kill e to get kms control which breaks gdb
    * grab data then kill e then display results?
    * key combination to kill e and move on?
* watchdog: add watchdog handling to e_start to detect a hung e
  * also detect if frames stop rendering but loop ok?
* settings: config dialog redo and simplification
  * simplify the config and remove useless options
    * focus on new simpler config dialog(s) first
      * cover all the major e config uses now
      * drop some weird/niche/unused stuff
    * once new config is done, remove old config dialogs
  * integrate more config of elm into e
  * add more system setup stuff like:
    * system locale config
    * system locales supported (locale.gen)
    * system timezone as well as user timezone
    * user timezone (set TZ env var)
    * set system clock
    * set up ntp
    * set user password
    * user cron front-end config/editor
    * allow separate LC_MESSAGES, LC_TIME, LC_NUMERIC, LC_NAME, etc.
* wallpaper: gen wp files with multiple common resolutions in image set
  * edje needs logic to handle max texture size and to downsize to work
    * rpi max texture size is 2048...
* dnd: remove e_dnd and use elm's dnd instead
* defer signal emits for init splash and stuff like that until after
  mainloop and pre-caching theme file, wallpaper file, own binary,
  shared libs and module .so files etc. to minimize any stalls and
  have a smooth init (maybe on linux just open /proc/sefl/fd after we
  finally hit mainloop and go to sleep and just find every fd that is
  a path to a file and load the whole file into ram? simple and effective)
* new gadgets:
  * be able to move, resize etc. without alt move/resize mode like old)
  * initial gadget bar setup dnd needs to be normal dnd
  * setup needs an obvious "add" button as dnd not obvious
  * wizard setup could be nicer? maybe just a default bar with no wizard?
  * changing settings should not re-run the wizard!
  * need to visually join gadget and gadget popup so they can kind of
    look like a "tab" thats joined when we want to do this kind of
    appearance
* efm: use elm for window
* efm: use elm scroller for fm view
* efm: use elm for file popup
* efm: add disk space used bar for disk volume icons
* efm: add space used "du -sh" summary for all folders
* efm: add filesystem cache (all dirs cached in files and updated in bg)
  * should be a full filesystem shadow stored to cache db files
  * async update/scan of dir and present updates when done and have changes
  * store file, stat info, other metadata, mimetype, icon, space used...
* efm: thumbs for music getting album art like rage
* efm: thumbs for videos with movie posters like rage
* efm: show symlink info in icon
* efm: fuse support (mtp, sshfs, cifs/smb etc.)
* efm: rsync integration for fsync to/from targets
  * may need ssh setup too (add to authorized keys on other end)
* efm: partitioning front end
* efm: filesystem formatting front-end
* efm: tune2fs/fsck front-end
* pager: add "Set desktop name" on right click on desktop in pager
  * turn on desktop names when setting one here
* pager: add "Set wallpaper" on right clikc on desktop in pager
* pager: only show desktop names set and not 0,0 0,1 etc.
* start: start menu could do with more featured content
  * like you see on windows for example (search and multiple columns etc.)
  * a touch screen android-style scrolling fullscreen app icon style
* music-control: offer launching from the control if mpris app not there
* music-control: auto search for known mpris services
* music-control: allow manual addition of new named mpris services
* wireless: fix on connman to work properly
  * probably redesign to have a single icon and on click pop up like bz5
  * divide the popup list with group headers like bz5 into tech
  * provide fuller status per line (reception and other info?)
  * massively flesh out connman vpn support in the gui
    * vpnmanager + create method support
* shot: add manual cropping ability
* shot: add simple free draw, box, line and text on top of shot before save
* bz5: add icon set for actions/states per bt device (pair.unpair, etc.)
* bz5: add obex agent support integrated with efm for sharing via bt
  and downloads when received via obex bt (~/Downloads/...)
* battery: redesign popup to list other battery details like the
  charge if you have multiple batteries for real or separately the
  battery levels of e.g. bt mice, kbd's and other such devices
* battery: on click display popup like wireless/bluez5
  in popup show detailed list of battery devices and data per device
  * like bluez5 use genlist with groups for core batteris vs other misc devices
  * filter out hid devices with batteries from core battery state
  * display other devices in above list separately
  * handle string capacity values like Full, High, Normal, Low, Critical...
* randr: get auto layout to handle screens laid out like:
  [dp2-2][dp2-1] <- 2 external monitors
      [edp-1] <- laptop main display
* randr: when losing a zone/screen, move windows to same set of vd's on
  current one not on current vd
* randr: when losing a zone/screen, intelligently resize/move windows if
  screen migrated to has diffrent res
* randr: when losing a zone/screen, put windows in purgatory and then have
  purgatory screens available via pager to drag onto a current screen,
  or the specific virtual desktops from purgator to be accessible evenm
if not on a real screen/zone
* device manager: new tool to browser /sys etc. and display nicely present
  hardware and device drivers and state
* sys top: new tool displays cpu/mem "top" - evisum. we want it to be shipped
  with e though so it's always there guaranteed have back-end system status
  logging to files all day long that always starts with e. gui is a front-end
  view to this back-end data log and follows it as it updates.
  * can go back in time then to previous logs
  * should have the ability to draw nice graphs etc.
* edge bindings - selecting edge dialog needs a redo (no edje for all content)
* e menu - add obj cache for menu and menu item objects to reduce costs
  by far the biggest cost in showing/hiding menus is realize/unrealize
  and this is almost all object creation/setup/deletion costs. menus
  can be more responsive (on low end systems) if... we avoid this. to
  avoid... have a cache of spare objecta to re-use.
* e comp object: we dirty far too often in wayland especially with
  glmark and this leads to a stream of gen and del textures. is this
  really needed and ca we cut it down?
* tiling: doesnt retain layout across restarts
* tiling: doesnt handle impossible layouts well - had to remove min size
* tiling: doesnt honor size stepping too well
* tiling: probably need to flatten out to table for saner layout
* tiling: probably could do with analysis on features vs i3 etc. to be
  more "up to snuff" and competitive
* tiling could be smoother in its layout handling
  * smoothly move/resize windows from old to new positions/sizes
  * don't delay many responses and do it instantly with the above anim
  * probably can do with more actions for bindings for moving/sizing
* packagekit: much btter support with pre-made config/profiles for the
  package manager (autodetect if possible)
  * not just updates but also install/uninstall of pkgs with a minimal
    front-end to back-end cmdline tools (use shell wrappers?)
* cpufreq: support pstate: hwp_dynamic_boost, no_turbo, display turbo_pct,
  num_pstates
* need more advanced input device controls like for touchpads for
  swizzling their gesture recognition etc. - look into libratbag too
  for gaming mouse stuff if its worth using it or just doing the same
  stuff ourselves as we will probably have to via libinput
* per app environment launch config - allow different TZ, LOCALE etc.
  per app and set up env appropriately
* back-end e system process for monitoring/polling and launching etc.
  * split e up into front vs back-end with back-end doing things like
    * monitoring processes/system (see above)
    * launching apps (cheaper to fork a small process)
    * having a root helper for root-only tasks that stays around if it
      is needed as opposed to enlightenment_sys that runs then exits
* synergy-like e <-> e mouse, kbd, cnp, dnd proxy/sharing
* efl: flat theme redo
* efl/eo: start using efl loop as core loop
  * begin to move some login out into efl threads+loops
    * to change ui - callsync/async back to ui/main loop
  * have a deferred deletion of evas objects in idler
    * hide instead of del, stash in invisible place, delete l8r in idler
  * have object stash for adding basic objects
    * have generic/basic object stash
    * have edje object stash

DONE:
* music-control: fix aspect ratio of album cover image
