Planned features: (click items that have a blue arrow to toggle expanded notes)
- next release... (0.6.1)
- devlock isn't refreshing visual swipes after updating screen
- perform a few tests on games and task navigator notifications to see if dialog hack fixed the focus mapping issues
- down swiping brightness on devlock will open brightness slider
- when blanking or lock&blank, always show a notification, in case it takes a second or longer
- button in ASUI to toggle finger and stylus keyboards, if possible
- colorize IM processes in ASUI's process viewer
- add IM processes to asui-settings services?
- next release... (0.6.2)
- proper timer support -- move existing timers out of the mainloop -- add timers for tasks that block ASUI with sleeps
test direct BME access to query battery capacity when screen is locked or off.
if it works, query battery every 5-15 minutes to provide an accurate graph.
also play a sound every 5-15 minutes if screen is off and battery has a high drain.
- show wifi and bluetooth status on devlock
- spawn threads to keep widgets from blocking when starting services
- track each started service and only start/stop services that aren't or are running (faster start/stop for service widgets)
swipe down or up on service widgets to open a menu with status of each individual service managed by the widget.
each service in the menu can be toggled on or off.
- settings to change slide on and slide off intervals -- fastest, fast, medium, slow, slowest
- required for 1.0:
- advanced theme support
- dotted or solid lines
- gradient or solid backgrounds
- background support for highlights instead of just outline: normal[bg,outline,outline_style] active[bg,outline,outline_style]
- set colors for specific elements that inherit from base colors
- button bar: secondary_bg, fg1, fg2, [key repeat uses red], [flight mode uses bold_color]
- widgets: bg, fg1, fg2, RGYG colors, [brightness dimmed and volume headphone text uses bold_color]
- services: bg, fg1, fg2, RGYG colors, line1
- confirmation dialog: bg, button, line1, fg1, (shutdown, reboot, process kill uses red for yes color)
- battery graph dialog: bg, fg1, fg2, RGBY colors, line1, line2
- process viewer dialog...
- governor/dsp dialog: bg, fg1, fg1, button, line1
- clock dialog: bg, fg1, fg2, red
- secure dialog...
- alarm dialog...
- reboot/shutdown dialogs: bg, fg1
- rotating dialog: bg, fg1
- use localized text on the notifications
- replace the info icon on notifications with graphics used by SystemUI
- eliminate the white screen when transitioning from charging runlevel or boot devlock to splash screen,
SystemUI displayed a blue "NOKIA" on black background (/system/systemui/splash/bootup_image ?)
- the following code doesn't work
GC root_gc = XCreateGC(window.display, window.root_window, 0, NULL);
XSetForeground(window.display, root_gc, BlackPixel(window.display, window.screen));
XFillRectangle(window.display, window.root_window, root_gc, 0,0, window.width, window.height);
i found myself wondering if it was possible to have a memory display mode that showed both memory and swap left free (numbers
or percentage, with the latter perhaps also having a version showing percentage used), rather then having to long-press to
move between them. Or maybe it could be automatic if one set both to either percentage free or percentage used as there seems
to be room for that in those modes.
- button to toggle device locking on and off.
prompt for code when toggling on or off.
display timeout options when prompting for code to toggle on, previous timeout will be saved when disabling code
and auto-selected when re-enabling.
it could also use a secondary timeout when disabling so devlock is automatically re-enabled.
audio-lock and no-devlock-when-connected-to-specific-waps features will need hooks to automatically
toggle devlock without user entering code.
- button to toggle screen blanking pause on or off (temporarily disable blanking).
double tap to begin pause and single tap to end it.
- support other screenshot applications such as 'mypaint -s'. mypaint doesn't save to a filename.
- a2dp support
- install a2dp-support 0.9 or higher
- install mplayer_1.0rc1-maemo.25.n8x0_armel or higher
- `a2dp runfirst` must be run to initialize a2dp -- need to know bluetooth address for the a2dp device
- commands: `a2dp enable` or `a2dp disable` or `a2dp toggle`
- detect a2dp support and display an a2dp toggle button in volume or bluetooth widgets
- use dpad to navigate interface. menu button cycles between no focus, button focus and widget focus.
dpad center produces short or long clicks for the focused button or widget.
- menu button cycles between: no focus, button focus or widget focus
- button bar (landscape): right/left dpad changes focus
- button bar (portrait): up/down dpad changes focus
- widgets: up/down dpad changes widget focus, left/right changes subwidget focus
- dpad center produces short or long taps
- dpad center hold combined with dpad arrow keys will produce drag events
- this is too complex and already handled by other means, scrollbars should be ignored when focusing on brightness and volume widgets
- bluetooth swipe is handled by a subwidget element
- four state settings to store last focused button and widget for each page
- use a bright white dotted highlight for focus, needs to be restored in all cases
- each widget will have a draw_focus function to highlight the correct subwidget element
- each widget will have a change_focus function to cycle through subwidget elements
- each widget will have a click_focus function that dispatches on the currently focuses element
- click_ functions will need to have their code moved out into various functions to to be shared with click_focus. click_ will simply figure out what element was clicked and dispatche the correct function. scrolling code can remain in the click_ function
- buttons to launch control panel's display and sound applets, or just handle this in the statusbar applet's menu
- setting to convert speaker/headphone label into a button to toggle between the two when headphones are plugged in
Can a tap-and-hold function be added to the label that says headphones/speakers to make it switch between the two? The commands found in this post will do the trick. However, and I must admit, multimediad offers no real way to get the state. The state is stored in /apps/maemo/fmradio/speaker by the FM radio applet, but I don't think anything else uses it...
- add a headphone_toggle setting -- when on and headphones detected, draw button border around output label
- when toggle=speakers, display a red asterisk -- this can't be detected so the asterisk might not always match, tap it a couple times
- does toggling this change the headphone status?
- Better control over the dim/black-delay periods would be really nice. I envision allowing two or three selectable presets
-- for instance, "normal" and "game", where "normal" is 45sec/60sec and "game" is 105sec/120sec (for the dim/black times).
Then in the UI, I would just select the preset (similar to the CPU governor menu).
- setting to require double tap to toggle hardware
- show signal strength in wifi widget
- show 'tun0 IP' in openvpn widget
- widget to launch user-defined apps. a half widget could be divided into four buttons each displaying an icon for an app.
asui-settings would be used to configure the programs, either from desktop files or manually selecting an icon and entering a command.
- toggle button to keep keyboard backlight from turning on, if possible
- /sys/class/leds/keyboard/brightness = 0-255
- /sys/devices/platform/gpio-switch/slide/state = open or closed
- mce controls it and will override the brightness set with the file
- if only one ssh server is installed then always show it and don't show long tap marker.
if no ssh servers are installed then display "no ssh servers installed".
- append " (playing)" to "bluetooth" in volume widget if headset is in the playing state
- SIGNAL /org/bluez/audio/device1 org.bluez.audio.Headset.Playing
- SIGNAL /org/bluez/audio/device1 org.bluez.audio.Headset.Stopped
- METHOD org.bluez /org/bluez/audio/device* org.bluez.audio.IsPlaying() -> boolean
-- this method call probably has the wrong path or interface
- toggle gps hardware, display "connected" or the number of satellites when locked,
and open gps location details dialog on a long press
(can't find information)
- look at maemo mapper source code
- open gps location
- METHOD org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.AddMatch string type='signal',interface='com.nokia.gpsmgr',member='gpsd_status'
- METHOD org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.AddMatch string type='signal',interface='org.gpsd',member='status_changed'
- dest=org.gpsd path=/org/gpsd
- /org/freedesktop/Hal/devices/platform_gps_reset [s] = inactive/active
- will need to work with bluetooth GPS as well
- enable "secure device" auto-lock based on wifi network -- n900 thread
- setting to automatically enter flight mode when wifi, bluetooth and gps turn off.
setting to only do this when these are manually turned off.
need to know gps status to do this.
- setting to always keep popup clock open but minimized after timeout exceeded.
this would make it visible in Telescope's window thumbnails and easily accessible with the Home key.
tapping popup clock thumbnail in Telescope could map ASUI.
- mainloop would need to refresh cpu and hardware every 5-10 seconds, but not services, while the popup is open
- mainloop would need to redraw popup
- this constant refreshing in the background would drain battery faster, maybe reduce mainloop refresh to 30 or 60 seconds and perform cpu and hardware refresh in the same cycle
- use a special hw_refresh function that only updates what is needed
- window_map() would need to reset the mainloop timer and keep track of when mainloop was last fully updated to re-sync the timer
- duration can then be infinite since popup is refreshed
- if cpu % is displayed then it must be polled every 5 seconds or else it would represent cpu usage over a longer period and could be showing data collected 30-60 seconds ago for the 30-60 period before that
- show wifi, bluetooth and gps status on popup clock, secure keypad and minimal UI (they can be on in the shutdown charging runlevel)
- ASUI's code to play shutdown sound doesn't work. There is a several second delay before the sound is played but system shuts
down before this happens.
- allow unknown third-party services to be toggled at boot, need to save their orders
- set alarm snooze period alarmd dbus
- select a desktop wallpaper for each screen orientation and ASUI can change it when rotating.
would also be nice if Telescope could be signalled to reload the wallpaper.
would need to set wallpaper at boot time since orientation may be different then it was at shutdown.
- button to find and fix services with broken links
-- asui-settings could provide a GUI to do that
-- fc-cache -fv ; /etc/init.d/maemo-launcher force-reload -- fc-list
- settings page to install repository and screenshot-tool if not installed
- the left pixel column in the bluetooth icon is cut off as if the main icon is only 39 pixels wide
- blink leds on battery_low signal?
- need to detect these states and either display in the icon or the menu: adhoc, packetdata, datacall, wimax, wimax oper
- when enabled, a tap will open a menu instead of mapping ASUI
- ---------- MAJOR ----------
- Alarmd is either buggy or might not be fully supported by ASUI and prevents screen from blanking.
Switching back to SystemUI and rebooting doesn't fix the problem.
-- restarting Alarmd and then MCE in the service section of ASUI settings should fix it.
If not, try stopping Alarmd, restart MCE and then start Alarmd.
-- this is probably not ASUI's fault but instead a race condition in MCE that becomes more frequent with DT kernel's scheduler.
Powerlaunch's powered has locking issues and isn't a viable replacement for MCE.
Will need to modify Meego's MCE to work with Maemo4.
- Task navigator is somehow able to respond to the home key even though ASUI has grabbed it. This causes its menu to appear
but ASUI owns the pointer so the menu can't be accessed until ASUI is unmapped.
- ---------- MIGHT BE FIXED ----------
- Some games and apps may grab focus and prevent ASUI from opening.
-- A screen tap or key press will wake up the device, as expected, when it is unlocked and the screen is off BUT the
tap or key will be passed through to the app/game because ASUI can't open its event eater window.
-- Alarms and devlock won't be able to open ASUI until the app/game is closed or switched away from.
-- The new dialog hack, that closes menus, might have fixed these issues.
- Modest email notifications will break audio lock and make it difficult to unlock with secondary key if a check happens
while the screen is off, even if no email is present. The blank window that catches taps when the screen is off but not locked may also
break when Modest performs a check. This is related to the above issue. The new dialog hack, that closes menus, might have fixed this issue,
but has not been tested yet.
- Some buttons and widgets (or entire interface, except for keys) may become unresponsive when tapping them.
-- open the process viewer and kill ASUI if you encounter this
-- 0.4.7 should eliminate this problem or prevent it from lasting more than 60 seconds
-- 0.5.8 should eliminate full interface lockup or prevent it from lasting more than 60 seconds
- ---------- MINOR ----------
- Hardware doesn't always cold start, if the three red dots remain for more than a few seconds just tap it again to retry
-- using signals and callbacks when warm/cold starting hardware would fix this
- ASUI or some other program randomly disables key autorepeat on my device
-- 0.5.0 has a button on the secondary widget page that shows autorepeat status and can turn it back on with a tap
- might randomly crash -- dsme will restart it but the window will disappear if it was open and battery graph will be cleared
-- 0.4.5 should significantly reduce the number of crashes
- X sometimes takes a second or two (or much longer) to send touch events to the app
-- 0.3.0 should reduce the problem to no more than a tenth of a second, in most cases
-- tap a blank area of the app if you think it didn't register your initial tap
-- install Diablo-Turbo kernel to fix the problem
- The MCE req_display_blanking_pause method, called by mplayer and other apps, can not be overridden with DSME's blanking allow.
This means ASUI's lock, lock&blank and blank buttons will not immediately dim or blank the screen and it will remain fully lit
for at least one minute before dimming and finally blanking using your normal timeout periods.
-- there is no known MCE method to allow blanking
-- 0.5.1 displays a notification when it thinks blanking pause is in effect
- The "ASUI NET" window is designed to catch the first screen tap or key press that is used to wake the device when not locked.
It might get stuck open and prevent screen taps and key presses.
-- 0.4.6 should fix this problem
- GUID is displayed in wifi widget instead of SSID or connection name
-- 0.4.6 fixes this
- ASUI is restarted after upgrading with application manager but is either stopped or crashes and doesn't restart
-- user must manually start it from the console or reboot the device to restart it
-- problem doesn't exist if upgraded from the console
-- 0.4.5 fixes this by not freeing dbus values it shouldn't have been freeing :)
- ASUI will stop responding to screen presses when upgraded via application manager and start_visible is enabled.
This is because the application manager opens a dialog after the ASUI upgrade is complete and this dialog grabs the pointer focus away from
ASUI, even though the dialog is hidden behind ASUI. Other applications that open dialogs after an action completes will also cause this
problem if ASUI is visible at the time. You should see the dialog momentarily appear in front of ASUI when you touch the screen.
-- hide ASUI with the power or escape buttons, close out the dialog and everything will be fine
-- 0.4.5 fixes this by grabbing the pointer so it can't be stolen away
- ASUI might not display the correct state for wifi, bluetooth, flight mode and battery charging after it is restarted and the
system is under a heavy load
-- 0.4.5 fixes this by continuously polling the values until it gets a reply for each one
- ASUI might consume all memory and cpu when the device is first booted up and then the device will crash. Screen taps take a
minute or so to process but opening the process viewer, selecting advanced-systemui and then killing it will fix the problem.
-- this is caused by an infinite stream of focus in/out events
-- closing ASUI's popup clock or the wifi/bluetooth dialogs could also invoke this problem
-- 0.4.5 automatically restarts itself if it enters a focus in/out loop
-- 0.5.1 should prevent this from happening
- ASUI can be unresponsive if opened via power button while a menu is active. Tapping an area of the screen where the
menu was located will be received by the menu but no action will happen other then that menu item being highlighted. Tapping
outside of the menu will cause ASUI to flash as the menu closes and future taps will be received by ASUI.
-- you can either hide ASUI and close the menu or try tapping one of the bottom screen corners since most menus
won't be located there (the home/swap button will be broken if this happens)
-- 0.4.2 fixes this by preventing ASUI from opening if a menu is present
Copyright © 1995-2012 Brand Huntsman