HACKING 2.75 KB
Newer Older
1 2
Initial Setup
=============
3 4 5 6 7 8 9

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
10 11 12
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
13

14
1. Select your language
15 16 17 18 19 20
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
21 22 23 24 25

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.

26
We can't run the gnome-initial-setup application with the correct user,
27
since the user account does not exist yet at that time. Therefore, gdm
28 29 30 31 32
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.
33 34

Due to this arrangement, we need to copy all the settings that have been
35
changed during the initial setup session from the gnome-initial-setup
36 37 38
user to the real user.

Mechanics
39
=========
40 41 42 43 44 45 46

To enable the initial-setup functionality in gdm, set

InitialSetupEnable=True

in the [daemon] section of /etc/gdm/custom.conf. To actually
trigger the initial-setup, gdm additionally looks for the file
47
/var/lib/gdm/run-initial-setup. gdm removes this file after
48
the initial setup has been performed.
49 50 51 52

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
53
/usr/share/gdm/greeter/applications/.
54 55

Before starting the initial-setup session, gdm copies the file
56 57 58 59
/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.
60

61 62 63 64 65 66
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.

67
TODO
68
====