summaryrefslogtreecommitdiffstats
path: root/HACKING
diff options
context:
space:
mode:
Diffstat (limited to 'HACKING')
-rw-r--r--HACKING67
1 files changed, 67 insertions, 0 deletions
diff --git a/HACKING b/HACKING
new file mode 100644
index 0000000..ea78123
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,67 @@
+Initial Setup
+=============
+
+The first time a new system is booted is a special situation. There is
+no user account yet, and a few basic setup steps need to be performed
+before it can be considered fully usable. The initial-setup mode is an
+attempt to solve these problems.
+
+When in initial-setup mode, gdm does not bring up the regular greeter
+for the login screen, but instead starts the gnome-initial-setup
+application in a special session. gnome-initial-setup offers a series
+of steps to
+
+1. Select your language
+2. Select a keyboard layout
+3. Accept any End User Licence Agreements
+4. Connect to the network
+5. Create a new user account
+6. Set the right location/timezone
+7. Set up online accounts
+
+In terms of the user experience, we want the initial setup to seamlessly
+switch to the regular user session. In particular, we don't want to
+make the user enter his credentials again on the login screen.
+
+We can't run the gnome-initial-setup application with the correct user,
+since the user account does not exist yet at that time. Therefore, gdm
+creates a temporary gnome-initial-setup user, and runs gnome-initial-setup
+as that user. When gdm-inital-setup is done, it then initiates an
+autologin for the newly created user account to switch to the 'real'
+session. gdm removes the temporary gnome-initial-setup user before
+switching to the real session.
+
+Due to this arrangement, we need to copy all the settings that have been
+changed during the initial setup session from the gnome-initial-setup
+user to the real user.
+
+Mechanics
+=========
+
+To enable the initial-setup functionality in gdm, set
+
+InitialSetupEnable=True
+
+in the [daemon] section of /etc/gdm/custom.conf. GDM will trigger
+the initial-setup if there are no users configured yet and some other
+conditions also hold.
+
+The session that gdm starts for the initial-setup session is
+defined by the file /usr/share/gnome-session/sessions/gdm-setup.session.
+Like the regular greeter session, it uses the desktop files in
+/usr/share/gdm/greeter/applications/.
+
+Before starting the initial-setup session, gdm copies the file
+/usr/share/gdm/20-gnome-initial-setup.rules into the polkit
+configuration to provide suitable permissions for the gnome-initial-setup
+user. The rules file is removed again together with the
+gnome-initial-setup user account.
+
+gnome-initial-setup also has a session mode which activates gnome-initial-setup when a user first logs in. The gnome-initial-setup-first-login.desktop in the
+xdg autostart directory utilises gnome-session to check if the user has a
+gnome-initial-setup-done file in their XDG_CONFIG_DIR if they don't
+gnome-initial-setup will launch with pages that are suitable for a
+non-privileged user and on exiting will write the done file.
+
+TODO
+====