]> www.wagner.pp.ru Git - sites/home_page.git/blob - software/tcl/fubar.html
Changed all links to 45.free.net to wagner.pp.ru
[sites/home_page.git] / software / tcl / fubar.html
1 <html><head><title>FUBar - Alternate taskbar for FVWM</title></head>
2 <meta name="description" CONTENT="Fully scriptable desktop top bar with
3 many integrated features">
4 <body>
5
6
7 <h1>FUBar - Alternate taskbar for FVWM</h1>
8
9
10 FUBAR stands for Fvwm Userbar</b>. It is yet another implementation of
11 taskbar for <a href="http://www.fvwm.org">Fvwm 2</a> and Fvwm</b> 95.
12 Main difference from FvwmTaskBar module is
13 that 
14 <p>
15 </p><ol>
16  <li> It is written on interptreted language (tcl) and so, it is easily
17     customizable
18  </li><li> It doesn't try to implement Windows 95 taskbar - it tries to borrow 
19     all good ideas from it and rearrange them to suit Unix environment.
20  </li><li> It supports easy to use plugin protocol, which allows to add icons
21     into right side
22  </li><li>It allows separately-invoked Tcl script to communicate with fvwm.   
23  </li><li>Start menu is implemented as directory of links (or scripts), not
24  as lots of lines in config file.
25 </li></ol>
26 <h3>Functionality</h3>
27 <p>
28 Main feature of fubar is network transparency. It allows to invoke
29 program on any host you have rsh or ssh access to.
30 </p>
31 <p>
32 Core <b>fubar</b> functionality includes:
33 </p><ul>
34 <li>Ability to invoke programs either form menu, or by typing in command
35 line. In later case host to run command on can be choosen from menu.
36
37 </li><li>Substituting filenames into command from file dialog. Not just
38 command names (as in Windows), but command parameters too (works on
39 local host only now). 
40 </li><li>Run dialog allows to choose host to run programs on, and has options
41 to open xterm for command and to not to close xterm upon command
42 completion until return is pressed (don't 
43 </li><li>Window list (only if invoked as fvwm module)
44 </li><li>Open an xterm on any host you have ssh/rsh access to, with any
45 locale, host supports.
46 </li><li>Find 
47 <dl>
48 <dt>file
49 </dt><dd>Using Unix file command or locate command
50 </dd><dt>host in the network 
51 </dt><dd>Find host  using DNS lookup. Route can be traced as well
52 </dd><dt>Command
53 </dt><dd>search manual database using  <b>apropos</b>
54 Invoke man viewer by clicking on the apropos results.
55 </dd></dl>
56 Additional find optins can be provided by plugins.
57 <h2>Plugins</h2>
58 <h3>apm</h3>
59 This plugin creates small widget indicating battery status of notebook.
60 It reads /proc/apm directly. 
61 <p>
62 Somebody have to write analog for acpi.
63 </p><h3>clock</h3>
64 This plugin displays current time. When mouse cursor is positioned over
65 it, tooltip displays current date as well. Clicking on the time pops up
66 calendar for current month.
67 <p>
68 There are plans to add task scheduler to this plugin, but they are not
69 implemented yet.
70 </p><h4>files used by clock plugin</h4>
71 <dl>
72 <dt><b>~/.fubar/holydays</b>
73 </dt><dd>list dates which should be displayed red even if they are weekdays
74 or black even they are weekends
75 </dd><dt><b>~/.calendar.vcs</b>
76 </dt><dd>Tasks and events in VCARD format.
77 </dd></dl>
78 <h3>dict</h3>
79 Provides an item <b>Word</b> in the <b>Find </b>menu, which used to find
80 word in the dictionary using <b>dict</b>(1). Regardless of current
81 locale  of fubar</b>, assumes that dict should recieve word an return
82 definition in utf-8.
83 <h3>irda</h3>
84 Checks <tt>/proc/net/irda/discovery</tt> for nearby IR-capable devices. 
85 If device is present, displays its icon, and creates menu of operations
86 with this device. It uses quite complicated <tt>irda.conf</tt> file
87 which is yet to be documented.
88 <p>
89 Analog for bluetooth is desirable.
90 </p><h3>mail</h3>
91 Displays small icon with mail envelope and highlights it red if there is
92 new mail in your inbox. If you have local inbox in one of standard
93 locations (<tt>/var/spool/mail/${USER}</tt>, <tt>/var/mail/${USER}</tt>,
94 <tt>${HOME}/Maildir</tt>) finds this mailbox automatically. If it is
95 unable to find local inbox, set <b>MAIL</b> environment variable.
96 <p>
97 If you want to check mail in the remote imap mailbox, and you have
98 rsh/ssh access to the host, it resides, and you can run imapd on that
99 host in preauthenticated mode (which I always recommend), you can create 
100 <tt>${HOME}/.fubar</b>/imapmail</tt> file with two lines:
101 </p><pre>host <i>mailhost</i>
102 command <i>imapd</i>
103 </pre>
104 where <i>mailhost</i> is a label from the <tt>${HOME}/.fubar</b>/hosts</tt>
105 file for your mail server, and command is a command to run imapd with.
106 <p>
107 Examples of command:
108 </p><ul>
109 <li>For courier IMAP: <tt>/usr/bin/imapd Maildir</tt>
110 </li><li>For UW-IMAP: <tt>/usr/sbin/imapd</tt>
111 </li></ul>
112 If you want to check mail using IMAP-ssl providing password or client
113 certificate, you are free to write it. But I don't recommend to store
114 password in the <tt>imapmail</tt> file. You can make fubar</b> read your
115 <tt>.muttrc</tt> or ask password at startup. 
116 <p>
117 If you want to check for POP3 mail, better to use fetchmail and convert
118 POP-3 mail to local. I wouldn't accept patches related to pop3 exept,
119 may be, separate alternative pop-3 plugin.
120 </p><h3>mount</h3>
121 This plugin provides quick way to monitor and mount/umount
122 user-mountable devices. On startup it scans <tt>/etc/fstab</tt> and
123 creates an icon for each device with option <b>user</b>. 
124 <p>
125 Image differs depening on state of device - if it is mounted or
126 umounted.
127 </p><p>
128 Click on the icon mounts the device, if it is not mounted, or umounts,
129 if not. If device is ejectable (i.e. cdrom or zip-drive) it is ejected
130 after umount. If fubar</b> doesn't recognize device as ejectable, add
131 comment # ejectable into corresponding line in fstab.
132
133 </p><h3>phonebook</h3>
134
135 This plugin adds item <b>Person</b> into <b>Find</b> menu. It is old
136 plugin which uses its own phonebook format file. See <b>phone_vcf</b>
137 plugin. It is kept  only because it allows to find user</b> in the system
138 using <b>finger</b>(1).
139 <h3>phone_vcf</h3>
140 Allows to browse and search <tt>${HOME}/.phonebook.vcf</tt> file, which
141 can be backup of your mobile phone phonebook, downloaded using OBEX
142 protocol. Supports even PHOTO attributes in the VCARD. Assumies that
143 your phonebook is converted into utf-8. If your phone uses something
144 else (some Nokia phones use ISO charsets, Ericssons use UTF-7), convert
145 it to utf-8 before using in fubar. See my <a
146 href="../unix/mobiletools.html">Unix mobile tools page</a> for example
147 solution.
148
149
150 <h2>Configuration</h2>
151 Fubar creates its own configuration directory <tt>~/.fubar</tt>. 
152 <p>
153 It has following files
154 </p><dl>
155 <dt><b>menu/</b> subdirectory
156 </dt><dd><p>This directory is used to fill up the start menu. Files in this
157 directory are scripts or symlinks to the programs to invoke.
158 Subdirectories represent submenus. When creating
159 menu items underscores are replaced by spaces, extensions are stripped
160 and prefixes which look as <i>&lt;number&gt;.</i> are stripped to (but
161 taken into account when sorting.
162 </p><p>
163 There are few special extensions which are interpreted specially.
164 </p><dl>
165 <dt><b>.xterm</b>
166 </dt><dd>Program is invoked using <tt>xterm -e</tt> thus allowing you to
167 symlink textmode programs into menu
168 </dd><dt><b>.tcl</b>
169 </dt><dd>Files are sourced into Fubar</b> process rather than executed in
170 separate process.
171 </dd><dt><b>.fvwm</b>
172 </b></dt><dd>Files are considered scripts of fvwm commands and sent to
173 <b>fvwm</b>.
174 </dd></dl>
175 </dd><dt><b>plugins</b> directory
176 </dt><dd>Files in this directory are sourced at fubar startup. On first start
177 this directory is populated by symlinks to all fubar plugins, included
178 in the distribution.
179 </dd><dt><b>mail</b>
180 </dt><dd>This is a script which should invoke your favorite mail client. It
181 should accept E-Mail address as argument.
182 </dd><dt><b>fm</b>
183 </dt><dd>This is s script to invoke your favorite file manager. It should
184 accept directory name as an argument and display this directory. Default
185 is ${HOME}.
186 </dd><dt><b>hosts</b>
187 </dt><dd>This file is used to create menu of hosts in <i>Run</i> window and
188 toplevel <i>Xterm</i> menu.
189 Each line of this file can be either a comment, started with #, a
190 separator (more than two dashes at start of line), submenu brackets or has format:
191 <pre>name[:dns-name] command list-of-locales
192 </pre>
193 where <i>name</i> is name to appear in the menu, <i>dns-name</i>, if
194 present is name to pass to command (if not present, <i>name</i> is
195 used), <i>command</i> is a command to use to access this host (which can
196 be <tt>ssh</tt>, <tt>rsh</tt> or something else, which accepts syntax
197 <pre><i>command</i> <i>hostname</i> <i>cmd-to-execute</i>
198 </pre>
199 and starts a shell when <i>cmd-to-execute</i> is not specified.
200 <p>
201 If list-of-locales is empty, command is started in the same locale as
202 fubar</b> itself. If it contain only one element, command is started in the
203 specified locale (for ex ru_RU.UTF-8). If it contains multipple
204 elements, then multiple entries would be created for this host to run
205 commands  (or start xterms) in the different locales. If first element
206 of locale list is  "&lt;", these entries would be placed into cascading
207 submenu
208 </p><p>
209 If you have too many entries in the hosts file, you can group them into
210 submenus. Submenu starts with line "&lt;label", where label is the text
211 to appear in the upper menu, and ends by "&gt;" on separate line,  
212 </p><p>
213 Note that fubar</b> doesn't care how locale information is transfered to
214 remote host. It just starts specified command locallin in the given
215 locale. Use something like <a
216 href="http://www.wagner.pp.ru/%7Evitus/hints/ssh.html">rs script</a> to
217 establish remote session with proper locale settings.
218 </p></dd><dt><b>holydays</b>
219 </dt><dd>Used by <b>clock</b> plugin to highlight or unhighlight days in the
220 calendar.
221 </dd><dt><b>hotkeys</b>
222 </dt><dd>List of hot keys which fubar should grab from fvwm. Format of lines
223 in this file is simular to fvwm key command, but instead of fvwm command
224 to run fubar command should be specified. There are following commadns:
225 <dl>
226 <dt>menu <i>path</i>
227 </dt><dd>Invokes apporpriate item from Start menu.  If path refers to submenu
228 posts corresponding menu. If no path given, pops up a start menu
229 </dd><dt>find <i>path</i>
230 </dt><dd>Invokes appropriate item from Find menu
231 </dd><dt>xterm 
232 </dt><dd>Opens an Xterm menu
233 </dd><dt>run
234 </dt><dd>Pops up a Run dialog
235 </dd><dt><i>widget name</i>
236 </dt><dd>where <i>widget name</i> is a name of widget, created by plugin
237 without leading dot. Invokes same action as clicking left mouse button
238 on corresponding widget.
239 </dd></dl>
240 </dd><dt><b>man</b>
241 </dt><dd>Script to pop up your favorite manual browser.
242 </dd><dt><b>imapmail</b>
243 </dt><dd>configuration file for <b>mail</b> plugin which describes how to check mail
244 in the remote folder.
245 </dd><dt><b>irda.conf</b>
246 </dt><dd>configuration file for <b>irda</b> plugin
247 </dd></dl>
248 <h2>TODO</h2>
249 <h3>Before next release</h3>
250 <ul>
251 <li>Finish hotkeys
252 </li><li>Add editing capabilites to <b>phone_vcf</b> plugin
253 </li><li>Finish editing host entry functionality
254 </li><li>Complete command name in the Run dialog searching executables via
255 PATH rather than using file dialog (but file dialog should still work
256 for parameters)
257 </li><li>Use partially entered filename as pattern for filename completion
258 </li></ul>
259 <h3>At some point of future</h3>
260 <ul>
261 <li>Allow to store history entry from <b>Run</b> window as start menu
262 item.
263 </li><li>Add sticker notes plugin
264 </li><li>Add events and tasks support to clock plugin
265 </li><li>Write filemanager which would work with every host, listed in the
266 host file
267 </li></ul>
268 <h2>Download</h2>
269
270 Use CVS to download
271 <blockquote>
272     CVSROOT=:pserver:cvs@wagner.pp.ru:/work/oss<br>
273     empty password<br> 
274     module name <a href="http://www.wagner.pp.ru/cgi-bin/cvsweb/fubar?cvsroot=soft">fubar</b></a>
275 </blockquote>   
276 <p>
277 Additional software, required to run FUBAR</b>:
278 </p><ul>
279 <li><a href="http://www.wagner.pp.ru/~vitus/software/tcl/tclfvwm.html">tclFvwm</a> module
280 Debian package is also available in <a href="http://wagner.pp.ru/debian/repository">our local repository</a> 
281 </li><li>TclX (On Linux it would work without Tclx)
282 </li><li><a href="http://www.sf.net/projects/tcl">Tcl/Tk</a> 8.4
283 and above required
284 </li></ul>
285 <p>
286 </p><h2>Screenshot</h2>
287 There is <a href="http://www.wagner.pp.ru/~vitus/software/tcl/fubar.gif">one</a> it is rather big and actually
288 larger then distribution itself. Then, most of fubar</b> windows are too
289 transient (menus, popups), and it is definitely harder for me to catch
290 them with screengrapper than to implement them.
291
292 <h2>Revision history</h2>
293 <dl>
294 <dt>May 2005. I've got to fubar again. No new release yet, but lot of
295 features in CVS
296 </dt><dt>Summer 2004. Some notebook-specific plugins are implemented. 
297 </dt><dt>Tue Jan 04 2000 beta 1
298 </dt><dd>I use fubar for nearly year now, so it certainly passed alpha
299 stage.<ul>
300 <li>Find menu added
301 </li><li>mount plugin added
302 </li><li>bug with non-highlighting today'date and holidays in calendar for 
303 1-9 of each month fixed
304 </li><li>Right button on Start menu calls file manager now
305 </li></ul>
306 </dd><dt>Tue Feb 23 1999 Alpha 2
307 </dt><dd>clock plugin now pops up calendar<br>
308     show_popup function now properly handles situation if popup window
309     is too close to right side of screen
310 </dd><dt>Mon Feb 22 1999 Alpha 1
311 </dt><dd>After some week of using fubar myself, I decide to release it to 
312   public.
313 </dd></dl>  
314
315 </li></ul></body></html>