Battery status via devicekit-power
[gregoa/zavai.git] / README
1 README for zavai
2
3 "zavai" is a word of the Bolognese language which means "useless thing of no
4 value". The idea that I'm trying to do what I can with what I have.
5
6 It is written with the purpose of working for me; everything else is optional.
7 Feature requests for things that I don't need will likely be ignored unless
8 of course they come with patches.
9
10 Getting it to work:
11
12  * Install dependencies
13
14    # Build time
15    apt-get install valac libglib2.0-dev libdbus-glib-1-dev libgee-dev libgtk2.0-dev libwnck-dev libdevkit-power-gobject-dev
16
17    # Runtime
18    apt-get install devicekit-power
19
20    # Optional runtime
21    apt-get install polygen polygen-data
22
23  * Compile
24
25    ./configure; make
26
27  * Install dbus.d configuration file
28
29    cp conf/zavai.conf /etc/dbus-1/system.d/
30
31  * Copy the .desktop files of the applications you use more often in ~/.zavai
32
33    For example:
34
35    mkdir ~/.zavai
36    cp /usr/share/applications/tangogps.desktop ~/.zavai
37    cp /usr/share/applications/navit.desktop ~/.zavai
38    cp /usr/share/applications/vala-terminal.desktop ~/.zavai
39    cp /usr/share/applications/midori.desktop ~/.zavai
40    cp /usr/share/applications/zhone.desktop ~/.zavai
41    cp /usr/share/applications/FBReader.desktop ~/.zavai
42    cp conf/satmon.desktop ~/.zavai
43
44  * Copy accessory scripts in ~/.zavai
45
46    cp src/display ~/.zavai
47
48  * Update the information about the polygen grammars installed in the system
49    (optional) 
50
51    src/update-polygen-info
52
53  * Run zavai
54
55    ./run
56
57    This will run zavai and restart it if it quits/crashes. If you want to
58    restart zavai (for example after you build a new version) just choose
59    debug/quit.
60
61 Features / guide
62
63  * Power menu
64
65  Push the power button to get the power menu, with options to
66  suspend/shutdown/reboot, lock the screen and keep the backlight always on
67  (useful if you are using the openmoko as a satellite navigator in the car)
68
69  * Lock screen
70
71  Hold the power button longer to lock / unlock the screen. If the screen is
72  locked you see a lock icon in the traybar.
73
74  A short push of the power button while locked will turn on the backlight for a
75  bit, which is useful if you want to check the map for a moment. Another short
76  push will show the main zavai window, which is useful if you want to see the
77  time. Another short push will hide the main zavai window.
78
79  * Main window
80
81  In the main window you see the time. If your GPS has a fix, the time comes
82  from the GPS.
83
84  In the top left there is a gps icon. Push it to toggle the GPS to be always on
85  (useful to restart tangogps or navit without needing to reacquire a fix).
86
87  In the bottom there is a button to access the main menu.
88
89  * Tray bar
90
91  Zavai shows several tray bar buttons. One kills the current application (or
92  goes back in the menu if the current application is zavai).
93
94  One hides and shows zavai.
95
96  One hides and shows the keyboard.
97  
98  One shows the status of the battery.
99
100  * The menu
101
102  The menu should be self-explanatory. It has options for simple GPS management
103  tasks, setting an alarm, running applications, a task switcher, and a polygen
104  interface.
105
106  * Alarms
107
108  It is possible to set an alarm, which will be shown in the alarm window. When
109  the alarm expires, the phone wakes up if it is suspended, and zavai vibrates
110  for 5 seconds.
111
112  It is planned to use the AUX button to acknowledge the alarm and stop the
113  vibration; when this will happen, vibration can go on for more than 5 seconds.
114  
115  When I'll implement some audio playing infrastructure, I'll implement playing
116  an audio file as well.
117
118  Also missing are a popup that tells that an alarm is ringing, and a notifier
119  for unacknowledged popups.
120
121  Patches welcome.
122
123  * Calendar
124
125  You can reach the calendar from the menu or by clicking on the date in the
126  main screen.
127
128  The calendar shows notes on every day. You can add notes just by typing on the
129  white space below the calendar.
130
131  The notes are saved in ~/.zavai/cal/YEAR/MONTH/DAY.txt, feel free to:
132   - sync it with your main computer;
133   - create a tool that populates it using the information from your
134     favourite calendar system;
135   - interface zavai with a proper calendar system, without making the interface
136     harder to use (if you can).
137
138 Stability / design
139
140  Zavai currently focuses on the interface side, trying to make it easy for me
141  to reach the functions that I need. I try not to focus on hardware details
142  (yet) (when I can), so I build it on the freesmartphone framework, which is
143  unstable, underdocumented and sometimes untested, whose developers so far have
144  never answered my questions and whose API tends to change every now and again.
145
146  This said, I'm surprised it works for me so far.
147
148 TODO list / wish list
149
150  * FSO API "documentation":
151  http://git.freesmartphone.org/?p=specs.git;a=blob_plain;f=html/index.html;hb=HEAD
152
153  * Features to add:
154  - GSM power and network
155     - link to open SHR-dialer
156  - icon to show if there are new messages
157     - link to open SHR-messages
158  - switch backlight keep mode when on power/recharging
159     - the button changes the default for the current power mode
160  - alarm
161     + vibrate at alarm trigger
162     - play sound at alarm trigger
163     - acknowledge alarms with AUX button
164        - then, vibrate and play sound for longer
165     - popup that tells that an alarm is ringing
166     - leave expired alarm on screen until acknowledged
167       (alarm status icon that also brings to alarm menu)
168     - remember alarm names (on request, maybe with an add feature) and how
169       often they are triggered, and show them most frequent first
170     - remember unexpired alarms persistently (again, a table in sqlite?) so
171       that they can be reinstated if zavai is restarted
172     - show active alarms and allow to delete them
173  - unlock screen when receiving phone calls
174  - GPX status icon (off, waiting for fix, recording)
175  - GPX waypoint using AUX button
176  - GPX + Audio track
177  - track EPV (and similar) in gpx and kill trackpoints with bad accuracy
178  - Audio note
179     - shortcut icon in main screen
180  - Toggle wireless
181     - turn on/off chip
182     - start/stop wicd
183     - start/stop wicd-client
184  - Simple wireless scanner (code from guessnet)
185  - Suspend phone if not calling and gps is not on and backlight is not on
186    (maybe with idle notifier?)
187  - Phone from kapula (or just running kapula)
188  - Split polygen applet in a separate app, ran via a .desktop file
189    (faster zavai startup time, can then integrate a browser in the polygen
190     applet, makes more sense altogether)
191  - Is there a way to lock the screen completely turning off the touchscreen, so
192    that interrupts are not even generated?
193  - Timezone selector
194     - Location aware (show timezones in order of distance from current
195       location)
196  - Show timezone in clock
197
198  * To find out
199  - Why sometimes the phone will stop acting normal and will completely ignore
200    the screen for the purpose of screen dimming, that is, it will dim the
201    screen even if I'm using the touchscreen?
202
203  * Not quite needed yet:
204  - GPX log with more features (quality, course, speed, ...)
205  - Take a waypoint then show a menu with a timeout
206     - Add a scribbled note
207     - Add an audio note
208     - Add a text note (tickling the text input method thing)
209    If timeout expires, leave the waypoint with the automatic name
210  - restart zavai
211    (also on dbus fuckup)
212    (can be done by just quitting and let the runner script restart it)
213  - get fix events without requesting the GPX resource (and then? gpx log all the time? what for?)