
[Automatically generated HTML page (generator source)]



* Groovy *
Snapshot 19981105
This is a partially complete rewrite of the README.
Intro
-----
Groovy is yet another GUI front end to goofey. It requires Perl and GTK+ (via
Perl/Gtk). More importantly, you need a patched version of the command line
goofey (goofey.c) to work. See the section 'Install' for details.
Features include:
- Different windows for different groups of people for chatting.
- My favourite, the feature that separates serious chat clients from the
rest: scripting :) Very extensible using Perl and various hooks
available [Note: This is still very much in development]
Prerequisites
-------------
Perl 5, tested under 5.004_04.
Perl is available at <http://www.perl.com/>
Gtk-0.4 and GTK+, tested under Gtk-0.4 and GTK+ 1.1.??
They are available at <ftp://ftp.gimp.org/pub/gtk/>
Note: Gtk is the perl bindings for GTK+. GTK+ is the actual library. Talk
about confusing names. GTK+ 1.0.x should work, but I didn't test it.
The latest goofey.c is available via goofey. I know this is a chicken and egg
problem, so head off to the creator's page at
<http://yoyo.cc.monash.edu.au/~tym/goofey.html> for a usable goofey.c
The installation requires goofey, patch and a C compiler.
Install
-------
Type 'make' to automagically make the patched goof_gui. It downloads
goofey.c from pluto, so you better be connected. Alternatively, if you
already have goofey.c, copy it to the source directory and it'll use it
instead.
You will probably get some warnings during the compilation of goof_gui.c.
This is expected: goofey.c was written for as many non-ANSI compilers as
possible and uses some gnarly code.
Copy groovyrc to ~/.groovyrc
This is not required, but it does some cool things. Have a look at it. It is
actually Perl code.
To run it, type 'perl groovy.pl'. (Or chmod a+x groovy.pl; ./groovy.pl)
I haven't figured out the niceties of site installing yet. So run it from
the groovy directory. goof_gui, however, can be installed wherever in your
path since I don't often change it. Check the output of groovy.pl when you
start it (ie 'which goof_gui: $location'). It should be where you put it.
FAQ
---
1. Can't seem to receive messages.
Tried logging in yet? Press the 'Log In' button. Groovy doesn't log you
in automatically by default. Change ~/.groovyrc if you want to do so.
[Yeah, yeah, I haven't implemented the 'log in' function yet, but this
would be how you should do that]
On the other hand, you could be suffering from the bug [2] that has since
been fixed.
Finally, it could just be that you discovered our super secret
undocumented feature! Hopefully it'll get harder to find every new
snapshot.
Feedback
--------
I'd love feedback. Goof me (angch). I've spent too much time on this dang
thing when I should be doing other stuff like getting a life :) A can of Coke
would be very much appreciated.
Status
------
It is usable now. Though lots of debug stuff are hanging about... DON'T PRESS
THE RED BUTTON! :)
goof_gui, why?
--------------
Groovy is just a front end, you need the command-line client too. However,
the command-line client is inadequate for some operations, so some extra
functionalities is hacked in. These features are only triggered by a command
line switch. It _ought_ to work properly as the original CLI client, but I
do not gurantee that, especially if you need libreadline or libgetline
support. Hence, the patched execuatble is called goof_gui for the moment. I
haven't tested Groovy on non patched clients yet, but they should work for
everything except logging on.
Design
------
Groovy is not meant to replace the command line goofey client, therefore it
will not support all the features there. It is meant to augment the command
line client especially during long chat sessions or with several parties at
the same time.
It tries to be as modular as possible, offering various hooks to do stuff.
Where preferences differ, it FINISHME
Bugs
----
- Various GTK+ limitations/quirks have to be workedaround. See source. Quite
a fair number of stuff have to be hard coded in. This is very ugly. :(
Reminder to self: the GTK+ design quirks include:
- Unable to set various default (not minimum) sizes for widgets, most
noticeably the panes. (Sort of fixed, see [1] below)
- The text widget is a hack --> not enough control over it.
- Does not handle "Pluto failed to reply within 20 seconds" properly. (Only
gives error message for now)
- Edit box for send box does not scroll properly FIXED: now it just flickers.
Stupid text edit widget
To Do
-----
- Reduce wastage of screen real estate.
- Add the aliases to the tabs at the userlists. (Currently only 'watch'
there).
- Finer granularity for 'multitasking' goof_gui intergration. (e.g. use
a common request queue to goof_guis).
- Prettier icons. Just remember to test it under 8 bit displays
- Quiet on/off
- Designated tty
- Implement some sort of stuff so that at least a user can sent normal
goofey commands! Just have to differentiate between a message to user and
a message to pluto.
Future plans (longer term)
--------------------------
- Rework a goofey.pm so we don't have to use goof_gui. Make it modular so
other front-ends can use it.
- Extend the goofey.pm to be able to bypass pluto if both parties have the
extended functionality. Hopefully using UDP. Might also include talk(1)
or ytalk(1) functionality.
- Write a bot using available scripting features. Not as hard as it could
be... can even ask the bot 'operator' to confirm messages before sending.
Note that s/bot/Server/g, too. Same thing. Best if using goofey.pm only,
though. [This is Evil(tm), so don't expect me to release any code: if you
can't write your own server, perhaps it'll be better you don't use one at
all. NOTE: Inform the pluto maintainers (tym) if you do so, will ya?]
Purely It'll Be Nice If(tm), so don't get your hopes too high.
Copyright
---------
Groovy is copyright 1998 by Ang Chin Han. All rights reserved.
The program is free software, you can redistribute it and/or modify it
under the same terms as Perl itself.
FIXME
The license for goofey.c client, along with the patched goof_gui client is
unknown.
Notes
-----
- GTK+ sucks, and so does Groovy. It just sucks less than some others,
that's all.
- I hate Austin Powers.
ChangeLog
---------
- Do we really need to break circular refs during exit to avoid warnings?
Commented out currently.
- [1] Fixed default resizing hack. Now should be more GTK+ friendly: set_usize
to our default, then show it, then set_usize to the minimum.
- [2] container->need_resize() forces resizing when GTK+ doesn't know when to
resize properly. Fixed the disappearing first message in chat boxes.
- Aliasing tabs done, just need to integrate it with stuff to automatically
create them. Several design changes and unhardcoding of userlist and
usernotes.
- Groups of people in alias now added to tabs. FIXME: assume alias remain
the same throughout the session. Now fetches alias automatically during
start up.
---
Old, original README follows:
==== I'm alpha/betaing this thing now! Quite usable now ====
*****
WARNING: from 19981101 onwards, goof_gui is modified to use gvy($mypid)
instead of $mypid Recompile your goof_gui for this snapshot to work
*****
The official icon now is: groovy.tif (other formats can't handle the alpha
channel properly)
------------------------------------------------------------
Problems _without_ patching the goofey client:
It forks and dies.
It needs a tty --> last_keypress
Harder to kill
Problems replicating goofey client within groovy:
Single thread
More code and work
CHANGES to goofey.c
1. --no-daemon: don't fork, just sit there.
2. -h doesn't go resident: it quits
3. pipe friendly messages:
First ya print the number of lines to output, then the lines plus \n.
Repeat, terminated with "---\n" as number of lines
4. Watch always
5. No blat ???? Not done yet.
6. Version name with -GUI appended
7. tty returned when --no-daemon is actually the pid of goof_gui so that
the parent can kill it via goofey -x _pid_
- send_msg should check validity of message (e.g. ignore empty message)
- When the chatwindow grows large, GTK slows down. Need to implement
max messages limit.
- I'm considering this as a bug under gtk: black colors means 'tranparent'
if you have pixmap'd backgrounds (for the text box, at any rate). Fscking
gtk.