Display Management / Login Screen

One important question toward integrating wayland into the desktop stack is what role GDM should play. GDM currently provides a few main functions:

  • Starting and managing X servers (display management)
  • Running gnome-shell in a special "GDM"-mode to present a login screen to the user
  • Being a liason between the GDM-mode gnome-shell and the underlying authentication backend (PAM)
  • Starting the user's session after authentication succeeds.

A first step toward wayland integration is getting GDM to manage wayland based user sessions in addition to the existing X based user sessions it already supports. For simplicitly, GDM should be changed to support this before the login screen itself is re-engineered to run a wayland compositor.

Typically, after a user has typed their username and password successfully, GDM kills the GDM-mode gnome-shell from the currently running X server, and then starts the user session on the same X server. In a model where the user's session is wayland based, we don't need to transition the X server over from the login screen program to the user sesssion. Instead of killing the login screen, we can reset it so it's available for user switching later. Alternatively we could kill the login screen and the X server, but doing that has the potential to disrupt the login process.

The login screen presents a list of sessions (e.g., GNOME, GNOME Classic) the user can log in with at login time. GDM needs to tag whether or not each of these sessions in the list are wayland sessions or X sessions, so that it knows whether or not to reuse the X server for the user session. These sessions are currently generated from a collection of keyfiles in /usr/share/xsessions. The file format is based on the .desktop file spec, but it's not really a desktop entry (since it describes sessions, not applications). An example file may look like:

 [Desktop Entry]
 Encoding=UTF-8
 Name=GNOME
 Exec=gnome-session

We can extend the file format to tag what kind of session it is, by adding a new line, prefixed with X-GDM-, e.g.,

 X-GDM-Session-Type=wayland

GDM already has code for handling reseting the login screen and keeping the X server alive. It uses this code when a user performs user-switching to an already started session. We should be able to make use of or at least look at this code for inspiration:

Once GDM knows that it's going to start a user session that uses a wayland based compositor, it needs to pass that information on to PAM, before calling pam_open_session. Right now, GDM sets the PAM_XAUTHDATA and PAM_XDISPLAY items, before opening the session. pam_systemd uses these two items when registering the user session with logind. These items make no sense if the session isn't running on an X server. Some comparable mechanism will need to crafted to register "wayland" sessions (as opposed to "x11" sessions returned from sd_session_get_type). Session registration is currently done by the pam_systemd PAM module by calling CreateSession:

Some new parallel API will need to get added that's wayland aware.

logind currently handles setting up device acls on the dri devices. We should make sure all device acl management is consolidated in one place logind.

IRC Log

Thu 21 Mar 2013 03:51:57 PM EDT Mar 21 15:51:57 ---     Users on #gnome-os: jjardon damien_l poettering jadahl stefw mdhill joss @ebassi|afk kklimonda @Services sri robtaylor fredp rtcm zeenix ivan moonlite Jasper hergertme 
Thu 21 Mar 2013 03:52:01 PM EDT Mar 21 15:52:01 -->     krh (~krh@c-67-186-132-98.hsd1.ma.comcast.net) has joined #gnome-os
Thu 21 Mar 2013 03:52:21 PM EDT Mar 21 15:52:21 <krh>   hey halfline 
Thu 21 Mar 2013 03:52:28 PM EDT Mar 21 15:52:28 -->     rib (~bob@cpc3-heme9-2-0-cust169.9-1.cable.virginmedia.com) has joined #gnome-os
Thu 21 Mar 2013 03:52:33 PM EDT Mar 21 15:52:33 <halfline>      hey
Thu 21 Mar 2013 03:53:15 PM EDT Mar 21 15:53:15 <krh>   rib and I were talking about what to do about gdm and wayland and weston-launch in the near term
Thu 21 Mar 2013 03:53:21 PM EDT Mar 21 15:53:21 <rib>   hey, yeah I was just starting to adapt something like weston-launch for mutter/gnome-shell and wondering about the interaction with pam and gdm
Thu 21 Mar 2013 03:53:52 PM EDT Mar 21 15:53:52 <halfline>      so the way gdm works now is ...
Thu 21 Mar 2013 03:54:03 PM EDT Mar 21 15:54:03 <halfline>      there's process called the "slave" that runs as root
Thu 21 Mar 2013 03:54:07 PM EDT Mar 21 15:54:07 <halfline>      it starts an X server
Thu 21 Mar 2013 03:54:18 PM EDT Mar 21 15:54:18 <halfline>      and it starts another process called the "worker" that also runs as root
Thu 21 Mar 2013 03:54:29 PM EDT Mar 21 15:54:29 <halfline>      the worker is what does the PAM conversation
Thu 21 Mar 2013 03:54:44 PM EDT Mar 21 15:54:44 <halfline>      so it calls pam_authenticate
Thu 21 Mar 2013 03:54:49 PM EDT Mar 21 15:54:49 <halfline>      which runs through the auth stack
Thu 21 Mar 2013 03:55:11 PM EDT Mar 21 15:55:11 <halfline>      and any time there are messages they get forwarded up to gnome-shell which is running in gdm mode
Thu 21 Mar 2013 03:55:16 PM EDT Mar 21 15:55:16 <halfline>      (the login screen)
Thu 21 Mar 2013 03:55:31 PM EDT Mar 21 15:55:31 <halfline>      any time the user answers a message, it gets sent back to the worker that feeds it into pam
Thu 21 Mar 2013 03:55:57 PM EDT Mar 21 15:55:57 <halfline>      eventually the worker calls pam_open_session after working through the auth and account stacks
Thu 21 Mar 2013 03:56:13 PM EDT Mar 21 15:56:13 <halfline>      this pam_open_session call registers the session with logind
Thu 21 Mar 2013 03:56:22 PM EDT Mar 21 15:56:22 <halfline>      and then the worker forks() and setuid() to the user
Thu 21 Mar 2013 03:56:29 PM EDT Mar 21 15:56:29 <halfline>      and execve()'s gnome-session
Thu 21 Mar 2013 03:56:47 PM EDT Mar 21 15:56:47 <halfline>      after the fork, the worker sits around and waits for the session to end
Thu 21 Mar 2013 03:56:57 PM EDT Mar 21 15:56:57 <halfline>      and then calls pam_close_session()
Thu 21 Mar 2013 03:57:33 PM EDT Mar 21 15:57:33 <halfline>      does all that writing make sense ?
Thu 21 Mar 2013 03:57:42 PM EDT Mar 21 15:57:42 <rib>   okey that makes some sense to me yeah
Thu 21 Mar 2013 03:57:52 PM EDT Mar 21 15:57:52 <krh>   yup - who starts gnome-shell greeter mode? slave or worker?
Thu 21 Mar 2013 03:58:13 PM EDT Mar 21 15:58:13 <halfline>      the slave starts a worker specifically for the greeter user
Thu 21 Mar 2013 03:58:30 PM EDT Mar 21 15:58:30 <halfline>      that worker uses a minimal pam stack
Thu 21 Mar 2013 03:58:43 PM EDT Mar 21 15:58:43 <halfline>      (called /etc/pam.d/gdm-launch-environmont )
Thu 21 Mar 2013 03:58:55 PM EDT Mar 21 15:58:55 <krh>   ok
Thu 21 Mar 2013 03:59:25 PM EDT Mar 21 15:59:25 <krh>   so it sounds like the worker process is very similar to weston-launch
Thu 21 Mar 2013 03:59:31 PM EDT Mar 21 15:59:31 <halfline>      s/greeter user/gdm user (uid 42 on fedora)/
Thu 21 Mar 2013 03:59:48 PM EDT Mar 21 15:59:48 <halfline>      yea i briefly looked at weston-launch of a couple of days ago
Thu 21 Mar 2013 04:00:03 PM EDT Mar 21 16:00:03 <halfline>      it runs a subset of the pam stuff
Thu 21 Mar 2013 04:00:08 PM EDT Mar 21 16:00:08 <halfline>      (basically just the session stack)
Thu 21 Mar 2013 04:00:24 PM EDT Mar 21 16:00:24 <halfline>      and uses the /etc/pam.d/login service file normally used by /bin/login
Thu 21 Mar 2013 04:00:27 PM EDT Mar 21 16:00:27 <krh>   yeah, we just run enough to get a valid session and get the right facls on device nodes
Thu 21 Mar 2013 04:00:29 PM EDT Mar 21 16:00:29 <halfline>      but conceptually they seem similar
Thu 21 Mar 2013 04:00:55 PM EDT Mar 21 16:00:55 <halfline>      in a wayland world, things are little inside out compared to an X world
Thu 21 Mar 2013 04:01:15 PM EDT Mar 21 16:01:15 <halfline>      i wouldn't make sense for the slave to start a wayland server for instance
Thu 21 Mar 2013 04:01:18 PM EDT Mar 21 16:01:18 <halfline>      in the way it starts an X server
Thu 21 Mar 2013 04:01:20 PM EDT Mar 21 16:01:20 <krh>   what weston-launch does in addtion is to keep a socket connection to weston, and helps weston open input devices and do drop/set master on the drm device
Thu 21 Mar 2013 04:01:33 PM EDT Mar 21 16:01:33 <halfline>      it would just start the greeter's gnome-shell which would be the wayland display server
Thu 21 Mar 2013 04:02:06 PM EDT Mar 21 16:02:06 <krh>   right, there are two issues here: how do we make gdm work as a wayland server and how do we start wayland sessiosn
Thu 21 Mar 2013 04:02:31 PM EDT Mar 21 16:02:31 <halfline>      well the thing to remember is in the X model
Thu 21 Mar 2013 04:02:39 PM EDT Mar 21 16:02:39 <halfline>      the login screen runs on the some display server as the user session
Thu 21 Mar 2013 04:02:57 PM EDT Mar 21 16:02:57 <halfline>      once the user types in the right credentials, the greeter's gnome-shell dies off
Thu 21 Mar 2013 04:03:14 PM EDT Mar 21 16:03:14 <halfline>      and the display is handed over to the user's gnome-session / gnome-shell
Thu 21 Mar 2013 04:03:14 PM EDT Mar 21 16:03:14 <krh>   yup
Thu 21 Mar 2013 04:03:56 PM EDT Mar 21 16:03:56 <krh>   once gdm runs as a wayland server, it won't do that
Thu 21 Mar 2013 04:04:21 PM EDT Mar 21 16:04:21 <rib>   initially I'm not sure we need to adapt gdm to work as a wayland server since in the first phase of wayland support for gnome we can still run the login screen like today with an xserver
Thu 21 Mar 2013 04:04:39 PM EDT Mar 21 16:04:39 <halfline>      well gdm doesn't do any of the "front end" stuff
Thu 21 Mar 2013 04:04:45 PM EDT Mar 21 16:04:45 <halfline>      so i'm not sure it should ever be a wayland server
Thu 21 Mar 2013 04:04:47 PM EDT Mar 21 16:04:47 <halfline>      gdm just runs gnome-shell
Thu 21 Mar 2013 04:05:06 PM EDT Mar 21 16:05:06 <halfline>      for the user session gnome-shell is going to provide the wayland server right?
Thu 21 Mar 2013 04:05:13 PM EDT Mar 21 16:05:13 <krh>   it doesn't run any clients at all?
Thu 21 Mar 2013 04:05:20 PM EDT Mar 21 16:05:20 <halfline>      no
Thu 21 Mar 2013 04:05:26 PM EDT Mar 21 16:05:26 <krh>   ok
Thu 21 Mar 2013 04:05:29 PM EDT Mar 21 16:05:29 <halfline>      i mean it XOpenDisplay and moves the mouse cursor
Thu 21 Mar 2013 04:05:39 PM EDT Mar 21 16:05:39 <krh>   well I guess gnome-shell could support running in a mode with no wayland server support
Thu 21 Mar 2013 04:05:47 PM EDT Mar 21 16:05:47 <krh>   and just come up on kms and prompt for password
Thu 21 Mar 2013 04:06:20 PM EDT Mar 21 16:06:20 <krh>   but that's mostly a detail for the purpose of this discussion
Thu 21 Mar 2013 04:07:00 PM EDT Mar 21 16:07:00 <halfline>      well gnome-shell depends on gnome-settings-daemon and the like to be running, even in the login screen
Thu 21 Mar 2013 04:07:14 PM EDT Mar 21 16:07:14 <krh>   and anyway, I think it's probably a good idea to focus on just the how-to-launch-a-wayland-session aspect for now
Thu 21 Mar 2013 04:07:59 PM EDT Mar 21 16:07:59 <rib>   so initially I would image we leave the slave aspect unchanged, running gnome-shell in gdm mode against a regular x server. but the stuff I wonder about is the differences with starting a new gnome-session with a new xserver vs a weston-launch like thing
Thu 21 Mar 2013 04:08:16 PM EDT Mar 21 16:08:16 <krh>   yea
Thu 21 Mar 2013 04:08:54 PM EDT Mar 21 16:08:54 <krh>   I imagine that we can extend the worker process to do what weston-launch doesn in case of a wayland session
Thu 21 Mar 2013 04:09:02 PM EDT Mar 21 16:09:02 <rib>   it sort of sounds like gdm can deal with creating the pam session for us, which is one thing that weston-launch currently does
Thu 21 Mar 2013 04:09:10 PM EDT Mar 21 16:09:10 <halfline>      yea, i agree
Thu 21 Mar 2013 04:09:13 PM EDT Mar 21 16:09:13 <krh>   vt switching and the setuid helper parts
Thu 21 Mar 2013 04:09:26 PM EDT Mar 21 16:09:26 <halfline>      it would make sense to just put the relevant parts of weston-launch in gdm-session-worker
Thu 21 Mar 2013 04:09:27 PM EDT Mar 21 16:09:27 <rib>   right vt switching is the next bit I'm wonderng about
Thu 21 Mar 2013 04:09:36 PM EDT Mar 21 16:09:36 <krh>   since the worker stays around for the duration of the session anyway
Thu 21 Mar 2013 04:10:21 PM EDT Mar 21 16:10:21 <krh>   rib: oh yeah, you had a good point about putting some of the vt init/restore code in weston-launch to have better error recovery
Thu 21 Mar 2013 04:10:21 PM EDT Mar 21 16:10:21 <halfline>      so if we vt switch we're going to flicker and not get a smooth transition
Thu 21 Mar 2013 04:10:37 PM EDT Mar 21 16:10:37 <krh>   halfline: no, vt switch doesn't flickr if you do it right
Thu 21 Mar 2013 04:10:50 PM EDT Mar 21 16:10:50 <krh>   in KD_GRAPHCIS mode, nothing happens on the display when you switch vt
Thu 21 Mar 2013 04:10:58 PM EDT Mar 21 16:10:58 <--     c-a_ has quit (Ex-Chat)
Thu 21 Mar 2013 04:11:13 PM EDT Mar 21 16:11:13 <krh>   the process running the the vt you switch to is responsible for updating the output
Thu 21 Mar 2013 04:11:36 PM EDT Mar 21 16:11:36 <krh>   kms wont change at all when you switch vt
Thu 21 Mar 2013 04:11:58 PM EDT Mar 21 16:11:58 <halfline>      okay if we can avoid the flicker, that's fine
Thu 21 Mar 2013 04:12:05 PM EDT Mar 21 16:12:05 <krh>   the flicker you see when you swtich in and out of an X server is X exposing all windows on vt enter
Thu 21 Mar 2013 04:12:10 PM EDT Mar 21 16:12:10 <krh>   to make sure it all gets repainted
Thu 21 Mar 2013 04:12:42 PM EDT Mar 21 16:12:42 <halfline>      we will need to make sure that the old vt and the new vt are showing the same frame during the transition
Thu 21 Mar 2013 04:13:12 PM EDT Mar 21 16:13:12 <halfline>      fwiw, GDM used to have a mode called "factory" mode
Thu 21 Mar 2013 04:13:16 PM EDT Mar 21 16:13:16 <krh>   the new vt will show the same fb until it pageflips away
Thu 21 Mar 2013 04:13:19 PM EDT Mar 21 16:13:19 <halfline>      where it would keep the login screen always running on one VT
Thu 21 Mar 2013 04:13:26 PM EDT Mar 21 16:13:26 <halfline>      and would farm out all user sessions to separate VTs
Thu 21 Mar 2013 04:13:29 PM EDT Mar 21 16:13:29 <--     tacg has quit (Ping timeout: 600 seconds)
Thu 21 Mar 2013 04:13:48 PM EDT Mar 21 16:13:48 <krh>   yeah, we'll be a lot closer to that mode of operation
Thu 21 Mar 2013 04:14:39 PM EDT Mar 21 16:14:39 <mccann>        hmm anyone know what this is? http://paste.fedoraproject.org/5757/36389657/
Thu 21 Mar 2013 04:14:40 PM EDT Mar 21 16:14:40 ---     stefw is now known as stefw_afk
Thu 21 Mar 2013 04:14:42 PM EDT Mar 21 16:14:42 <krh>   anyway, it seems like there's an idea here
Thu 21 Mar 2013 04:15:09 PM EDT Mar 21 16:15:09 <krh>   we pull the bits of weston-launch in to the gdm worker
Thu 21 Mar 2013 04:15:19 PM EDT Mar 21 16:15:19 <halfline>      well maybe some of the bits should be in logind
Thu 21 Mar 2013 04:15:30 PM EDT Mar 21 16:15:30 <krh>   I don't know how the worker will know whether to launch a wayland session or an X sessiosn
Thu 21 Mar 2013 04:15:32 PM EDT Mar 21 16:15:32 <halfline>      i think logind is what handles facls on /dev/dri/card0 atm
Thu 21 Mar 2013 04:16:28 PM EDT Mar 21 16:16:28 <krh>   we can even use weston for prototyping the gdm-worker part
Thu 21 Mar 2013 04:16:52 PM EDT Mar 21 16:16:52 <halfline>      krh: well, the bulk of the work for launching the wayland session happens from just starting the compositor right?
Thu 21 Mar 2013 04:17:08 PM EDT Mar 21 16:17:08 <krh>   halfline: yea
Thu 21 Mar 2013 04:17:09 PM EDT Mar 21 16:17:09 <halfline>      i mean at the end of the day (modulo a few small details) the worker is just going to be launching a process
Thu 21 Mar 2013 04:17:23 PM EDT Mar 21 16:17:23 <krh>   starting weston is the weston "session"
Thu 21 Mar 2013 04:17:37 PM EDT Mar 21 16:17:37 <krh>   weston forks all the helpers for the panel and such
Thu 21 Mar 2013 04:18:12 PM EDT Mar 21 16:18:12 <halfline>      right, so whether that process is something runs on the login screen's X server or that process starts doing wayland stuff on another vt, that's not something the worker has to be too concerned with
Thu 21 Mar 2013 04:18:36 PM EDT Mar 21 16:18:36 <krh>   halfline: oh it is
Thu 21 Mar 2013 04:18:49 PM EDT Mar 21 16:18:49 <krh>   weston-launch is also a setuid helper for weston
Thu 21 Mar 2013 04:19:03 PM EDT Mar 21 16:19:03 <krh>   it stays around and opens input devices when they're hotplugged 
Thu 21 Mar 2013 04:19:19 PM EDT Mar 21 16:19:19 <krh>   and it doesn drmSet/DropMaster (which requires root) when switching vt
Thu 21 Mar 2013 04:19:45 PM EDT Mar 21 16:19:45 <rib>   I'm not quite sure we want to pull bits of weston launch into the gdm worker do we; even though we want to put vt handling into the wayland launcher its effectively equivalent to starting a new xserver that would handle its own vt switching so gdm doesn't need to deal with it
Thu 21 Mar 2013 04:19:52 PM EDT Mar 21 16:19:52 <halfline>      so some of that seems like it should be in logind
Thu 21 Mar 2013 04:20:19 PM EDT Mar 21 16:20:19 <halfline>      well you definitely want the PAM bits in one place
Thu 21 Mar 2013 04:20:20 PM EDT Mar 21 16:20:20 <halfline>      in gdm
Thu 21 Mar 2013 04:20:46 PM EDT Mar 21 16:20:46 <rib>   yeah we can scrap the pam bits in the wayland launcher I think
Thu 21 Mar 2013 04:21:25 PM EDT Mar 21 16:21:25 <krh>   I'd like to keep them there, but have a mode where it's bypassed
Thu 21 Mar 2013 04:21:28 PM EDT Mar 21 16:21:28 <krh>   for use with gdm
Thu 21 Mar 2013 04:21:44 PM EDT Mar 21 16:21:44 <drago01>       does that mean we can launch it in a window inside X like weston?
Thu 21 Mar 2013 04:22:01 PM EDT Mar 21 16:22:01 <krh>   so in that case weston-launch will just do vt switching, input hotplug and the drm master stuff
Thu 21 Mar 2013 04:22:28 PM EDT Mar 21 16:22:28 <krh>   drago01: that should be possible
Thu 21 Mar 2013 04:22:44 PM EDT Mar 21 16:22:44 <drago01>       krh: nice, makes for a good Xephr replacement
Thu 21 Mar 2013 04:22:48 PM EDT Mar 21 16:22:48 <rib>   yup, the main thing I still wonder about is how to enable users to choose to run a wayland session vs a xsession
Thu 21 Mar 2013 04:22:51 PM EDT Mar 21 16:22:51 -->     jrb (~jrb@static-71-174-236-21.bstnma.fios.verizon.net) has joined #gnome-os
Thu 21 Mar 2013 04:22:59 PM EDT Mar 21 16:22:59 -->     c-a (~c-a@195.176.94.251) has joined #gnome-os
Thu 21 Mar 2013 04:23:00 PM EDT Mar 21 16:23:00 <--     KaL has quit (Bye)
Thu 21 Mar 2013 04:23:33 PM EDT Mar 21 16:23:33 <halfline>      rib: right not gdm has a session list in it's UI that's populated by files in /usr/share/xsessions
Thu 21 Mar 2013 04:23:43 PM EDT Mar 21 16:23:43 <halfline>      they're little key files that say what to run
Thu 21 Mar 2013 04:23:48 PM EDT Mar 21 16:23:48 <krh>   drago01: most of the work there should be take care of by clutters different backends, but there may be some fudging require to get input working right
Thu 21 Mar 2013 04:23:57 PM EDT Mar 21 16:23:57 <halfline>      Presumably there would be a weston.desktop for weston
Thu 21 Mar 2013 04:24:06 PM EDT Mar 21 16:24:06 <--     API_afk has quit (Remote closed the connection)
Thu 21 Mar 2013 04:25:05 PM EDT Mar 21 16:25:05 <krh>   ok, that sounds good
Thu 21 Mar 2013 04:25:06 PM EDT Mar 21 16:25:06 <rib>   halfline: so gdm doesn't assume that it needs to run an xserver + some user session thing, the session even controls running the xserver too?
Thu 21 Mar 2013 04:25:36 PM EDT Mar 21 16:25:36 <halfline>      rib: no, like i said earlier the way it works today is the session uses the already running xserver
Thu 21 Mar 2013 04:25:49 PM EDT Mar 21 16:25:49 <halfline>      the one the login screen was using
Thu 21 Mar 2013 04:26:08 PM EDT Mar 21 16:26:08 <halfline>      so in the X case, the server is already there and we just run the program
Thu 21 Mar 2013 04:26:19 PM EDT Mar 21 16:26:19 <halfline>      in the wayland case, the program will make sure the display server is started
Thu 21 Mar 2013 04:26:42 PM EDT Mar 21 16:26:42 -->     mccann_ (~mccann@c-76-118-180-63.hsd1.ma.comcast.net) has joined #gnome-os
Thu 21 Mar 2013 04:26:43 PM EDT Mar 21 16:26:43 ---     Services gives channel operator status to mccann_
Thu 21 Mar 2013 04:26:49 PM EDT Mar 21 16:26:49 <halfline>      but either way, the worker isn't starting the display server
Thu 21 Mar 2013 04:27:14 PM EDT Mar 21 16:27:14 <halfline>      it's either already running, or will get created on-demand by the session getting executed
Thu 21 Mar 2013 04:27:32 PM EDT Mar 21 16:27:32 <--     fmuellner has quit (Geronimo!)
Thu 21 Mar 2013 04:27:37 PM EDT Mar 21 16:27:37 <halfline>      now there's some question on what to do on the X server that's left behind in the weston case
Thu 21 Mar 2013 04:27:49 PM EDT Mar 21 16:27:49 <krh>   right
Thu 21 Mar 2013 04:28:01 PM EDT Mar 21 16:28:01 <krh>   we're leaking an xserver
Thu 21 Mar 2013 04:28:08 PM EDT Mar 21 16:28:08 <rib>   yup :-)
Thu 21 Mar 2013 04:28:13 PM EDT Mar 21 16:28:13 <halfline>      we just need to tell the shell to reset
Thu 21 Mar 2013 04:28:18 PM EDT Mar 21 16:28:18 <halfline>      and show the user list again
Thu 21 Mar 2013 04:28:33 PM EDT Mar 21 16:28:33 <halfline>      we already have code do this for fast user switching purposes
Thu 21 Mar 2013 04:28:55 PM EDT Mar 21 16:28:55 <halfline>      if the user chvt's back to the vt, the login screen will be sitting there ready to go
Thu 21 Mar 2013 04:29:55 PM EDT Mar 21 16:29:55 <halfline>      for fast user switching the slave handles this
Thu 21 Mar 2013 04:30:35 PM EDT Mar 21 16:30:35 <halfline>      it checks if there's a session already running on a different vt for that user
Thu 21 Mar 2013 04:30:44 PM EDT Mar 21 16:30:44 <halfline>      if so it jumps to that vt and resets the login screen vt
Thu 21 Mar 2013 04:31:07 PM EDT Mar 21 16:31:07 <halfline>      so we'd need to augment that check for "already running on another vt" to "about to be running on another vt" I guess
Thu 21 Mar 2013 04:31:10 PM EDT Mar 21 16:31:10 <krh>   what would trigger the reset in this case?
Thu 21 Mar 2013 04:31:13 PM EDT Mar 21 16:31:13 <rib>   it might also be nice to support the non-factory like model too though, where we don't keep the login screen running once we've logged in
Thu 21 Mar 2013 04:31:25 PM EDT Mar 21 16:31:25 <halfline>      krh: it asks logind if there's already a session registered
Thu 21 Mar 2013 04:31:52 PM EDT Mar 21 16:31:52 <halfline>      krh: so i guess that's the trick to make this just work. ensure that pam_systemd registers the weston session during pam_open_session
Thu 21 Mar 2013 04:31:57 PM EDT Mar 21 16:31:57 <krh>   halfline: yeah, but for the case where it's a new login?
Thu 21 Mar 2013 04:32:18 PM EDT Mar 21 16:32:18 <halfline>      krh: if it's new login, today we don't reset
Thu 21 Mar 2013 04:32:24 PM EDT Mar 21 16:32:24 <halfline>      we kill the the login screen
Thu 21 Mar 2013 04:32:29 PM EDT Mar 21 16:32:29 <krh>   exactly
Thu 21 Mar 2013 04:32:33 PM EDT Mar 21 16:32:33 <halfline>      and steal its X server
Thu 21 Mar 2013 04:32:45 PM EDT Mar 21 16:32:45 <krh>   oh, so the kill should be a test instead
Thu 21 Mar 2013 04:33:12 PM EDT Mar 21 16:33:12 <--     elima has quit (Read error: 148 (No route to host))
Thu 21 Mar 2013 04:33:33 PM EDT Mar 21 16:33:33 <halfline>      a test for what?
Thu 21 Mar 2013 04:33:53 PM EDT Mar 21 16:33:53 <krh>   instead of killing the login screen there we see if the session is running on a different vt - if it is, reset, else kill
Thu 21 Mar 2013 04:34:43 PM EDT Mar 21 16:34:43 <halfline>      yea that logic already exists
Thu 21 Mar 2013 04:34:46 PM EDT Mar 21 16:34:46 <halfline>      for fast user switching
Thu 21 Mar 2013 04:34:50 PM EDT Mar 21 16:34:50 <krh>   ok
Thu 21 Mar 2013 04:35:01 PM EDT Mar 21 16:35:01 <halfline>      so we just have to make sure the session is registered properly by pam_systemd
Thu 21 Mar 2013 04:35:03 PM EDT Mar 21 16:35:03 <krh>   right ok
Thu 21 Mar 2013 04:35:05 PM EDT Mar 21 16:35:05 <krh>   yes
Thu 21 Mar 2013 04:35:08 PM EDT Mar 21 16:35:08 <krh>   I get it now
Thu 21 Mar 2013 04:35:22 PM EDT Mar 21 16:35:22 <halfline>      but if we want to support what rib is asking for
Thu 21 Mar 2013 04:35:25 PM EDT Mar 21 16:35:25 <halfline>      that's a little harder
Thu 21 Mar 2013 04:35:38 PM EDT Mar 21 16:35:38 <halfline>      if we want to kill instead of reset i mean
Thu 21 Mar 2013 04:35:51 PM EDT Mar 21 16:35:51 <--     mccann has quit (Ping timeout: 600 seconds)
Thu 21 Mar 2013 04:35:51 PM EDT Mar 21 16:35:51 <krh>   yea
Thu 21 Mar 2013 04:36:09 PM EDT Mar 21 16:36:09 <halfline>      because then we have to know to start things back up again when weston exits
Thu 21 Mar 2013 04:36:14 PM EDT Mar 21 16:36:14 <--     calvaris has quit (Ex-Chat)
Thu 21 Mar 2013 04:36:21 PM EDT Mar 21 16:36:21 <halfline>      and of course that will be flickery
Thu 21 Mar 2013 04:36:39 PM EDT Mar 21 16:36:39 <halfline>      but logout today is flickery anyway, so no regression
Thu 21 Mar 2013 04:36:53 PM EDT Mar 21 16:36:53 <halfline>      but reusing the fast user switching login will get rid of a lot of the flicker
Thu 21 Mar 2013 04:37:06 PM EDT Mar 21 16:37:06 <krh>   but the transition from login gnome-shell to session is hard if you want to kill the login screen
Thu 21 Mar 2013 04:37:10 PM EDT Mar 21 16:37:10 <halfline>      just a quick full screen expose of the login screen, so a small flikcer
Thu 21 Mar 2013 04:37:22 PM EDT Mar 21 16:37:22 <halfline>      yea it really is
Thu 21 Mar 2013 04:37:28 PM EDT Mar 21 16:37:28 <halfline>      since X wants to be in the forground when it dies
Thu 21 Mar 2013 04:37:36 PM EDT Mar 21 16:37:36 <halfline>      and it will switch vts to the vt it was started from
Thu 21 Mar 2013 04:37:38 PM EDT Mar 21 16:37:38 <krh>   though, I guess you could just start up the session and once its vt is active, just kill the greeter
Thu 21 Mar 2013 04:38:05 PM EDT Mar 21 16:38:05 <halfline>      so i'd say for a first cut
Thu 21 Mar 2013 04:38:06 PM EDT Mar 21 16:38:06 <krh>   well, greeter on wayland will fix that then :)
Thu 21 Mar 2013 04:38:15 PM EDT Mar 21 16:38:15 <halfline>      we should avoid killing the login screen
Thu 21 Mar 2013 04:38:21 PM EDT Mar 21 16:38:21 <krh>   yes
Thu 21 Mar 2013 04:38:21 PM EDT Mar 21 16:38:21 <halfline>      we'll keep it waiting patiently in the background
Thu 21 Mar 2013 04:38:26 PM EDT Mar 21 16:38:26 <halfline>      and reuse all the logic we already have
Thu 21 Mar 2013 04:38:45 PM EDT Mar 21 16:38:45 <halfline>      now the pam_systemd<=>logind communication is going to need to be augmented
Thu 21 Mar 2013 04:38:47 PM EDT Mar 21 16:38:47 <krh>   right
Thu 21 Mar 2013 04:38:52 PM EDT Mar 21 16:38:52 <halfline>      it currently only supports x11 and tty sessions
Thu 21 Mar 2013 04:39:06 PM EDT Mar 21 16:39:06 <halfline>      it will need new method calls for handling wayland sessions
Thu 21 Mar 2013 04:39:36 PM EDT Mar 21 16:39:36 <krh>   yea, lennart didn't have a problem with that last I talked to him
Thu 21 Mar 2013 04:39:46 PM EDT Mar 21 16:39:46 <halfline>      so if you do e.g. loginctl show-session N inside the wayland session
Thu 21 Mar 2013 04:39:58 PM EDT Mar 21 16:39:58 <halfline>      it will have Type=wayland or Type=weston
Thu 21 Mar 2013 04:40:07 PM EDT Mar 21 16:40:07 <halfline>      or something
Thu 21 Mar 2013 04:40:25 PM EDT Mar 21 16:40:25 <krh>   wayland I'd say
Thu 21 Mar 2013 04:40:26 PM EDT Mar 21 16:40:26 <krh>   but yea
Thu 21 Mar 2013 04:40:29 PM EDT Mar 21 16:40:29 <halfline>      sure
Thu 21 Mar 2013 04:40:49 PM EDT Mar 21 16:40:49 <halfline>      then logind can be modified to do some of the weston-launch acl management
Thu 21 Mar 2013 04:41:04 PM EDT Mar 21 16:41:04 <halfline>      when a session gets registered that's type wayland, it can do special stuff
Thu 21 Mar 2013 04:41:28 PM EDT Mar 21 16:41:28 <halfline>      or for now, we could just leave those bits in weston-launch
Thu 21 Mar 2013 04:41:44 PM EDT Mar 21 16:41:44 -->     tacg (~tiago@bl16-106-68.dsl.telepac.pt) has joined #gnome-os
Thu 21 Mar 2013 04:42:11 PM EDT Mar 21 16:42:11 <halfline>      but logind already applies acls so it seems like a more suitable "home"
Thu 21 Mar 2013 04:42:22 PM EDT Mar 21 16:42:22 <halfline>      not sure about dropMaster on vt out
Thu 21 Mar 2013 04:43:44 PM EDT Mar 21 16:43:44 rib rishi Robot101 robtaylor rtcm russo79 
Thu 21 Mar 2013 04:43:49 PM EDT Mar 21 16:43:49 <halfline>      rib: you still there?
Thu 21 Mar 2013 04:43:51 PM EDT Mar 21 16:43:51 <krh>   halfline: it's not just about changing evdev device permissions
Thu 21 Mar 2013 04:44:04 PM EDT Mar 21 16:44:04 <krh>   weston-launch opens them and passes the fd to weston
Thu 21 Mar 2013 04:44:05 PM EDT Mar 21 16:44:05 <halfline>      it's passing the device fd's along ?
Thu 21 Mar 2013 04:44:08 PM EDT Mar 21 16:44:08 <halfline>      okay
Thu 21 Mar 2013 04:44:57 PM EDT Mar 21 16:44:57 <rib>   halfline: yeah, still here, I was just reading a bit of the scroll back to get what you were saying a bit clearer in my head
Thu 21 Mar 2013 04:45:27 PM EDT Mar 21 16:45:27 <rib>   (sorry I've only just started scratching the surface of this stuff, so not entirely familiar with all the details yet)
Thu 21 Mar 2013 04:45:56 PM EDT Mar 21 16:45:56 <halfline>      no worries, it's all pretty complicated and we probably won't get the details right exactly the first time around anyway
Thu 21 Mar 2013 04:46:12 PM EDT Mar 21 16:46:12 <krh>   halfline: and the set/drop drm master isn't something you do once for all
Thu 21 Mar 2013 04:46:24 PM EDT Mar 21 16:46:24 <krh>   it has to happen whenever you switch in and out of the vt
Thu 21 Mar 2013 04:46:38 PM EDT Mar 21 16:46:38 <halfline>      right, i said "not sure about dropMaster on vt out" above
Thu 21 Mar 2013 04:46:45 PM EDT Mar 21 16:46:45 <krh>   oh ok
Thu 21 Mar 2013 04:47:00 PM EDT Mar 21 16:47:00 <halfline>      so it does feel like weston-launch is going to have a place going forward
Thu 21 Mar 2013 04:47:32 PM EDT Mar 21 16:47:32 <krh>   yeah
Thu 21 Mar 2013 04:47:41 PM EDT Mar 21 16:47:41 <halfline>      though longer term, we should get into a place where all this stuff is activated i think
Thu 21 Mar 2013 04:47:58 PM EDT Mar 21 16:47:58 <krh>   well until we can build a better redirection mechanism for input and kms in the kernel, anyway
Thu 21 Mar 2013 04:48:19 PM EDT Mar 21 16:48:19 <krh>   activated is a buzzword :-P
Thu 21 Mar 2013 04:48:45 PM EDT Mar 21 16:48:45 <halfline>      well i don't care for the buzz. i'm just saying if you run something needs X, a rootless X server should get started
Thu 21 Mar 2013 04:49:10 PM EDT Mar 21 16:49:10 <halfline>      if you run something that needs a particular wayland server then that wayland server should get started
Thu 21 Mar 2013 04:49:28 PM EDT Mar 21 16:49:28 <halfline>      ultimately i think we should do it inside out from how we do it now
Thu 21 Mar 2013 04:49:53 PM EDT Mar 21 16:49:53 <halfline>      but one step at a time, i guess
Thu 21 Mar 2013 04:50:26 PM EDT Mar 21 16:50:26 <halfline>      the way we've mapped forward here, should require very little changes to GDM, so it's a good step toward wayland domination
Thu 21 Mar 2013 04:52:58 PM EDT Mar 21 16:52:58 <krh>   halfline: the problem with activation for wayland is that the thing that's going to need the display server *is* the display server
Thu 21 Mar 2013 04:53:13 PM EDT Mar 21 16:53:13 <krh>   you want to run gnome-shell, that's your end-point
Thu 21 Mar 2013 04:53:25 PM EDT Mar 21 16:53:25 ---     ebassi|afk is now known as ebassi
Thu 21 Mar 2013 04:53:32 PM EDT Mar 21 16:53:32 <krh>   and under X, the X server is a dependency of gnome-shell and should perhaps be socket activated
Thu 21 Mar 2013 04:54:05 PM EDT Mar 21 16:54:05 <krh>   but when gnome-shell *is* the display server, it no longer makes sense to socket activate the wayland server
Thu 21 Mar 2013 04:55:28 PM EDT Mar 21 16:55:28 <halfline>      if i run "gedit" in a tty it should start up gnome-shell and run gedit on it
Thu 21 Mar 2013 04:55:40 PM EDT Mar 21 16:55:40 <halfline>      or if gnome-shell is already running, jump to gnome-shell and run gedit on it
Thu 21 Mar 2013 04:55:48 PM EDT Mar 21 16:55:48 <halfline>      less contrived:
Thu 21 Mar 2013 04:55:57 PM EDT Mar 21 16:55:57 <halfline>      if i'm gdm and i run gnome-session
Thu 21 Mar 2013 04:56:05 PM EDT Mar 21 16:56:05 <--     tacg has quit (Read error: 104 (Connection reset by peer))
Thu 21 Mar 2013 04:56:17 PM EDT Mar 21 16:56:17 <halfline>      and gnome-session talks wayland, gnome-shell should start
Thu 21 Mar 2013 04:56:27 PM EDT Mar 21 16:56:27 <nacho> hadess, why do you need gnome-shell for gedit?
Thu 21 Mar 2013 04:56:30 PM EDT Mar 21 16:56:30 <rib>   I think I need to go and get my head around the pam_systemd bits some more. I'm not quite sure a.t.m how gdm is going to know from the things listed in /usr/share/xsessions what things can just take over the slave xserver vs ones that are going to take over a new vt
Thu 21 Mar 2013 04:56:35 PM EDT Mar 21 16:56:35 <krh>   why is gnome-session different from gnome-shell?
Thu 21 Mar 2013 04:56:49 PM EDT Mar 21 16:56:49 <--     c-a has quit (Ping timeout: 600 seconds)
Thu 21 Mar 2013 04:57:09 PM EDT Mar 21 16:57:09 <halfline>      rib: oh gdm won't know form /usr/share/xsessions, gdm will know from asking logind
Thu 21 Mar 2013 04:57:28 PM EDT Mar 21 16:57:28 -->     tacg (~tiago@bl16-106-68.dsl.telepac.pt) has joined #gnome-os
Thu 21 Mar 2013 04:57:36 PM EDT Mar 21 16:57:36 <halfline>      rib: inside gdm right now there's a function called gdm_slave_switch_to_user_session
Thu 21 Mar 2013 04:57:54 PM EDT Mar 21 16:57:54 <halfline>      rib: it just asks logind if there are any sessions running for the current user
Thu 21 Mar 2013 04:57:59 PM EDT Mar 21 16:57:59 <halfline>      and if so, it jumps to it
Thu 21 Mar 2013 04:58:35 PM EDT Mar 21 16:58:35 <halfline>      if not, it returns false, and the caller starts one
Thu 21 Mar 2013 04:59:55 PM EDT Mar 21 16:59:55 <halfline>      krh: are you saying you think gnome-shell should take over the role of starting settings-daemon and the various bits of the session ?
Thu 21 Mar 2013 05:00:23 PM EDT Mar 21 17:00:23 <krh>   halfline: maybe
Thu 21 Mar 2013 05:00:48 PM EDT Mar 21 17:00:48 <halfline>      well smcv and lennart and others actually want to get gnome-session out of the process starting business too
Thu 21 Mar 2013 05:00:56 PM EDT Mar 21 17:00:56 <halfline>      but they want to get systemd in --session mode to take over the job
Thu 21 Mar 2013 05:01:11 PM EDT Mar 21 17:01:11 <krh>   what I definitely think is that the shell isn't some on-demand started service, it's the main thing you're trying to bring up
Thu 21 Mar 2013 05:01:11 PM EDT Mar 21 17:01:11 <halfline>      rib: do you know what pam_systemd does?
Thu 21 Mar 2013 05:01:12 PM EDT Mar 21 17:01:12 rib rishi Robot101 robtaylor rtcm russo79 
Thu 21 Mar 2013 05:01:23 PM EDT Mar 21 17:01:23 <halfline>      rib: if you don't i'll explain it to you and that might make things clearer
Thu 21 Mar 2013 05:01:37 PM EDT Mar 21 17:01:37 <owen>  krh: for the sanity of developers, I think we're going to try hard to keep restartiblity
Thu 21 Mar 2013 05:01:37 PM EDT Mar 21 17:01:37 <halfline>      krh: well that's true
Thu 21 Mar 2013 05:02:18 PM EDT Mar 21 17:02:18 <krh>   owen: but isn't that the self-re-exec idea we talked about?
Thu 21 Mar 2013 05:02:19 PM EDT Mar 21 17:02:19 <rib>   halfline, I get the impression a.t.m that the worker is creating the session when a user gives their credentials via the slave, and at that point there is no reference what kind of session the user wants (wayland vs x)
Thu 21 Mar 2013 05:02:43 PM EDT Mar 21 17:02:43 <owen>  krh: probably. But it probably isn't that compatible with gnome-shell being the master babysitter of the session
Thu 21 Mar 2013 05:03:09 PM EDT Mar 21 17:03:09 <halfline>      well systemd is the master babysitter of system services and it can reexec itself
Thu 21 Mar 2013 05:03:28 PM EDT Mar 21 17:03:28 -->     c-a (~c-a@195.176.94.251) has joined #gnome-os
Thu 21 Mar 2013 05:04:12 PM EDT Mar 21 17:04:12 <krh>   owen: yeah, that's probably true...
Thu 21 Mar 2013 05:04:15 PM EDT Mar 21 17:04:15 <halfline>      rib: so that's where the xsession file comes in.  we could put in the file metadata about the natureo f the session
Thu 21 Mar 2013 05:04:26 PM EDT Mar 21 17:04:26 <halfline>      and pass that data along to PAM
Thu 21 Mar 2013 05:04:41 PM EDT Mar 21 17:04:41 <halfline>      right now PAM is notified about X sessions via two pam items
Thu 21 Mar 2013 05:04:42 PM EDT Mar 21 17:04:42 <rib>   okey, that's joining some dots for me, yup
Thu 21 Mar 2013 05:04:54 PM EDT Mar 21 17:04:54 <halfline>      PAM_XAUTH_DATA an PAM_XDISPLAY
Thu 21 Mar 2013 05:05:15 PM EDT Mar 21 17:05:15 <halfline>      pam_systemd looks at these items when talking to logind
Thu 21 Mar 2013 05:05:27 PM EDT Mar 21 17:05:27 <halfline>      to figure out what arguments to pass to session registration
Thu 21 Mar 2013 05:05:57 PM EDT Mar 21 17:05:57 <halfline>      we could add PAM_WAYLAND_SOCKET or whatever
Thu 21 Mar 2013 05:06:10 PM EDT Mar 21 17:06:10 <halfline>      or we could even just use environment variables as a first cut
Thu 21 Mar 2013 05:06:11 PM EDT Mar 21 17:06:11 <krh>   owen: so there would have to be a way for the session baby sitter (gnome-session or systemd) to poke the compositor to do this self-exec
Thu 21 Mar 2013 05:06:34 PM EDT Mar 21 17:06:34 ---     mccann_ is now known as mccann
Thu 21 Mar 2013 05:06:47 PM EDT Mar 21 17:06:47 <halfline>      rib: the point is pam_systemd handles session registration with logind, and we just need to make sure we get the right registration calls made based on the session type
Thu 21 Mar 2013 05:07:23 PM EDT Mar 21 17:07:23 <halfline>      each desktop file in /usr/share/xsessions maps to one session item in the list of sessions in the gnome shell login screen
Thu 21 Mar 2013 05:09:27 PM EDT Mar 21 17:09:27 <halfline>      rib: one thing is, we probably don't want weston-launch to switch vts on its own
Thu 21 Mar 2013 05:09:29 PM EDT Mar 21 17:09:29 <halfline>      if possible
Thu 21 Mar 2013 05:09:41 PM EDT Mar 21 17:09:41 <krh>   who should do it then?
Thu 21 Mar 2013 05:09:48 PM EDT Mar 21 17:09:48 <halfline>      GDM already has code to do it
Thu 21 Mar 2013 05:10:07 PM EDT Mar 21 17:10:07 <halfline>      GDM looks at the currently availables sessions for the user that just typed in their password
Thu 21 Mar 2013 05:10:18 PM EDT Mar 21 17:10:18 <halfline>      and it switches vt to it
Thu 21 Mar 2013 05:10:42 PM EDT Mar 21 17:10:42 <halfline>      code is basically:
Thu 21 Mar 2013 05:10:52 PM EDT Mar 21 17:10:52 <halfline>      session_id = get_session_id_for_user (username)
Thu 21 Mar 2013 05:11:06 PM EDT Mar 21 17:11:06 <halfline>      session_already_switched = session_is_active (session_id)
Thu 21 Mar 2013 05:11:16 PM EDT Mar 21 17:11:16 <halfline>      if (session_already_switched) return;
Thu 21 Mar 2013 05:11:35 PM EDT Mar 21 17:11:35 <halfline>      if (!session_already_switched) switch_to_session (session_id)
Thu 21 Mar 2013 05:11:42 PM EDT Mar 21 17:11:42 <halfline>      session_unlock (session_id)
Thu 21 Mar 2013 05:12:01 PM EDT Mar 21 17:12:01 <halfline>      so as soon as pam_open_session() finishes
Thu 21 Mar 2013 05:12:10 PM EDT Mar 21 17:12:10 <halfline>      there will be a session available
Thu 21 Mar 2013 05:12:18 PM EDT Mar 21 17:12:18 <halfline>      that session will get returned from get_session_is_for_user
Thu 21 Mar 2013 05:12:35 PM EDT Mar 21 17:12:35 <halfline>      and since we haven't already switched it will switch to it
Thu 21 Mar 2013 05:13:03 PM EDT Mar 21 17:13:03 <halfline>      my pseudocode above was a little off. the "return;" should have been "return FALSE;"
Thu 21 Mar 2013 05:13:53 PM EDT Mar 21 17:13:53 <halfline>      hmm, i guess it's not quite right as is
Thu 21 Mar 2013 05:14:11 PM EDT Mar 21 17:14:11 <halfline>      because we're going to need to still run weston-launch after doing the switch
Thu 21 Mar 2013 05:15:05 PM EDT Mar 21 17:15:05 <krh>   either way, weston-launch can already be told to run on a given tty
Thu 21 Mar 2013 05:16:05 PM EDT Mar 21 17:16:05 <halfline>      okay, that might be important.
Thu 21 Mar 2013 05:16:17 PM EDT Mar 21 17:16:17 <halfline>      one of the parameters passed to logind at pam_open_session time is the vt
Thu 21 Mar 2013 05:16:35 PM EDT Mar 21 17:16:35 <halfline>      it's part of the information associated with the session
Thu 21 Mar 2013 05:16:49 PM EDT Mar 21 17:16:49 <halfline>      and we query that information from logind before doing the vt switch
Thu 21 Mar 2013 05:18:45 PM EDT Mar 21 17:18:45 <halfline>      but basically right now we have code like... if (switch_to_user_session_for ("halfline")) reset_greeter (); else tear_down_greeter_and_start_new_session_in_its_place();
Thu 21 Mar 2013 05:18:58 PM EDT Mar 21 17:18:58 <halfline>      that code will need to be changed to:
Thu 21 Mar 2013 05:19:30 PM EDT Mar 21 17:19:30 <halfline>      if (switch_to_user_session_for ("halfline")) {
Thu 21 Mar 2013 05:20:10 PM EDT Mar 21 17:20:10 <halfline>      reset_greeter (); if (session_type == "wayland") start_session();
Thu 21 Mar 2013 05:20:14 PM EDT Mar 21 17:20:14 <halfline>      } else {
Thu 21 Mar 2013 05:20:21 PM EDT Mar 21 17:20:21 <halfline>      tear_down_greeter_and_start_new_session_in_its_place();
Thu 21 Mar 2013 05:20:23 PM EDT Mar 21 17:20:23 <halfline>      }
Thu 21 Mar 2013 05:20:44 PM EDT Mar 21 17:20:44 <halfline>      or something along those lines
Thu 21 Mar 2013 05:20:45 PM EDT Mar 21 17:20:45 <--     hashem has quit (Ping timeout: 600 seconds)
Thu 21 Mar 2013 05:20:56 PM EDT Mar 21 17:20:56 <rib>   sure
Thu 21 Mar 2013 05:23:16 PM EDT Mar 21 17:23:16 <rib>   halfline: well thanks a lot for your patience and explanations, I think I'm fairly happy knowing how to move forward now, though I expect I'll be pestering you for more input later as I get into some specific details :-)
Thu 21 Mar 2013 05:23:48 PM EDT Mar 21 17:23:48 <halfline>      sure
Thu 21 Mar 2013 05:24:16 PM EDT Mar 21 17:24:16 <halfline>      first thing i'd tackle if i were you is the logind api changes
Thu 21 Mar 2013 05:24:23 PM EDT Mar 21 17:24:23 <halfline>      and the pam_systemd adjustments
Thu 21 Mar 2013 05:24:54 PM EDT Mar 21 17:24:54 <rib>   yeah, that's also the bit I'm least familiar with, but it sounds like a good starting point
Thu 21 Mar 2013 05:25:30 PM EDT Mar 21 17:25:30 <halfline>      read pam_sm_open_session in the pam_systemd source code to see how it registers with logind
Thu 21 Mar 2013 05:26:25 PM EDT Mar 21 17:26:25 <halfline>      their's currently a CreateSession dbus api
Thu 21 Mar 2013 05:26:51 PM EDT Mar 21 17:26:51 <halfline>      you'll need a new api that does the same thing as CreateSession but has different arguments
Thu 21 Mar 2013 05:27:26 PM EDT Mar 21 17:27:26 <halfline>      *there's
Thu 21 Mar 2013 05:27:53 PM EDT Mar 21 17:27:53 <--     jrb has quit (Leaving)
Thu 21 Mar 2013 05:28:09 PM EDT Mar 21 17:28:09 <rib>   yeah I recal looking at that api before and had guessed we'd need to augment that somehow
Thu 21 Mar 2013 05:29:53 PM EDT Mar 21 17:29:53 <krh>   another point that we were just discussing in #wayland is that weston-launch may need to change to actually read from the input devices and forward the evdev events to the compositor
Thu 21 Mar 2013 05:30:01 PM EDT Mar 21 17:30:01 <krh>   instead of passing the evdev fds 
Thu 21 Mar 2013 05:30:28 PM EDT Mar 21 17:30:28 <krh>   since once a process running as the user has an evdev fd, you can ptrace it and snoop the fd
Thu 21 Mar 2013 05:31:02 PM EDT Mar 21 17:31:02 <halfline>      but you could ptrace it and snoop the incoming evdev events too right ?
Thu 21 Mar 2013 05:31:28 PM EDT Mar 21 17:31:28 <krh>   you can't ptrace weston-launch, it runs as root
Thu 21 Mar 2013 05:31:44 PM EDT Mar 21 17:31:44 <halfline>      rigth we're both talking about ptracing the compositor
Thu 21 Mar 2013 05:31:54 PM EDT Mar 21 17:31:54 <--     nacho has quit (Remote closed the connection)
Thu 21 Mar 2013 05:32:02 PM EDT Mar 21 17:32:02 <rib>   krh: yikes, having to have all input events hop from launcher, to compositer to client doesn't sound great :-/
Thu 21 Mar 2013 05:32:13 PM EDT Mar 21 17:32:13 -->     hashem (~hashem@c-66-31-36-232.hsd1.ma.comcast.net) has joined #gnome-os
Thu 21 Mar 2013 05:32:15 PM EDT Mar 21 17:32:15 <krh>   right, weston-launch needs to stop forwarding events once your session is no longer active
Thu 21 Mar 2013 05:32:25 PM EDT Mar 21 17:32:25 <krh>   rib: npoe
Thu 21 Mar 2013 05:32:25 PM EDT Mar 21 17:32:25 <halfline>      ohhh
Thu 21 Mar 2013 05:32:26 PM EDT Mar 21 17:32:26 <krh>   nope
Thu 21 Mar 2013 05:32:34 PM EDT Mar 21 17:32:34 <halfline>      i see, you're talking about a poor man's revoke()
Thu 21 Mar 2013 05:32:38 PM EDT Mar 21 17:32:38 <krh>   yeah
Thu 21 Mar 2013 05:32:41 PM EDT Mar 21 17:32:41 <krh>   userspace revoke
Thu 21 Mar 2013 05:32:44 PM EDT Mar 21 17:32:44 <halfline>      but doesn't evdev already have that feature ?
Thu 21 Mar 2013 05:32:52 PM EDT Mar 21 17:32:52 <halfline>      calls it a GRAB i think ?
Thu 21 Mar 2013 05:32:57 PM EDT Mar 21 17:32:57 <krh>   no, it has the grab thing
Thu 21 Mar 2013 05:33:12 PM EDT Mar 21 17:33:12 <krh>   which we don't use because there's a few other daemons that need to open the evdev devices
Thu 21 Mar 2013 05:33:29 PM EDT Mar 21 17:33:29 <halfline>      hmm
Thu 21 Mar 2013 05:33:50 PM EDT Mar 21 17:33:50 <krh>   a better solution may be to either 1) have an evdev open mode where you say "only send events when this session is active"
Thu 21 Mar 2013 05:34:06 PM EDT Mar 21 17:34:06 <krh>   or 2) figure out how to not have to run those daemons and use grab
Thu 21 Mar 2013 05:34:25 PM EDT Mar 21 17:34:25 <halfline>      of course the kernel doesn't know the session really
Thu 21 Mar 2013 05:34:28 PM EDT Mar 21 17:34:28 <--     hashem has quit (Read error: 131 (Connection reset by peer))
Thu 21 Mar 2013 05:34:29 PM EDT Mar 21 17:34:29 <halfline>      it knows cgroups
Thu 21 Mar 2013 05:34:47 PM EDT Mar 21 17:34:47 <halfline>      and it knows audit session
Thu 21 Mar 2013 05:34:59 PM EDT Mar 21 17:34:59 <krh>   yea
Thu 21 Mar 2013 05:35:01 PM EDT Mar 21 17:35:01 <halfline>      but i don't think there's any notion of "active" cgroup
Thu 21 Mar 2013 05:35:10 PM EDT Mar 21 17:35:10 <krh>   I don't know how you'd realize it
Thu 21 Mar 2013 05:35:32 PM EDT Mar 21 17:35:32 <krh>   it could be something that weston-launch controls
Thu 21 Mar 2013 05:36:17 PM EDT Mar 21 17:36:17 <krh>   weston-launch could handle more of the vt switching I suppose
Thu 21 Mar 2013 05:36:17 PM EDT Mar 21 17:36:17 <halfline>      really the purview of the system compositor
Thu 21 Mar 2013 05:36:21 PM EDT Mar 21 17:36:21 <halfline>      which we aren't talking about yet
Thu 21 Mar 2013 05:36:25 PM EDT Mar 21 17:36:25 <krh>   of course...
Thu 21 Mar 2013 05:37:12 PM EDT Mar 21 17:37:12 <krh>   you could have an evdev "mute" ioctl, and weston-launch could issue that when switching away
Thu 21 Mar 2013 05:38:15 PM EDT Mar 21 17:38:15 <halfline>      yea that'd probably be fine
Thu 21 Mar 2013 05:38:39 PM EDT Mar 21 17:38:39 <krh>   weston-launch can handle the vt switching signals, notify weston/gnome-shell over the socket, get ack back and then mute evdev devices and ack vt switch
Thu 21 Mar 2013 05:38:50 PM EDT Mar 21 17:38:50 <halfline>      or you could fake a hot unplug
Thu 21 Mar 2013 05:39:13 PM EDT Mar 21 17:39:13 <krh>   you can even have a timeout mechanism so you never get stuck on the vt, even if the compositor hangs
Thu 21 Mar 2013 05:40:01 PM EDT Mar 21 17:40:01 <krh>   faking the hotplug could result it client visible changes
Thu 21 Mar 2013 05:40:06 PM EDT Mar 21 17:40:06 <krh>   s/itin
Thu 21 Mar 2013 05:42:39 PM EDT Mar 21 17:42:39 <halfline>      true
Thu 21 Mar 2013 05:42:49 PM EDT Mar 21 17:42:49 <halfline>      i gotta go now
Thu 21 Mar 2013 05:42:53 PM EDT Mar 21 17:42:53 <halfline>      ttyl!
Thu 21 Mar 2013 05:46:26 PM EDT Mar 21 17:46:26 -->     weld (~weld@p57A837AE.dip.t-dialin.net) has joined #gnome-os
Thu 21 Mar 2013 05:46:30 PM EDT Mar 21 17:46:30 <krh>   halfline: thanks!

Initiatives/Wayland/gdm (last edited 2013-11-22 20:55:31 by WilliamJonMcCann)