			  GUI shell details

The majority of Dolda Connect is made out of a number of ordinary Unix
programs;  for  example,  doldacond  follows the  normal  Unix  daemon
conventions, and  dolcon -- while not  a command-line program  -- is a
self-contained  GUI completely  separate from  the daemon.  While Unix
users  should  feel quite  at  home  with  these programs,  the  whole
convention of  using separate programs  may seem quite alien  to those
used  to  traditional Direct  Connect  clients,  such  as DC++,  where
everything is done by one, monolithic program.

In order to make life a bit easier for those people, Dolda Connect, as
of 1.0, comes with a number  of wrapper programs, which should be able
to  provide  the  illusion  of  Dolda Connect  being  one,  integrated
environment. For  those wishing  to hack on  them or those  just being
curious  about how everything  works together,  this file  attempts to
document the details of this so called `GUI shell'.

At its  core, Dolda  Connect consists of  two programs:  The doldacond
daemon, and the dolcon GUI. The  GUI shell adds three programs to wrap
them together:

 * The `dolconf' GUI configuration program
 * The `doldacond-shell' daemon wrapper
 * The `dolcon-launch' magic do-what-I-mean program

The dolconf  program is simply a  program which provides a  GUI to the
user in  order to compose a  configuration file for  doldacond. It can
run  both  in  assistant  (that's  `wizard'  for  you  Windows  users)
super-simple  mode, or  on  a slightly  more  advanced ordinary  mode,
somewhat,   vaguely  reminiscent  of   the  configuration   dialog  in
DC++. When  it starts, it  checks to see if  the $HOME/.doldacond.conf
file exists. If  it does, it will automatically  start in its ordinary
mode, whereas if it does not, it will ask the user whether to start in
assistant or ordinary mode. It provides the `-a' and `-w' command-line
options  to   immediately,  regardlessly  of  the   existance  of  the
configuration   file,   enter  the   assistant   or  ordinary   modes,
respectively.

The doldacond-shell program  is a wrapper program for  the daemon. Its
main task  is providing visual feedback  (by means of  a window) while
the daemon  is starting and  scanning the shares,  and a tray  icon to
indicate that  the daemon  is currently running.   It also  provides a
simple way  to launch dolcon simply  by clicking the tray  icon. As an
extra  service, it  also monitors  all transfers  in progress  and, if
compiled  with  libnotify  support,  will pop  up  notifications  when
interesting things  happen to the  transfers. When it starts,  it will
check  the  $HOME/.doldacond.pid  file   for  the  PID  of  a  running
daemon. If a  daemon is already running as indicated  by that file, it
will not  attempt to  start a new  one. It  shuts down along  with the
daemon itself.

The dolcon-launch  program is a  little DWIM program  for facilitating
the creation  of a desktop  file (a program  menu entry). It  is quite
simple  --   if  $HOME/.doldacond.conf  does  not   exist,  it  starts
dolconf.  If it  does exist,  but  no daemon  can be  found (again  as
indicated  by $HOME/.doldacond.pid),  it  starts doldacond-shell,  and
otherwise it starts an instance of dolcon.

To facilitate  all this,  dolcon has been  gifted with a  `-l' command
line  option, which,  if present,  causes dolcon  to autoconnect  to a
local daemon  via a  Unix socket. That  way, $HOME/.dolconrc  need not
necessarily be  configured for  local operation for  the GUI  shell to
work.

In all, I believe these programs together should present the illusion
of an integrated Direct Connect client program.
