   After recompiling guile and scwm once more, I tried scwm without a
config file, and it worked (though the nonconfig was bad). Then I retried
with my usual .scwmrc (i.e. with almost no change but in paths), and it
died as usual with its #f not being the right type. So I dichotomy-booted
the scwmrc to isolate the faulty instruction. As a result, I found that
(getenv "USER") would return #f, for USER wasn't defined in my RH5.0 install,
whereas some lame default zsh startup in /etc/zsh would define it in my
old RH4.2 (with upgrades) install. What zsh defines as a standard builtin is
actually $USERNAME, and what /bin/login defines is $LOGNAME.
So the bug was not in scwm proper, but in a hidden dependency of the
the config file! And the determining problem was not going from libc5 to
glibc2, but having different zsh startup files in /etc...


Here are some remarks out of my experiments:
* startup is *slow*. This seems to be due to guile not being fast,
 and particularly not with reading configuration files.
 Do you know if GUILE has some fasl (fast loading) capability, to
 precompile configuration files or perhaps even dump image of a configured
 system?
* C code for set-edge-scroll! divides by 100, which is redundant and
 inconsistent with the convention to go through (%x 100) and such: I must use
 (set-edge-scroll! (%x 10000) (%y 10000)) which is ridiculous.
* it would be nice if all the macros commonly defined by FvwmM4 could
 be easily retrieved under scwm
* because I like not to re-develop a new configuration file for every
 computer I work on, I would like to use some auto-detection of (external)
 features and programs to shape menus accordingly. But because such detection
 is also tedious, how do you recommend to do it, possibly in a way that would
 cache results? i.e. how to get/split/use the PATH, etc.
* another useful detection would be of programs already running, to provide
 actions dependent on that info, like either launching a new server, or
 a client to it, and/or launching a new program or warping to opened window.
* another interesting feature could be to have window-specific settings,
 instead of window-class specific ones, so I could have a resident clock,
 and another one that isn't. One problem is to correctly associate the
 settings to a window, when you don't launch the window yourself, but
 need to exec an external program. The solution could be to tell the
 external program to use some dummy +x+y geometry, that would serve as
 an id tag, and that the wm would promptly change to a normal one after
 having identified the window. This requires some cooperation from
 the program launching windows, and the writer of the config file.

All in all, scheme may be a real language with real semantics,
it does not seem that GUILE or any other platform do provide real efficient
implementation providing way to relieve the user from most common tasks
(i.e. caching results accross user sessions). The X window protocol is
also much too low-level and badly integrated with the rest of the system.
Persistence under UNIX *sucks*. I appreciate scwm, but I'm longing for LispOS.


* Integration with the bash+guile project, to unify command-line and GUI.
 dynamically programmable icons would be cool.
* Persistence of some (selectable) session-dependent information
 This would also provide a generic way to deal with caching of features
 (and/or external programs) found accross sessions...

* finding a program verifying some conditions in the process list would
 be good. So I can choose to launch a new emacs or run a client,
 and detect which client to use (emacsclient vs gnuclient vs sending ugly
 synthetic keycodes to emacs); same with netscape; warping to whichever
 window/xterm was detected to have opened the mailbox.
* Detection that a window hasn't changed for some time and/or
 its process is idle, so we know it's time to show it/warp to it/notify
 the user, who doesn't have to stubbornly wait at things being drawn
 in "real-time" in front of him (cf ghostview et al).

