| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This combined with starting the X server with -nr
will give us a nice fade transition when g-s-d starts
|
|
|
|
|
|
|
|
|
|
|
| |
systemd 39 and newer provide a small wrapper for X which works around
the fact that XOrg upstream currently support multi-seat hotplug for
displays. Let's make use of this as a stop-gap until this feature is
added to XOrg upstream.
This code tries to be as defensive as possible and makes use of the
wrapper only if the system as actually booted with systemd, the wrapper
is available and we actually use a seat != "seat0".
|
|
|
|
|
|
|
|
|
| |
When we spawn a new X server, let's pass the seat id to it via the
"-seat" parameter, which has been available since a while in upstream
Xorg.
-seat causes the X server to only make use of hardware that is assigned
to the seat specified, and leave all other hardware untouched.
|
|
|
|
|
|
| |
logind will notify us when ever a new seat becomes available in the
system, or an existing seat is removed. We simply create a new display
for each seat showing up and remove a display when a seat goes away.
|
|
|
|
|
|
|
|
|
| |
This optionally replaces the current CK session registration logic with
support for passing seat information to pam_systemd (and hence rely on
pam_systemd's session registration).
With this patch applied we can register sessions in systemd and in CK
with the same binary.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pass seat id from product and simple slave to the direct sessions
created by it (along with the other display meta data we pass already).
Pass seat id from session to worker (via D-Bus) along with the other
display meta data.
We need the seat information for the PAM conversation (later patch)
hence we need to pass it from the slaves down to the workers.
(Note that the seat ID has always been passed from the display to the
slave, we just need to pass it on the worker now, so that the chain is
complete: display → slave → session → worker)
|
| |
|
| |
|
|
|
|
|
| |
Nothing was using register-ck-session and it has no effect, hence let's
get rid of this dead code.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
There's no situation where it's the right thing to do.
The children of the daemon are responsible for themselves.
If they don't go away when asked we shouldn't second guess
them, we just need to ignore them.
This means we may end up with zombie children if those children
have bugs, but it's better than prematurely killing them if they're
slow.
|
|
|
|
|
|
| |
It's spelled XDMCP not XMDCP
https://bugzilla.gnome.org/show_bug.cgi?id=663338
|
|
|
|
|
|
| |
They're warnings the user won't see without snooping.
They are hardly intelligible as it is and shouldn't
be translated, so they're easy to google.
|
|
|
|
|
|
| |
If the slave tells us to go away, we should go away,
not wait a PAM module decides to let us get back to the
main loop.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sometimes PAM modules are finicky and don't die when you tell them to.
Instead they fail some seconds later.
If a user successfully logs in with one stack and another stack is
being troublesome, then we'll get notified about it finishing up
after the user is already logged in.
When that happens, we erroneously assume the stack finishing is the
stack the user's session is running on and then proceed to log the
user out.
This commit makes us be a little more careful about our bookkeeping
so we can ignore failures from slow PAM modules.
|
|
|
|
|
|
| |
g_str_has_prefix() was misused.
https://bugzilla.gnome.org/show_bug.cgi?id=658451
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In commit f91f017071ffa5f5999e6c2e2c0929e290482932 I
introduced a translation layer that keeps compatibility
for distros who build with --disable-split-authentication.
The commit was somewhat faulty, though. I made some last
minute clean ups to the patch before committing that I didn't
fully test. Those cleanups resulted in the pam service name
getting improperly translated and broke the compatibility layer
the commit introduced.
https://bugzilla.gnome.org/show_bug.cgi?id=658451
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The daemon and fallback greeter support --disable-split-authentication,
but the new shiny greeter doesn't. This posed a problem for
distributions that want to use the new shiny greeter (in an albeit
degraded mode) but don't yet have support at the system level for
split authentication.
This commit adds a small amount of goo to make the split authentication
pam service names translate to the unified pam service name and
thus give the shell greeter a level of compatibility with
--disable-split-authentication.
|
|
|
|
|
|
|
|
|
|
| |
If we don't do this magic incantation then the keyboard
layout selector won't work until the user hits some key on their
keyboard.
Since we have to do this incantation anyway, this commit also gives
preferential treatment to the "us" keyboard layout. This makes sense
to do because most usernames and passwords are ascii.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In commit 6849f6f3b8a199bed5427b8d6f1e2dedbe035d6c
the code was changed to stop the greeter asynchronously
and start the session following its completion.
Autologin doesn't have a greeter though, so this broke
it.
This commit fixes autologin.
https://bugzilla.gnome.org/show_bug.cgi?id=658899
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=655380
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=655380
|
|
|
|
|
|
|
|
| |
Right now we hard code the session to gdm-shell which
prevents users from forcing fallback.
This commit changes gnome-session to load the session
from settings, and changes the default in settings to gdm-shell.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since changing the greeter to run in its own PAM
session, we've started killing the worker process
instead of the session process right before the
user's session is started.
This is wrong, because it means we don't give the
greeter session time to kill itself in an orderly
way before we rip away its session bus.
This commit changes the welcome session stop function
to kill the pid of the welcome session instead of
the pid of its worker parent. This change requires
reinstrumenting all callers of gdm_welcome_session_stop
to not free the session until the "stopped" signal
following gdm_welcome_session_stop.
https://bugzilla.gnome.org/show_bug.cgi?id=658481
|
|
|
|
|
|
|
|
| |
Right now when stopping a conversation we give it 3 seconds
to die and then kill kill kill.
This commit changes the killing to be asynchronous and not
time out until absolutely necessary.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ioni pointed out on IRC, that since commit
647cad5bf59a4ff3776ba1ae5cda6b1aaaa1cfb2
the greeter session isn't getting fully registered
with consolekit and so udev acls weren't being
properly applied.
This commit passes the tty to the worker process
so that it can be used for registration.
It also passes hostname, merely for completeness.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now before launching the greeter, we create this
little ad hoc session that only runs through some of the
OS machinery for session registration.
This means not only is there duplicate code with GDMs
real session handling functions, but the greeter is
potentially running in an incomplete session.
This commit, inspired by the work of Lennart and Kay,
changes GDM to run its greeter session through a session
worker just like any other session.
|
|
|
|
| |
gnome-session takes a --debug argument not -d
|
|
|
|
|
| |
This commit changes gdm to first try running gnome-shell in
--gdm-mode and fallback to the existing way.
|
|
|
|
|
|
|
| |
Start with --failsafe to prevent unnecessary and
unwanted autostart files from getting processed.
Start with --debug since it's useful for debugging.
|
|
|
|
|
|
|
|
|
|
|
| |
The GDM chooser will leak a file descriptor for the auth file
each time the chooser is restarted.
This commit plugs the leak in a similar way to
commit 0c34aa7949bc24a2a8b3217cefb3c978b892591b
but for the chooser instead of remote greeters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tiny (or not so tiny) bugs in components below GDM in the stack
can lead to critical warnings.
In development releases, GDM by default will crash when encountering
a critical warning.
Losing the login screen is a big deal. We shouldn't automatically subject
our users to "can't log in" in order to highlight bugs in development
releases.
This commit removes fatal criticals by default.
|
|
|
|
|
| |
The stop function was previously just empty,
which led to litter in /tmp.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before we were doing some sort of weird hybrid thing with
a session file and an autostart directory that wasn't that
much different than just having an autostart directory by
itself.
Now we fully define the session component list from the session
file, and merely provide a pool of new candidate desktop files to
select that sessoin from.
This modernizes how we use gnome-session and as a side-effect
enables us the ability to have fallback sessions (which will
be important when defaulting to a shell based greeter later).
|
| |
|
|
|
|
| |
Add variable declaration.
|
|
|
|
|
|
|
|
|
|
|
|
| |
I had some inprogress changes in my local tree when when
git bz applying the patches on bug 618047.
Those unfinished changes got interleaved into the commits,
creating a bit of a mess.
Also, bug 618047 has been reopened.
This commit reverts those changes for now until.
|
|
|
|
|
|
|
| |
There's a bit of needless boilerplate and dead code
just sort of sitting around in various places.
This commit cleans things up a bit.
|
|
|
|
|
| |
It's not used. If we need it later we can bring it back
from history.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When user switching GDM needs to show a transient greeter for
the user to pick a name from the list and jump to that session.
After the user has been jumped to the selected session we don't
really have a use for the greeter session. Historically, we've
kept it around anyway, though, because X by default jumps back
to the VT it started on when it exits, and we don't want the
user to get thrown to an empty VT after they log out.
This commit changes X to get started with the "-novtswitch"
option, so that it doesn't do the undesirable switch-on-exit
thing.
This allows us to clean up the useless greeter following user
switches.
Based on work by Josselin Mouette <joss@debian.org>
https://bugzilla.gnome.org/show_bug.cgi?id=618047
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now we ignore transient displays after they're created. We make
no attempt to clean them up from the display store or put the user on
a login screen when their display ends or anything like that.
This commit changes the display factory to monitor transient display
status in much the same way it monitors static display status.
Note for static displays we always respawn when finishing, where
as with transient displays either die quietly, jump to an existing
login display, or respawn.
https://bugzilla.gnome.org/show_bug.cgi?id=618047
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There's some logic in create_display and friends,
that would be good to reuse for transient displays.
This commit adds a type argument to create_display
to say what kind of display to create.
Right now it only supports the one type it's always
supported, but that will change in a follow up commit.
https://bugzilla.gnome.org/show_bug.cgi?id=618047
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a display exits, sometimes it's desirable to
jump to a login screen.
This depends if the display is transient or not, and
also whether the display is hosting an already logged
in session or not.
This commit adds a property to the display object that
says whether a switch should happen or not.
Note the code to actually perform the switch will get
added in a follow up commit.
Based on work by Josselin Mouette <joss@debian.org>
https://bugzilla.gnome.org/show_bug.cgi?id=618047
|
|
|
|
|
|
| |
We live in a modern society where phones look like
something from Inspector Gadget and signal marshalling
is no longer something to waste goo credits on.
|
|
|
|
|
|
|
|
|
| |
The greeter needs not to know the saved session after the user
settings are loaded successfully. Sending back the saved session
name could potentially form an infinite loop between the daemon
and the greeter.
https://bugzilla.gnome.org/show_bug.cgi?id=569039
|
|
|
|
|
|
| |
This makes PAM not set it to a proper value later.
https://bugzilla.gnome.org/show_bug.cgi?id=649413
|
|
|
|
|
|
|
|
| |
If pam_start() fails, that suggests the configured service
stack is failing independent of the user account.
This commit exposes that failure as "service unavailable"
instead of "authentication failed".
|
|
|
|
|
|
| |
We keep multiple conversations in the session now, keyed off of
which PAM service is at the other end. Much of the guts still
only operate on the first conversation added though.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now the greeter (and also the autologin code) has to say what
PAM stack it wants the slave to run. When that stack is ready,
we emit the Ready signal as before, but now the Ready signal
carries a string argument saying which service is ready to
converse.
When we support multiple PAM stacks, the greeter will call
StartConversation for each stack, and will keep the UI
associated with each stack disabled until the Ready signals
come back one-by-one.
|