Re: Session Restoring All Windows on First Workspace

Jeremy Hankins <nowan nowan org> writes:

> Clinton Ebadi <clinton unknownlamer org> writes:
>> Jeremy Hankins <nowan nowan org> writes:
>>> Theoretically, I could use some other session manager and get the
>>> same results.  Any suggestions for a simple session manager that just
>>> manages a session?  Ideally I wouldn't have to spend much time
>>> futzing with it...
>> So it turns out that sawfish was actually not even starting properly!
> Can you explain how you start sawfish?  I got gnome starting sawfish by
> using gconf-editor to edit
> desktop/gnome/session/required_components/windowmanager.  At first I
> thought I could specify a path there, but it seems that it's expecting a
> desktop file, not an executable.  Once I figured that out I was able to
> get gnome to start sawfish rather than silently ignoring the
> "/usr/local/bin/sawfish" I'd had there.  I honestly don't comprehend how
> gnome is considered easy to use....

Yeah, it is "easy" if you ... browse the web and not much else I
think. I had to look at the source for gnome-session to figure out how
to change such things!

But it turns out that I had gnome-wm set as the windowmanager, and I
*assumed* it was loading sawfish. In reality it was failing to start any
window manager, and sawfish was being picked up as a normal application
and being started that way instead. Which, for whatever reason, caused
gnome-session to only pass --sm-client-id (-> session file not found but
the argument was consumed so it *seemed* to start properly).

> Anyway, I do all this and discover that sawfish isn't being run with the
> --sm-client-id arg at all, so it's running without session management.
> So I still can't test it out myself.

The first time you run sawfish it is called with any SM arguments
because it has not been saved as part of a session yet. After you logout
of GNOME (`gnome-session-save --logout' or similar) a session is saved
and the next time the --sm-{prefix,client-id} arguments are passed based
upon what sawfish returns when queried in `sm-save-yourself'.

>> After fixing things such that it was being started correctly... it
>> bombed out with a weird error and unhelpful backtrace. After a bit of
>> debugging and figuring out how the debugger worked... tada, I discovered
>> the problem was in lisp/sawfish/wm/user.jl. The last bit consumes *all*
>> command line arguments, and attempts to load anything it does not
>> recognize as a file, or, if it does not exist, as a module. And thus
>> sawfish died upon encountering "--sm-client-id".
> This seems to be the result of a commit Chris made back in August of 2009:
> commit 379750f67d7227499a93b35dfa8c138d4ca5606f
> Author: chrisb <zanghar freenet de>
> Date:   Sat Aug 29 18:24:40 2009 +0200
>     changed position of user-level initialization

It seems like it *might* be reasonable to restore the session after
loading the user rc, but then again perhaps not (I don't see the harm in
it). I can hack up another patch that splits the user rc loading and
command line processing into two files and loads the former before
session restoration and the latter after.

Alternatively the braindead behavior of command line processing could be
changed. I'm willing to do that as well (and perform the required
documentation updates and whatnot). There are few issues with this still
however: unadorned arguments to sawfish are by default assumed to be
files or modules to load which is a bit ... ugly. I'm in favor of adding
a new command line argument to require module explicitly, but then the
issue of scripts in the wild using this convention arises. OTOH how
important is backward compatibility?

<captain_krunk> ntk is currently using "telnet fyodor 25" to send email

Attachment: pgpKQXj1vaTBw.pgp
Description: PGP signature

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]