summaryrefslogtreecommitdiff
path: root/x11/gnome-shell/files
diff options
context:
space:
mode:
Diffstat (limited to 'x11/gnome-shell/files')
-rw-r--r--x11/gnome-shell/files/org.freedesktop.ConsoleKit.Manager.xml42
-rw-r--r--x11/gnome-shell/files/org.freedesktop.ConsoleKit.Session.xml18
-rw-r--r--x11/gnome-shell/files/patch-data_00__org.gnome.shell.gschema.override9
-rw-r--r--x11/gnome-shell/files/patch-js_gdm_loginDialog.js29
-rw-r--r--x11/gnome-shell/files/patch-js_misc_loginManager.js127
-rw-r--r--x11/gnome-shell/files/patch-js_misc_loginManager_js128
-rw-r--r--x11/gnome-shell/files/patch-js_ui_appDisplay.js15
-rw-r--r--x11/gnome-shell/files/patch-js_ui_appFavorites.js18
-rw-r--r--x11/gnome-shell/files/patch-js_ui_endSessionDialog.js (renamed from x11/gnome-shell/files/patch-js_ui_endSessionDialog_js)16
-rw-r--r--x11/gnome-shell/files/patch-meson.build13
-rw-r--r--x11/gnome-shell/files/patch-subprojects_extensions-tool_man_meson_build15
-rw-r--r--x11/gnome-shell/files/patch-subprojects_extensions-tool_src_meson.build14
-rw-r--r--x11/gnome-shell/files/pkg-message.in29
-rw-r--r--x11/gnome-shell/files/xprofile.in74
14 files changed, 366 insertions, 181 deletions
diff --git a/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Manager.xml b/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Manager.xml
index bf6a73cf3c0f..aff663e3f53b 100644
--- a/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Manager.xml
+++ b/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Manager.xml
@@ -1,25 +1,27 @@
-<!-- $OpenBSD: org.freedesktop.ConsoleKit.Manager.xml,v 1.1 2019/01/17 19:00:46 ajacoutot Exp $ -->
-
<node>
<interface name="org.freedesktop.ConsoleKit.Manager">
- <method name="Suspend">
- <arg type="b" direction="in"/>
- </method>
- <method name="CanSuspend">
- <arg type="s" direction="out"/>
- </method>
- <method name="Inhibit">
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="h" direction="out"/>
- </method>
- <signal name="PrepareForSleep">
- <arg type="b" direction="out"/>
- </signal>
- <method name="GetCurrentSession">
+ <method name="Suspend">
+ <arg type="b" direction="in"/>
+ </method>
+ <method name="CanSuspend">
+ <arg type="s" direction="out"/>
+ </method>
+ <method name="Inhibit">
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="h" direction="out"/>
+ </method>
+ <method name="GetSessionForCookie">
+ <arg type="s" direction="in"/>
<arg type="o" direction="out"/>
</method>
- </interface>
+ <method name="ListSessions">
+ <arg name="sessions" type="a(susso)" direction="out"/>
+ </method>
+ <signal name="PrepareForSleep">
+ <arg type="b" direction="out"/>
+ </signal>
+ </interface>
</node>
diff --git a/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Session.xml b/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Session.xml
index ffa38faf1326..d8325c124847 100644
--- a/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Session.xml
+++ b/x11/gnome-shell/files/org.freedesktop.ConsoleKit.Session.xml
@@ -1,11 +1,13 @@
-<!-- $OpenBSD: org.freedesktop.ConsoleKit.Session.xml,v 1.1 2019/01/17 19:00:46 ajacoutot Exp $ -->
-
<node>
<interface name="org.freedesktop.ConsoleKit.Session">
- <signal name="Lock" />
- <signal name="Unlock" />
- <method name="SetLockedHint">
- <arg type="b" direction="in"/>
- </method>
- </interface>
+ <signal name="Lock"/>
+ <signal name="Unlock"/>
+ <property name="active" type="b" access="read"/>
+ <property name="session-class" type="s" access="read"/>
+ <property name="session-state" type="s" access="read"/>
+ <property name="session-type" type="s" access="read"/>
+ <method name="SetLockedHint">
+ <arg type="b" direction="in"/>
+ </method>
+ </interface>
</node>
diff --git a/x11/gnome-shell/files/patch-data_00__org.gnome.shell.gschema.override b/x11/gnome-shell/files/patch-data_00__org.gnome.shell.gschema.override
new file mode 100644
index 000000000000..58a60be9d2a8
--- /dev/null
+++ b/x11/gnome-shell/files/patch-data_00__org.gnome.shell.gschema.override
@@ -0,0 +1,9 @@
+--- data/00_org.gnome.shell.gschema.override.orig 2023-04-24 08:26:56 UTC
++++ data/00_org.gnome.shell.gschema.override
+@@ -4,3 +4,6 @@ edge-tiling=true
+ dynamic-workspaces=true
+ workspaces-only-on-primary=true
+ focus-change-on-pointer-rest=true
++
++[org.gnome.shell]
++favorite-apps=['org.gnome.Settings.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop']
diff --git a/x11/gnome-shell/files/patch-js_gdm_loginDialog.js b/x11/gnome-shell/files/patch-js_gdm_loginDialog.js
new file mode 100644
index 000000000000..8f15dfb64671
--- /dev/null
+++ b/x11/gnome-shell/files/patch-js_gdm_loginDialog.js
@@ -0,0 +1,29 @@
+--- js/gdm/loginDialog.js.orig 2025-04-13 15:04:25 UTC
++++ js/gdm/loginDialog.js
+@@ -46,6 +46,10 @@ const _CONFLICTING_SESSION_DIALOG_TIMEOUT = 60;
+ const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
+ const _CONFLICTING_SESSION_DIALOG_TIMEOUT = 60;
+
++function haveSystemd() {
++ return GLib.access('/run/systemd/seats', 0) >= 0;
++}
++
+ export const UserListItem = GObject.registerClass({
+ Signals: {'activate': {}},
+ }, class UserListItem extends St.Button {
+@@ -1142,6 +1146,7 @@ export const LoginDialog = GObject.registerClass({
+ }
+
+ async _findConflictingSession(startingSessionId) {
++ if (haveSystemd()) {
+ const loginManager = LoginManager.getLoginManager();
+ const sessions = await loginManager.listSessions();
+ const [, , startingSessionOwner, ,] = sessions.find(([id, , , ,]) => id === startingSessionId);
+@@ -1161,6 +1166,7 @@ export const LoginDialog = GObject.registerClass({
+ continue;
+
+ return sessionProxy;
++ }
+ }
+
+ return null;
diff --git a/x11/gnome-shell/files/patch-js_misc_loginManager.js b/x11/gnome-shell/files/patch-js_misc_loginManager.js
new file mode 100644
index 000000000000..31b6e146855e
--- /dev/null
+++ b/x11/gnome-shell/files/patch-js_misc_loginManager.js
@@ -0,0 +1,127 @@
+--- js/misc/loginManager.js.orig 2025-04-13 15:04:25 UTC
++++ js/misc/loginManager.js
+@@ -13,6 +13,12 @@ const SystemdLoginUser = Gio.DBusProxy.makeProxyWrappe
+ const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
+ const SystemdLoginUser = Gio.DBusProxy.makeProxyWrapper(SystemdLoginUserIface);
+
++const ConsoleKitManagerIface = loadInterfaceXML('org.freedesktop.ConsoleKit.Manager');
++const ConsoleKitSessionIface = loadInterfaceXML('org.freedesktop.ConsoleKit.Session');
++const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);
++const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
++
++
+ function haveSystemd() {
+ return GLib.access('/run/systemd/seats', 0) >= 0;
+ }
+@@ -46,7 +52,7 @@ export function canLock() {
+ -1, null);
+
+ let version = result.deepUnpack()[0].deepUnpack();
+- return haveSystemd() && versionCompare('3.5.91', version);
++ return versionCompare('3.5.91', version);
+ } catch {
+ return false;
+ }
+@@ -82,12 +88,84 @@ export function getLoginManager() {
+ if (haveSystemd())
+ _loginManager = new LoginManagerSystemd();
+ else
+- _loginManager = new LoginManagerDummy();
++ _loginManager = new LoginManagerConsoleKit();
+ }
+
+ return _loginManager;
+ }
+
++class LoginManagerConsoleKit extends Signals.EventEmitter {
++ constructor() {
++ super();
++
++ this._proxy = new ConsoleKitManager(Gio.DBus.system,
++ 'org.freedesktop.ConsoleKit',
++ '/org/freedesktop/ConsoleKit/Manager');
++ this._proxy.connectSignal('PrepareForSleep',
++ this._prepareForSleep.bind(this));
++ }
++
++ async getCurrentSessionProxy() {
++ if (this._currentSession)
++ return this._currentSession;
++
++ try {
++ const [objectPath] = await this._proxy.GetCurrentSessionAsync();
++ this._currentSession = new ConsoleKitSession(Gio.DBus.system,
++ 'org.freedesktop.ConsoleKit', objectPath);
++ return this._currentSession;
++ } catch (error) {
++ logError(error, 'Could not get a proxy for the current session');
++ return null;
++ }
++ }
++
++ async canSuspend() {
++ let canSuspend, needsAuth;
++
++ try {
++ const [result] = await this._proxy.CanSuspendAsync();
++ needsAuth = result === 'challenge';
++ canSuspend = needsAuth || result === 'yes';
++ } catch {
++ canSuspend = false;
++ needsAuth = false;
++ }
++ return {canSuspend, needsAuth};
++ }
++
++ async listSessions() {
++ try {
++ const [sessions] = await this._proxy.ListSessionsAsync();
++ return sessions;
++ } catch {
++ return [];
++ }
++ }
++
++ getSession(objectPath) {
++ return new ConsoleKitSession(Gio.DBus.system, 'org.freedesktop.ConsoleKit', objectPath);
++ }
++
++ suspend() {
++ this._proxy.SuspendAsync(true);
++ }
++
++ async inhibit(reason, cancellable) {
++ const inVariant = new GLib.Variant('(ssss)',
++ ['sleep', 'GNOME Shell', reason, 'delay']);
++ const [outVariant_, fdList] =
++ await this._proxy.call_with_unix_fd_list('Inhibit',
++ inVariant, 0, -1, null, cancellable);
++ const [fd] = fdList.steal_fds();
++ return new GioUnix.InputStream({fd});
++ }
++
++ _prepareForSleep(proxy, sender, [aboutToSuspend]) {
++ this.emit('prepare-for-sleep', aboutToSuspend);
++ }
++}
++
+ class LoginManagerSystemd extends Signals.EventEmitter {
+ constructor() {
+ super();
+@@ -230,16 +308,6 @@ class LoginManagerDummy extends Signals.EventEmitter
+ canSuspend: false,
+ needsAuth: false,
+ }));
+- }
+-
+- canRebootToBootLoaderMenu() {
+- return new Promise(resolve => resolve({
+- canRebootToBootLoaderMenu: false,
+- needsAuth: false,
+- }));
+- }
+-
+- setRebootToBootLoaderMenu() {
+ }
+
+ listSessions() {
diff --git a/x11/gnome-shell/files/patch-js_misc_loginManager_js b/x11/gnome-shell/files/patch-js_misc_loginManager_js
deleted file mode 100644
index 7f82bd3ee259..000000000000
--- a/x11/gnome-shell/files/patch-js_misc_loginManager_js
+++ /dev/null
@@ -1,128 +0,0 @@
-Index: js/misc/loginManager.js
---- js/misc/loginManager.js.orig
-+++ js/misc/loginManager.js
-@@ -14,6 +14,12 @@ const SystemdLoginManager = Gio.DBusProxy.makeProxyWra
- const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
- const SystemdLoginUser = Gio.DBusProxy.makeProxyWrapper(SystemdLoginUserIface);
-
-+const ConsoleKitManagerIface = loadInterfaceXML('org.freedesktop.ConsoleKit.Manager');
-+const ConsoleKitSessionIface = loadInterfaceXML('org.freedesktop.ConsoleKit.Session');
-+
-+const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);
-+const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
-+
- function haveSystemd() {
- return GLib.access("/run/systemd/seats", 0) >= 0;
- }
-@@ -43,7 +49,7 @@ function canLock() {
- -1, null);
-
- let version = result.deep_unpack()[0].deep_unpack();
-- return haveSystemd() && versionCompare('3.5.91', version);
-+ return versionCompare('3.5.91', version);
- } catch (e) {
- return false;
- }
-@@ -81,7 +87,7 @@ function getLoginManager() {
- if (haveSystemd())
- _loginManager = new LoginManagerSystemd();
- else
-- _loginManager = new LoginManagerDummy();
-+ _loginManager = new LoginManagerConsoleKit();
- }
-
- return _loginManager;
-@@ -204,6 +210,79 @@ var LoginManagerSystemd = class {
- };
- Signals.addSignalMethods(LoginManagerSystemd.prototype);
-
-+var LoginManagerConsoleKit = class {
-+ constructor () {
-+ this._proxy = new ConsoleKitManager(Gio.DBus.system,
-+ 'org.freedesktop.ConsoleKit',
-+ '/org/freedesktop/ConsoleKit/Manager');
-+ this._proxy.connectSignal('PrepareForSleep',
-+ this._prepareForSleep.bind(this));
-+ }
-+
-+ // Having this function is a bit of a hack since the Systemd and ConsoleKit
-+ // session objects have different interfaces - but in both cases there are
-+ // Lock/Unlock signals, and that's all we count upon at the moment.
-+
-+
-+ getCurrentSessionProxy(callback) {
-+ if (this._currentSession) {
-+ callback (this._currentSession);
-+ return;
-+ }
-+
-+ this._proxy.GetCurrentSessionRemote((result, error) => {
-+ if (error) {
-+ logError(error, 'Could not get a proxy for the current session');
-+ } else {
-+ this._currentSession = new ConsoleKitSession(Gio.DBus.system,
-+ 'org.freedesktop.ConsoleKit',
-+ result[0]);
-+ callback(this._currentSession);
-+ }
-+ });
-+ }
-+
-+ canSuspend(asyncCallback) {
-+ this._proxy.CanSuspendRemote((result, error) => {
-+ if (error) {
-+ asyncCallback(false, false);
-+ } else {
-+ let needsAuth = result[0] == 'challenge';
-+ let canSuspend = needsAuth || result[0] == 'yes';
-+ asyncCallback(canSuspend, needsAuth);
-+ }
-+ });
-+ }
-+
-+ listSessions(asyncCallback) {
-+ asyncCallback([]);
-+ }
-+
-+ suspend() {
-+ this._proxy.SuspendRemote(true);
-+ }
-+
-+ async inhibit(reason, callback) {
-+ try {
-+ const inVariant = new GLib.Variant('(ssss)',
-+ ['sleep', 'GNOME Shell', reason, 'delay']);
-+ const [outVariant_, fdList] =
-+ await this._proxy.call_with_unix_fd_list('Inhibit',
-+ inVariant, 0, -1, null, null);
-+ const [fd] = fdList.steal_fds();
-+ callback(new Gio.UnixInputStream({ fd }));
-+ } catch (e) {
-+ logError(e, 'Error getting ConsoleKit inhibitor');
-+ callback(null);
-+ }
-+ }
-+
-+ _prepareForSleep(proxy, sender, [aboutToSuspend]) {
-+ this.emit('prepare-for-sleep', aboutToSuspend);
-+ }
-+}
-+Signals.addSignalMethods(LoginManagerConsoleKit.prototype);
-+
- var LoginManagerDummy = class {
- getCurrentSessionProxy(_callback) {
- // we could return a DummySession object that fakes whatever callers
-@@ -213,13 +292,6 @@ var LoginManagerDummy = class {
-
- canSuspend(asyncCallback) {
- asyncCallback(false, false);
-- }
--
-- canRebootToBootLoaderMenu(asyncCallback) {
-- asyncCallback(false, false);
-- }
--
-- setRebootToBootLoaderMenu() {
- }
-
- listSessions(asyncCallback) {
diff --git a/x11/gnome-shell/files/patch-js_ui_appDisplay.js b/x11/gnome-shell/files/patch-js_ui_appDisplay.js
new file mode 100644
index 000000000000..45110063e28f
--- /dev/null
+++ b/x11/gnome-shell/files/patch-js_ui_appDisplay.js
@@ -0,0 +1,15 @@
+--- js/ui/appDisplay.js.orig 2024-11-23 22:49:36 UTC
++++ js/ui/appDisplay.js
+@@ -62,12 +62,8 @@ const DEFAULT_FOLDERS = {
+ name: 'X-GNOME-Utilities.directory',
+ categories: ['X-GNOME-Utilities'],
+ apps: [
+- 'org.freedesktop.GnomeAbrt.desktop',
+- 'nm-connection-editor.desktop',
+ 'org.gnome.baobab.desktop',
+ 'org.gnome.Connections.desktop',
+- 'org.gnome.DejaDup.desktop',
+- 'org.gnome.DiskUtility.desktop',
+ 'org.gnome.Evince.desktop',
+ 'org.gnome.FileRoller.desktop',
+ 'org.gnome.font-viewer.desktop',
diff --git a/x11/gnome-shell/files/patch-js_ui_appFavorites.js b/x11/gnome-shell/files/patch-js_ui_appFavorites.js
new file mode 100644
index 000000000000..1ea5b8b017e8
--- /dev/null
+++ b/x11/gnome-shell/files/patch-js_ui_appFavorites.js
@@ -0,0 +1,18 @@
+--- js/ui/appFavorites.js.orig 2024-11-23 22:49:36 UTC
++++ js/ui/appFavorites.js
+@@ -26,7 +26,6 @@ const RENAMED_DESKTOP_IDS = {
+ 'gnect.desktop': 'org.gnome.Four-in-a-row.desktop',
+ 'gnibbles.desktop': 'org.gnome.Nibbles.desktop',
+ 'gnobots2.desktop': 'org.gnome.Robots.desktop',
+- 'gnome-boxes.desktop': 'org.gnome.Boxes.desktop',
+ 'gnome-calculator.desktop': 'org.gnome.Calculator.desktop',
+ 'gnome-chess.desktop': 'org.gnome.Chess.desktop',
+ 'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
+@@ -41,7 +40,6 @@ const RENAMED_DESKTOP_IDS = {
+ 'gnome-photos.desktop': 'org.gnome.Photos.desktop',
+ 'gnome-robots.desktop': 'org.gnome.Robots.desktop',
+ 'gnome-screenshot.desktop': 'org.gnome.Screenshot.desktop',
+- 'gnome-software.desktop': 'org.gnome.Software.desktop',
+ 'gnome-terminal.desktop': 'org.gnome.Terminal.desktop',
+ 'gnome-tetravex.desktop': 'org.gnome.Tetravex.desktop',
+ 'gnome-tweaks.desktop': 'org.gnome.tweaks.desktop',
diff --git a/x11/gnome-shell/files/patch-js_ui_endSessionDialog_js b/x11/gnome-shell/files/patch-js_ui_endSessionDialog.js
index f20ed3e02214..94b8450f16e6 100644
--- a/x11/gnome-shell/files/patch-js_ui_endSessionDialog_js
+++ b/x11/gnome-shell/files/patch-js_ui_endSessionDialog.js
@@ -1,19 +1,15 @@
-Index: js/ui/endSessionDialog.js
---- js/ui/endSessionDialog.js.orig
+--- js/ui/endSessionDialog.js.orig 2025-04-13 15:04:25 UTC
+++ js/ui/endSessionDialog.js
-@@ -234,11 +234,6 @@ class EndSessionDialog extends ModalDialog.ModalDialog
+@@ -233,8 +233,6 @@ class EndSessionDialog extends ModalDialog.ModalDialog
});
this._loginManager = LoginManager.getLoginManager();
-- this._loginManager.canRebootToBootLoaderMenu(
-- (canRebootToBootLoaderMenu, unusedNeedsAuth) => {
-- this._canRebootToBootLoaderMenu = canRebootToBootLoaderMenu;
-- });
--
+- this._canRebootToBootLoaderMenu = false;
+- this._getCanRebootToBootLoaderMenu().catch(logError);
+
this._userManager = AccountsService.UserManager.get_default();
this._user = this._userManager.get_user(GLib.get_user_name());
- this._updatesPermission = null;
-@@ -452,24 +447,6 @@ class EndSessionDialog extends ModalDialog.ModalDialog
+@@ -452,24 +450,6 @@ class EndSessionDialog extends ModalDialog.ModalDialog
},
label,
});
diff --git a/x11/gnome-shell/files/patch-meson.build b/x11/gnome-shell/files/patch-meson.build
new file mode 100644
index 000000000000..80da036290d5
--- /dev/null
+++ b/x11/gnome-shell/files/patch-meson.build
@@ -0,0 +1,13 @@
+--- meson.build.orig 2023-04-24 08:26:56 UTC
++++ meson.build
+@@ -148,8 +148,10 @@ cdata.set('HAVE_FDWALK', cc.has_function('fdwalk'))
+ cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo'))
+ cdata.set('HAVE_MALLINFO2', cc.has_function('mallinfo2'))
+ cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h'))
++if host_machine.system() == 'linux'
+ cdata.set('HAVE_EXE_INTROSPECTION',
+ cc.has_header('elf.h') and cc.has_header('link.h'))
++endif
+ cdata.set('HAVE__NL_TIME_FIRST_WEEKDAY',
+ cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY')
+ )
diff --git a/x11/gnome-shell/files/patch-subprojects_extensions-tool_man_meson_build b/x11/gnome-shell/files/patch-subprojects_extensions-tool_man_meson_build
deleted file mode 100644
index 109d8cb69555..000000000000
--- a/x11/gnome-shell/files/patch-subprojects_extensions-tool_man_meson_build
+++ /dev/null
@@ -1,15 +0,0 @@
-https://gitlab.gnome.org/GNOME/gnome-shell/issues/1854
-
-Index: subprojects/extensions-tool/man/meson.build
---- subprojects/extensions-tool/man/meson.build.orig
-+++ subprojects/extensions-tool/man/meson.build
-@@ -1,7 +1,7 @@
- custom_target('gnome-extensions.1',
-- input: ['gnome-extensions.txt', 'stylesheet.xsl'],
-+ input: 'gnome-extensions.txt',
- output: 'gnome-extensions.1',
-- command: [a2x, '-D', '@OUTDIR@', '--xsl-file', '@INPUT1@', '-f', 'manpage', '@INPUT0@'],
-+ command: [a2x, '-D', '@OUTDIR@', '-f', 'manpage', '@INPUT0@'],
- install_dir: mandir + '/man1',
- install: true
- )
diff --git a/x11/gnome-shell/files/patch-subprojects_extensions-tool_src_meson.build b/x11/gnome-shell/files/patch-subprojects_extensions-tool_src_meson.build
new file mode 100644
index 000000000000..0e27d7bd84a4
--- /dev/null
+++ b/x11/gnome-shell/files/patch-subprojects_extensions-tool_src_meson.build
@@ -0,0 +1,14 @@
+--- subprojects/extensions-tool/src/meson.build.orig 2023-04-24 08:26:56 UTC
++++ subprojects/extensions-tool/src/meson.build
+@@ -3,7 +3,10 @@ config_h.set_quoted('GETTEXT_PACKAGE', package_name)
+ config_h.set_quoted('VERSION', meson.project_version())
+ config_h.set('MAJOR_VERSION', meson.project_version().split('.')[0])
+ config_h.set_quoted('LOCALEDIR', localedir)
+-config_h.set('HAVE_BIND_TEXTDOMAIN_CODESET', cc.has_function('bind_textdomain_codeset'))
++intl_dep = cc.find_library('intl', required: false)
++if cc.has_function('bind_textdomain_codeset', prefix: '#include <libintl.h>', dependencies: intl_dep)
++ config_h.set('HAVE_BIND_TEXTDOMAIN_CODESET', 1)
++endif
+ configure_file(
+ output: 'config.h',
+ configuration: config_h,
diff --git a/x11/gnome-shell/files/pkg-message.in b/x11/gnome-shell/files/pkg-message.in
new file mode 100644
index 000000000000..6d532111e578
--- /dev/null
+++ b/x11/gnome-shell/files/pkg-message.in
@@ -0,0 +1,29 @@
+[
+{ type: install
+ message: <<EOM
+Gnome-shell requires acceleration of to work. For this a nvidia card
+with the nvidia-driver, or a Intel/ATI KMS enabled card is needed.
+
+For the nvidia users no other changes are needed. For Intel/ATI KMS
+driver the user needs to have read/write permissions on
+/dev/dri/cardN (usually N=0). If gnome-shell is launched from gdm, the
+gdm user also needs this access.
+
+Access can be granted by adding the user(s) to the video group.
+ pw groupmod video -m jerry
+
+In order to launch your session. Copy 'xprofile' into your home directory:
+ cp %%EXAMPLESDIR%%/xprofile ~/.xprofile
+
+Create or edit /var/db/AccountsService/users/YOURLOGIN file:
+ [User]
+ Language=fr_FR.UTF-8 # e.g. for French users
+ Session=gnome-xorg
+ SystemAccount=false
+
+Replace YOURLOGIN by your login.
+
+Currently only 'gnome-xorg' is supported and tested.
+EOM
+}
+]
diff --git a/x11/gnome-shell/files/xprofile.in b/x11/gnome-shell/files/xprofile.in
new file mode 100644
index 000000000000..00c1ed131e99
--- /dev/null
+++ b/x11/gnome-shell/files/xprofile.in
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Set $XDG_RUNTIME_DIR
+_user_id=$(id -u)
+if [ -d "/var/run/user/${_user_id}" ]; then
+ XDG_RUNTIME_DIR="/var/run/user/${_user_id}"
+ export XDG_RUNTIME_DIR
+
+ if [ ! -d "/var/run/user/${_user_id}" ]; then
+ mkdir "/var/run/user/${_user_id}/pulse"
+ fi
+fi
+
+# Set environment variables for D-Bus session services
+if command -v dbus-update-activation-environment >/dev/null 2>&1 ; then
+ dbus-update-activation-environment --all
+fi
+
+# Set $XDG_CONFIG_DIRS
+if test "x$XDG_CONFIG_DIRS" = "x" ; then
+ XDG_CONFIG_DIRS="%%PREFIX%%/etc/xdg:/etc/xdg"
+fi
+export XDG_CONFIG_DIRS
+
+# Set $XDG_DATA_DIRS
+if test "x$XDG_DATA_DIRS" = "x" ; then
+ XDG_DATA_DIRS="%%PREFIX%%/share/gnome:%%PREFIX%%/share:/usr/share"
+fi
+export XDG_DATA_DIRS
+
+# $XDG_CONFIG_HOME defines the base directory relative to which user-specific
+# configuration files should be stored. If $XDG_CONFIG_HOME is either not set
+# or empty, a default equal to $HOME/.config should be used.
+if test "x$XDG_CONFIG_HOME" = "x" ; then
+ XDG_CONFIG_HOME=$HOME/.config
+fi
+[ -d "$XDG_CONFIG_HOME" ] || mkdir "$XDG_CONFIG_HOME"
+
+# $XDG_CACHE_HOME defines the base directory relative to which user-specific
+# non-essential data files should be stored. If $XDG_CACHE_HOME is either not
+# set or empty, a default equal to $HOME/.cache should be used.
+if test "x$XDG_CACHE_HOME" = "x" ; then
+ XDG_CACHE_HOME=$HOME/.cache
+fi
+[ -d "$XDG_CACHE_HOME" ] || mkdir "$XDG_CACHE_HOME"
+
+# $XDG_DATA_HOME defines the base directory relative to which user-specific
+# data files should be stored.
+if test "x$XDG_DATA_HOME" = "x" ; then
+ XDG_DATA_HOME=$HOME/.local/share
+fi
+[ -d "$XDG_DATA_HOME" ] || mkdir -p "$XDG_DATA_HOME"
+
+# $XDG_STATE_HOME defines the base directory relative to which user-specific
+# state files should be stored.
+if test "x$XDG_STATE_HOME" = "x" ; then
+ XDG_STATE_HOME=$HOME/.local/state
+fi
+[ -d "$XDG_STATE_HOME" ] || mkdir -p "$XDG_STATE_HOME"
+
+# Unlock gnome-keyring-daemon
+if test -n "$DESKTOP_SESSION" ; then
+ SSH_AUTH_SOCK="/var/run/user/${_user_id}/keyring/ssh"
+
+ # If .xinitrc is used, uncomment the next line
+ #eval $(gnome-keyring-daemon --start --components=pkc11,secrets,ssh)
+ export SSH_AUTH_SOCK
+fi
+
+# Set up XDG user directories (devel/xdg-user-dirs)
+# https://freedesktop.org/wiki/Software/xdg-user-dirs
+if command -v xdg-user-dirs-update >/dev/null 2>&1 ; then
+ xdg-user-dirs-update
+fi