From 512016dcb533f4c7295622739eebeebba1f76211 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Mon, 1 Feb 2021 13:31:41 +0100 Subject: [PATCH] main: Show welcome dialogue on first start This hooks the recently added welcome dialogue to be shown the first time a new session is started, and disabled after that. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3632 Part-of: --- data/org.gnome.shell.gschema.xml.in | 10 ++++++++++ js/ui/main.js | 17 +++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in index 0ae047e18..55817e879 100644 --- a/data/org.gnome.shell.gschema.xml.in +++ b/data/org.gnome.shell.gschema.xml.in @@ -94,6 +94,16 @@ adapter is ever seen not to have devices associated to it. + + '' + The last version the “Welcome to GNOME” dialogue was shown for + + This key determines when the “Welcome to GNOME” dialog was last shown for. + An empty string represents the oldest possible version, and huge number will + represents versions that do not exist yet, and should be used to disable the + dialogue should that be needed. + + false Enable introspection API diff --git a/js/ui/main.js b/js/ui/main.js index f488279d0..94c43dcce 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -47,9 +47,15 @@ const KbdA11yDialog = imports.ui.kbdA11yDialog; const LocatePointer = imports.ui.locatePointer; const PointerA11yTimeout = imports.ui.pointerA11yTimeout; const ParentalControlsManager = imports.misc.parentalControlsManager; +const Config = imports.misc.config; +const Util = imports.misc.util; const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; const STICKY_KEYS_ENABLE = 'stickykeys-enable'; +const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version'; +// Make sure to mention the point release, otherwise it will show every time +// until this version is current +const WELCOME_DIALOG_LAST_TOUR_CHANGE = '40.beta'; const LOG_DOMAIN = 'GNOME Shell'; const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a'; @@ -297,6 +303,9 @@ function _initializeUI() { if (credentials.get_unix_user() === 0) { notify(_('Logged in as a privileged user'), _('Running a session as a privileged user should be avoided for security reasons. If possible, you should log in as a normal user.')); + } else if (sessionMode.currentMode !== 'gdm' && + sessionMode.currentMode !== 'initial-setup') { + _handleShowWelcomeScreen(); } if (sessionMode.currentMode !== 'gdm' && @@ -314,6 +323,14 @@ function _initializeUI() { }); } +function _handleShowWelcomeScreen() { + const lastShownVersion = global.settings.get_string(WELCOME_DIALOG_LAST_SHOWN_VERSION); + if (Util.GNOMEversionCompare(WELCOME_DIALOG_LAST_TOUR_CHANGE, lastShownVersion) > 0) { + openWelcomeDialog(); + global.settings.set_string(WELCOME_DIALOG_LAST_SHOWN_VERSION, Config.PACKAGE_VERSION); + } +} + async function _handleLockScreenWarning() { const path = '%s/lock-warning-shown'.format(global.userdatadir); const file = Gio.File.new_for_path(path);