To start off, one thing that's annoying about switchdesk is that it uses
a hardcoded list of window managers. Really, it should use the sessions
contained in /etc/X11/dm/ like gdm does. Obviously for the purpose of
updating Xclients, any session with an Exec of default, custom, or
failsafe should not be listed. I am willing to do this work.
Two other things that could be done to improve matters regardless:
Firstly, create some easier to find documentation on the whole X startup
process. This would include the differences between what gdm and startx
do. I have a small document on this which explains what happens on a
Fedora system, and would be happy to tidy it up and contribute it to the
documentation project (if someone can point out where it might be most
Secondly, the naming of the "Default" session is confusing. I would
prefer that we added a proper "Custom" session. Xsession already allows
this, but currently behaves the same for either. I would propose that
the "default" action should execute /etc/X11/xinit/Xclients only (ie: it
bypasses anything the user has set). The "custom" action should be what
executes your own startup files. The long descriptions of these two
sessions should make it clear what they do. Eg: "Default system session
- ignores any custom session"; "Custom session set in ~/.Xclients".
Obviously there's the concern about backwards compatibility - especially
as the current way of doing things means there are more people using
"default" than there would otherwise be.
An aside: I would like to see a "failsafe" session available in the gdm
selection. It just requires a session file with that as the Exec - the
necessary code is already in Xsession.
On Mon, 2004-05-03 at 23:15, Bill Nottingham wrote:
Havoc Pennington (hp(a)redhat.com) said:
> startx is a command line thing though, which means startx users are
> perfectly capable of editing .Xclients themselves instead of with
> switchdesk. Just document how to start each desktop in .Xclients...
Speaking for myself - that would be acceptable.
If you do that, might as well have GDM edit it for you.
Definitely a good option - only one tool to worry about. There are two
issues though. Firstly, users who do not run a DM yet still want a tool
to change their default session [for startx]. Secondly, users who want
one default session for gdm, and another for startx.
If both of those groups are deemed to be capable of editing Xclients by
hand then the simplest solution to please the most people is to drop
switchdesk, re-enable the gdm session selection code, and make it write
Alternatively we need to address the confusion caused by the combination
of using switchdesk and gdm. If you set a default in gdm, it's not what
gets used when you run startx. If you set a default in switchdesk, it's
only used by gdm when "Default" is set there.
I think the issue is that there are two tasks - choosing a session for
gdm, and choosing a session for startx. For former is handled fine at
login time by gdm's own code (currently disabled). The problem is really
when someone wants to change the gdm session whilst logged in. They use
switchdesk - but switchdesk is really designed for the other task,
namely choosing a session for startx.
I propose we solve this by making switchdesk suitable for both tasks -
so it updates gdm (ie: set the appropriate gconf key) as well as startx
(ie: writes ~/.Xclients). The default would be to change the setting of
both, but you should be able to do one or the other. Obviously this
requires my initial proposal (that switchdesk uses the same session list
as gdm). There are varying ways you could do the UI for this - I'll try
to mock up some ideas tomorrow. Again, I am willing to do the coding on
Comments and ideas welcome.