We deploy Ubuntu desktops in our environment at scale and I want to kill the new welcome screen so it doesn't appear on all newly built machines at first log in.
Has anyone figured out how to do this yet?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityI found the solution to this myself so I'm posting it here for all those who might want to know.
The welcome screen is part of the gnome-initial-setup
package. The first time a user logs into a new machine the command /usr/lib/gnome-initial-setup/gnome-initial-setup --exisiting-user
runs.
for us simply removing the gnome-initial-setup
package during kickstart is a suitable fix as we don't require any of the gnome initial setup stuff anyway (we don't want to create local user accounts or set the system time etc).
if you do still want the pre-login welcome stuff then you'll need a different solution.
I am in the same boat as Dean and found this article + another ones.
Here Rui Matos recommends to append InitialSetupEnable=false
in /etc/gdm/custom.conf
(in Ubuntu /etc/gdm3/custom.conf
).
So edit /etc/gdm3/custom.conf
and add the following:
[daemon]
InitialSetupEnable=false
Hope this helps someone else to get rid of the Welcome Screen.
As a side note, you can cleanly create the necessary files to cancel the action.
On my end, I'm installing packages on an embedded system and for that I create one user. I want to avoid the "initial setup wizard" and all I have to do is create one file in the user's .config
directory:
touch /home/${NEW_USER}/.config/gnome-initial-setup-done
So I can place that command line in my package.postinst
file and that user will never see the initial setup wizard.
How does that work?
If you know the names (which other users mentioned) of the startup files and you look into them, the files include a condition:
AutostartCondition=unless-exists gnome-initial-setup-done
So if you create that file, it won't start. There are several types of conditions, the tour one is the opposite:
AutostartCondition=if-exists run-welcome-tour
So you need to create that file for the welcome tour to kick in and once done with the tour, the file gets deleted. Maybe they save the step you're on in that file. So in our script we could add the following to make sure the welcome tour doesn't start:
rm -f /home/${NEW_USER}/.config/run-welcome-tour
This solution is much cleaner than any others (except for uninstalling the offending packages if that's an option for you).
If you don't want to uninstall the package, you can edit the file
sudo vi /etc/xdg/autostart/gnome-initial-setup-first-login.desktop
by adding a "#" (without quotes) to the beginning of the execute line like this:
#Exec=/usr/lib/gnome-initial-setup/gnome-initial-setup --existing-user
sudo sed -ri 's/^(Exec=.*)$/#\1/' /etc/xdg/autostart/gnome-initial-setup-first-login.desktop
I also achieved this by adding the file /etc/skel/.config/gnome-initial-setup-done
sudo touch /etc/skel/.config/gnome-initial-setup-done
Following @sokunrotanak-srey's route, I'd rather use dpkg-divert
like so:
First, replace the Exec=...
line with Exec=/bin/true
in all the .desktop
files to to make them dummy
Second, use dpkg-divert to keep local changes even if the package has a newer version of the .desktop
files:
# dpkg-divert --local --add /etc/xdg/autostart/gnome-initial-setup-copy-worker.desktop
Adding 'local diversion of /etc/xdg/autostart/gnome-initial-setup-copy-worker.desktop to /etc/xdg/autostart/gnome-initial-setup-copy-worker.desktop.distrib'
# dpkg-divert --local --add /etc/xdg/autostart/gnome-initial-setup-first-login.desktop
Adding 'local diversion of /etc/xdg/autostart/gnome-initial-setup-first-login.desktop to /etc/xdg/autostart/gnome-initial-setup-first-login.desktop.distrib'
# dpkg-divert --local --add /etc/xdg/autostart/gnome-welcome-tour.desktop
Adding 'local diversion of /etc/xdg/autostart/gnome-welcome-tour.desktop to /etc/xdg/autostart/gnome-welcome-tour.desktop.distrib'