summaryrefslogtreecommitdiff
path: root/TODO
blob: e39e1d551bd503230dbfe13eed271f743ccd80ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
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?
* 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() )
* 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
* 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
* 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 even
  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.
* brightness/contrast etc. controls need to work better
  look at ddcutil (ddc capabilities, ddc getvcp/setvcp) to be able to
  control screen brightness, rgb gain, display technology type,
  display modes, color presets etc. etc. http://www.ddcutil.com
* 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