Reimplement logout and inhibit dialogs as a separate process
We can't use Gtk in the session manager process, so make a
separate dialog to interact with it.
After the user chooses an action, the dialog stays long enough
to get list of any inhibitors, and displays them if needed. Once
the dialog is in this state, you can only continue/cancel (like
the existing inhibit dialog).
Only the session manager will launch the logout *dialog*. If
someone calls cinnamon-session-quit from somewhere, it will run
briefly and forward the command to the public session manager
interface. Then the manager will spawn the real dialog.
Cinnamon is still (unfortunately) a monolithic WM/panel/DE process.
In Xorg we want it to be started after the settings daemon, so that
xsettings/xrandr etc.. get to do their magic before we start dealing
with displays and Gtk widgets.
In Wayland, we can't have Gtk initialized before the compositor is up.
So in this case we need to start Cinnamon before the settings daemon.
The settings daemon are started during the Initialization phase.
In Xorg we'll continue to start Cinnamon in the WindowManager phase (
i.e. after).
In Wayland we're introducing a new phase to start Cinnamon, called the
DisplayServer phase, which happens before.
- Remove Gtk (Gtk requires setting up its GdkDisplay, which under
wayland can't exist until muffin is entirely up and the xdg-shell
is available).
- Don't set the DISPLAY variable
- Get rid of GDK_MODULES filtering, no longer needed in either
backend.
- Log into systemd journal