From 35504d91654321ff2b378229ff13150f53d5aad2 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:49:37 +0200 Subject: Adding upstream version 43.0. Signed-off-by: Daniel Baumann --- data/gnome-custom-session.desktop.in.in | 5 + data/gnome-dummy.session.desktop.in.in | 2 + data/gnome-launched-override.scope.conf | 6 + data/gnome-session-failed.service.in | 19 +++ data/gnome-session-failed.target | 12 ++ data/gnome-session-initialized.target | 19 +++ data/gnome-session-manager.target | 12 ++ data/gnome-session-manager@.service.in | 19 +++ data/gnome-session-monitor.service.in | 15 ++ data/gnome-session-pre.target | 14 ++ data/gnome-session-restart-dbus.service.in | 11 ++ data/gnome-session-shutdown.target | 33 +++++ data/gnome-session-signal-init.service.in | 8 ++ data/gnome-session-wayland.target | 13 ++ data/gnome-session-wayland@.target | 20 +++ data/gnome-session-x11-services-ready.target | 8 ++ data/gnome-session-x11-services.target | 11 ++ data/gnome-session-x11.target | 16 +++ data/gnome-session-x11@.target | 22 +++ data/gnome-session.convert | 3 + data/gnome-session.target | 15 ++ data/gnome-session@.target | 16 +++ data/gnome-wayland.desktop.in.in | 8 ++ data/gnome-xorg.desktop.in.in | 8 ++ data/gnome.desktop.in.in | 8 ++ data/gnome.session.conf.in | 5 + data/gnome.session.desktop.in.in | 4 + data/hardware-compatibility | 32 +++++ data/meson.build | 197 +++++++++++++++++++++++++++ data/org.gnome.SessionManager.gschema.xml.in | 24 ++++ data/session-selector.ui | 195 ++++++++++++++++++++++++++ 31 files changed, 780 insertions(+) create mode 100644 data/gnome-custom-session.desktop.in.in create mode 100644 data/gnome-dummy.session.desktop.in.in create mode 100644 data/gnome-launched-override.scope.conf create mode 100644 data/gnome-session-failed.service.in create mode 100644 data/gnome-session-failed.target create mode 100644 data/gnome-session-initialized.target create mode 100644 data/gnome-session-manager.target create mode 100644 data/gnome-session-manager@.service.in create mode 100644 data/gnome-session-monitor.service.in create mode 100644 data/gnome-session-pre.target create mode 100644 data/gnome-session-restart-dbus.service.in create mode 100644 data/gnome-session-shutdown.target create mode 100644 data/gnome-session-signal-init.service.in create mode 100644 data/gnome-session-wayland.target create mode 100644 data/gnome-session-wayland@.target create mode 100644 data/gnome-session-x11-services-ready.target create mode 100644 data/gnome-session-x11-services.target create mode 100644 data/gnome-session-x11.target create mode 100644 data/gnome-session-x11@.target create mode 100644 data/gnome-session.convert create mode 100644 data/gnome-session.target create mode 100644 data/gnome-session@.target create mode 100644 data/gnome-wayland.desktop.in.in create mode 100644 data/gnome-xorg.desktop.in.in create mode 100644 data/gnome.desktop.in.in create mode 100644 data/gnome.session.conf.in create mode 100644 data/gnome.session.desktop.in.in create mode 100644 data/hardware-compatibility create mode 100644 data/meson.build create mode 100644 data/org.gnome.SessionManager.gschema.xml.in create mode 100644 data/session-selector.ui (limited to 'data') diff --git a/data/gnome-custom-session.desktop.in.in b/data/gnome-custom-session.desktop.in.in new file mode 100644 index 0000000..5fadaa0 --- /dev/null +++ b/data/gnome-custom-session.desktop.in.in @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Custom +Comment=This entry lets you select a saved session +Exec=@bindir@/gnome-session-custom-session +TryExec=@bindir@/gnome-session-custom-session diff --git a/data/gnome-dummy.session.desktop.in.in b/data/gnome-dummy.session.desktop.in.in new file mode 100644 index 0000000..1052346 --- /dev/null +++ b/data/gnome-dummy.session.desktop.in.in @@ -0,0 +1,2 @@ +[GNOME Session] +Name=GNOME dummy diff --git a/data/gnome-launched-override.scope.conf b/data/gnome-launched-override.scope.conf new file mode 100644 index 0000000..810bf23 --- /dev/null +++ b/data/gnome-launched-override.scope.conf @@ -0,0 +1,6 @@ +[Unit] +CollectMode=inactive-or-failed +PartOf=graphical-session.target + +[Scope] +TimeoutStopSec=5s diff --git a/data/gnome-session-failed.service.in b/data/gnome-session-failed.service.in new file mode 100644 index 0000000..4e22ab7 --- /dev/null +++ b/data/gnome-session-failed.service.in @@ -0,0 +1,19 @@ +[Unit] +Description=GNOME Session Failed lockdown screen (user) +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly +CollectMode=inactive-or-failed + +PartOf=gnome-session-failed.target + +# We could do this, but it requires an intermediate target for OnFailure +# handling, so gnome-session-failed checks RUNNING_UNDER_GDM itself +#Conflicts=gnome-session@gnome-login.target +# or in the case of GDM and then not passing --allow-logout +#Requisite=gnome-session@gnome-login.target + +[Service] +Type=simple +ExecStart=@libexecdir@/gnome-session-failed --allow-logout +# The fail whale doesn't trigger a shutdown itself, so do it here +ExecStopPost=-@libexecdir@/gnome-session-ctl --shutdown diff --git a/data/gnome-session-failed.target b/data/gnome-session-failed.target new file mode 100644 index 0000000..3ad2eb1 --- /dev/null +++ b/data/gnome-session-failed.target @@ -0,0 +1,12 @@ +[Unit] +Description=GNOME Session Failed +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly + +# We need an initialized session +Requisite=gnome-session-initialized.target +BindsTo=gnome-session-initialized.target +After=gnome-session-initialized.target + +BindsTo=gnome-session-failed.service +After=gnome-session-failed.service diff --git a/data/gnome-session-initialized.target b/data/gnome-session-initialized.target new file mode 100644 index 0000000..3ef2ecf --- /dev/null +++ b/data/gnome-session-initialized.target @@ -0,0 +1,19 @@ +[Unit] +Description=GNOME Session is initialized +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly +DefaultDependencies=no +RefuseManualStart=yes +RefuseManualStop=yes + +Requires=gnome-session-pre.target +After=gnome-session-pre.target + +Requisite=gnome-session.target +PartOf=gnome-session.target +Before=gnome-session.target + +# Signal gnome-session that we reached the initialized target and +# that it may start applications. +Requires=gnome-session-signal-init.service +Before=gnome-session-signal-init.service diff --git a/data/gnome-session-manager.target b/data/gnome-session-manager.target new file mode 100644 index 0000000..a9d2053 --- /dev/null +++ b/data/gnome-session-manager.target @@ -0,0 +1,12 @@ +[Unit] +Description=GNOME Session Manager is ready +DefaultDependencies=no +RefuseManualStart=yes +RefuseManualStop=yes + +Requisite=gnome-session-pre.target +After=gnome-session-pre.target + +Requisite=gnome-session-initialized.target +PartOf=gnome-session-initialized.target +Before=gnome-session-initialized.target diff --git a/data/gnome-session-manager@.service.in b/data/gnome-session-manager@.service.in new file mode 100644 index 0000000..b06dbeb --- /dev/null +++ b/data/gnome-session-manager@.service.in @@ -0,0 +1,19 @@ +[Unit] +Description=GNOME Session Manager (session: %i) +RefuseManualStart=yes +RefuseManualStop=yes +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly +CollectMode=inactive-or-failed + +Requisite=gnome-session-pre.target +After=gnome-session-pre.target + +Requires=gnome-session-manager.target +PartOf=gnome-session-manager.target +Before=gnome-session-manager.target + +[Service] +Type=notify +ExecStart=@libexecdir@/gnome-session-binary --systemd-service --session=%i +ExecStopPost=-@libexecdir@/gnome-session-ctl --shutdown diff --git a/data/gnome-session-monitor.service.in b/data/gnome-session-monitor.service.in new file mode 100644 index 0000000..5e5edb7 --- /dev/null +++ b/data/gnome-session-monitor.service.in @@ -0,0 +1,15 @@ +[Unit] +Description=Monitor Session leader for GNOME Session +CollectMode=inactive-or-failed + +# All services started after gnome-session-pre.target need to be torn down +# before the session finish can be signalled back to the display manager. +PartOf=gnome-session-pre.target +Before=gnome-session-pre.target + +# No After, as we want this to start up immediately + +[Service] +Type=notify +ExecStart=@libexecdir@/gnome-session-ctl --monitor +TimeoutStopSec=5 diff --git a/data/gnome-session-pre.target b/data/gnome-session-pre.target new file mode 100644 index 0000000..b6cad85 --- /dev/null +++ b/data/gnome-session-pre.target @@ -0,0 +1,14 @@ +[Unit] +Description=Tasks to be run before GNOME Session starts +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly +DefaultDependencies=no +RefuseManualStart=yes +RefuseManualStop=yes + +Requires=graphical-session-pre.target +After=graphical-session-pre.target + +Requisite=gnome-session-initialized.target +PartOf=gnome-session-initialized.target +Before=gnome-session-initialized.target diff --git a/data/gnome-session-restart-dbus.service.in b/data/gnome-session-restart-dbus.service.in new file mode 100644 index 0000000..6389c32 --- /dev/null +++ b/data/gnome-session-restart-dbus.service.in @@ -0,0 +1,11 @@ +[Unit] +Description=Restart DBus after GNOME Session shutdown + +# Allow exit.target to start even if this unit is started with replace-irreversibly. +# For this to work, we also need to be in the root slice. +DefaultDependencies=no + +[Service] +Type=notify +ExecStart=@libexecdir@/gnome-session-ctl --restart-dbus +Slice=-.slice diff --git a/data/gnome-session-shutdown.target b/data/gnome-session-shutdown.target new file mode 100644 index 0000000..2c3d196 --- /dev/null +++ b/data/gnome-session-shutdown.target @@ -0,0 +1,33 @@ +[Unit] +Description=Shutdown running GNOME Session + +# Allow exit.target to start even if this unit is started with replace-irreversibly. +# All (weak) dependencies need to do the same. Services also need to ensure they +# are in the root slice by setting Slice=-.slice. +DefaultDependencies=no + +Conflicts=graphical-session.target graphical-session-pre.target +After=graphical-session.target graphical-session-pre.target + +# Add explicit conflicts/after lines for gnome-session targets, technically +# this should not be needed, but is an extra safety measure. +Conflicts=gnome-session.target gnome-session-manager.target +After=gnome-session.target gnome-session-manager.target + +Conflicts=gnome-session-pre.target gnome-session-initialized.target gnome-session-failed.target +After=gnome-session-pre.target gnome-session-initialized.target gnome-session-failed.target + +# We need to make sure this unit is stopped; primarily so that the tree of +# units that we created is completely cleaned. +# Note that this can also be improved by reversing the conflicts above and +# not listing them in the shutdown unit. +StopWhenUnneeded=true + +# We trigger a restart of DBus after reaching the shutdown target this +# is a workaround so that DBus services that do not connect to the +# display server are shut down after log-out. +# This should be removed when the relevant services add a +# PartOf=graphical-session.target +# Historic bug: https://bugzilla.gnome.org/show_bug.cgi?id=764029 +Wants=gnome-session-restart-dbus.service +Before=gnome-session-restart-dbus.service diff --git a/data/gnome-session-signal-init.service.in b/data/gnome-session-signal-init.service.in new file mode 100644 index 0000000..e3d2c46 --- /dev/null +++ b/data/gnome-session-signal-init.service.in @@ -0,0 +1,8 @@ +[Unit] +Description=Signal initialization done to GNOME Session Manager + +PartOf=gnome-session.target + +[Service] +Type=oneshot +ExecStart=@libexecdir@/gnome-session-ctl --signal-init diff --git a/data/gnome-session-wayland.target b/data/gnome-session-wayland.target new file mode 100644 index 0000000..6552b4d --- /dev/null +++ b/data/gnome-session-wayland.target @@ -0,0 +1,13 @@ +[Unit] +Description=GNOME Wayland Session +# On wayland all is lost, do a shutdown +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly +# Avoid default After/Before rules +DefaultDependencies=no + +Before=gnome-session.target + +PartOf=graphical-session.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/data/gnome-session-wayland@.target b/data/gnome-session-wayland@.target new file mode 100644 index 0000000..ba2a918 --- /dev/null +++ b/data/gnome-session-wayland@.target @@ -0,0 +1,20 @@ +[Unit] +Description=GNOME Wayland Session (session: %i) +DefaultDependencies=no +# Start happens explicitly +RefuseManualStart=no +# Stop happens by starting gnome-session-shutdown.target +RefuseManualStop=yes + +Conflicts=shutdown.target gnome-session-shutdown.target +PartOf=graphical-session.target + +# As this is the main entry point, pull in the other toplevel gnome-session targets +Requires=gnome-session@.target +After=gnome-session@.target + +Requires=gnome-session-wayland.target +After=gnome-session-wayland.target + +Requires=gnome-session.target +After=gnome-session.target diff --git a/data/gnome-session-x11-services-ready.target b/data/gnome-session-x11-services-ready.target new file mode 100644 index 0000000..371e173 --- /dev/null +++ b/data/gnome-session-x11-services-ready.target @@ -0,0 +1,8 @@ +[Unit] +Description=GNOME session X11 services +DefaultDependencies=no + +BindsTo=gnome-session-x11-services.target +After=gnome-session-x11-services.target + +Before=gnome-session.target diff --git a/data/gnome-session-x11-services.target b/data/gnome-session-x11-services.target new file mode 100644 index 0000000..5c63db5 --- /dev/null +++ b/data/gnome-session-x11-services.target @@ -0,0 +1,11 @@ +[Unit] +Description=GNOME session X11 services +DefaultDependencies=no + +Requisite=gnome-session-initialized.target +After=gnome-session-initialized.target +PartOf=gnome-session-initialized.target + +Requisite=gnome-session-x11-services-ready.target +Before=gnome-session-x11-services-ready.target +PartOf=gnome-session-x11-services-ready.target diff --git a/data/gnome-session-x11.target b/data/gnome-session-x11.target new file mode 100644 index 0000000..e13cc9e --- /dev/null +++ b/data/gnome-session-x11.target @@ -0,0 +1,16 @@ +[Unit] +Description=GNOME X11 Session +# On X11, try to show the fail screen +OnFailure=gnome-session-failed.target +OnFailureJobMode=replace +# Avoid default After/Before rules +DefaultDependencies=no + +Before=gnome-session.target + +PartOf=graphical-session.target +RefuseManualStart=yes +RefuseManualStop=yes + +# Pull in all X11-specific services the session might depend on +Requires=gnome-session-x11-services.target diff --git a/data/gnome-session-x11@.target b/data/gnome-session-x11@.target new file mode 100644 index 0000000..ce5879b --- /dev/null +++ b/data/gnome-session-x11@.target @@ -0,0 +1,22 @@ +[Unit] +Description=GNOME X11 Session (session: %i) +OnFailure=gnome-session-failed.target +OnFailureJobMode=replace +DefaultDependencies=no +# Start happens explicitly +RefuseManualStart=no +# Stop happens by starting gnome-session-shutdown.target +#RefuseManualStop=yes + +Conflicts=shutdown.target gnome-session-shutdown.target +PartOf=graphical-session.target + +# As this is the main entry point, pull in the other toplevel gnome-session targets +BindsTo=gnome-session@.target +After=gnome-session@.target + +BindsTo=gnome-session-x11.target +After=gnome-session-x11.target + +BindsTo=gnome-session.target +After=gnome-session.target diff --git a/data/gnome-session.convert b/data/gnome-session.convert new file mode 100644 index 0000000..fd4dfab --- /dev/null +++ b/data/gnome-session.convert @@ -0,0 +1,3 @@ +[org.gnome.SessionManager] +auto-save-session = /apps/gnome-session/options/auto_save_session +logout-prompt = /apps/gnome-session/options/logout_prompt diff --git a/data/gnome-session.target b/data/gnome-session.target new file mode 100644 index 0000000..ea30555 --- /dev/null +++ b/data/gnome-session.target @@ -0,0 +1,15 @@ +[Unit] +Description=GNOME Session +OnFailure=gnome-session-failed.target +OnFailureJobMode=replace +DefaultDependencies=no +RefuseManualStart=yes +RefuseManualStop=yes + +BindsTo=graphical-session.target +Before=graphical-session.target + +# gnome-session-monitor.service will quit with the session leader process +# gnome-session.target pulls in graphical-session.target +BindsTo=gnome-session-monitor.service +After=gnome-session-monitor.service diff --git a/data/gnome-session@.target b/data/gnome-session@.target new file mode 100644 index 0000000..536d9c0 --- /dev/null +++ b/data/gnome-session@.target @@ -0,0 +1,16 @@ +[Unit] +Description=GNOME Session (session: %i) +OnFailure=gnome-session-failed.target +OnFailureJobMode=replace +DefaultDependencies=no +RefuseManualStart=yes +RefuseManualStop=yes + +Requires=gnome-session-initialized.target +After=gnome-session-initialized.target + +Requisite=gnome-session.target +PartOf=gnome-session.target +Before=gnome-session.target + +Requires=gnome-session-manager@.service diff --git a/data/gnome-wayland.desktop.in.in b/data/gnome-wayland.desktop.in.in new file mode 100644 index 0000000..b48eecd --- /dev/null +++ b/data/gnome-wayland.desktop.in.in @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=GNOME on Wayland +Comment=This session logs you into GNOME +Exec=@bindir@/gnome-session +TryExec=@bindir@/gnome-session +Type=Application +DesktopNames=GNOME +X-GDM-SessionRegisters=true diff --git a/data/gnome-xorg.desktop.in.in b/data/gnome-xorg.desktop.in.in new file mode 100644 index 0000000..9a76fac --- /dev/null +++ b/data/gnome-xorg.desktop.in.in @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=GNOME on Xorg +Comment=This session logs you into GNOME +Exec=@bindir@/gnome-session +TryExec=@bindir@/gnome-session +Type=Application +DesktopNames=GNOME +X-GDM-SessionRegisters=true diff --git a/data/gnome.desktop.in.in b/data/gnome.desktop.in.in new file mode 100644 index 0000000..7eec1de --- /dev/null +++ b/data/gnome.desktop.in.in @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=GNOME +Comment=This session logs you into GNOME +Exec=@bindir@/gnome-session +TryExec=@bindir@/gnome-session +Type=Application +DesktopNames=GNOME +X-GDM-SessionRegisters=true diff --git a/data/gnome.session.conf.in b/data/gnome.session.conf.in new file mode 100644 index 0000000..3f79d9e --- /dev/null +++ b/data/gnome.session.conf.in @@ -0,0 +1,5 @@ +[Unit] +# Must be in sync with gnome.session +@wants_required_components@ + +Requires=@requires_component@.target diff --git a/data/gnome.session.desktop.in.in b/data/gnome.session.desktop.in.in new file mode 100644 index 0000000..b3ea9fc --- /dev/null +++ b/data/gnome.session.desktop.in.in @@ -0,0 +1,4 @@ +[GNOME Session] +Name=GNOME +# Must be in sync with gnome-session@gnome.target.d/gnome.session.conf drop-in +RequiredComponents=@required_components@; diff --git a/data/hardware-compatibility b/data/hardware-compatibility new file mode 100644 index 0000000..48b7946 --- /dev/null +++ b/data/hardware-compatibility @@ -0,0 +1,32 @@ +## +## This file contains a list of blacklist/whitelist regular expressions for +## renderer strings. +## +## The regular expressions are case-insensitive POSIX Extended Regular +## Expressions. See regex(7) for details. +## +## Syntax: +## - Comment lines start with '#' +## - Lines starting with '+' are whitelisting. +## - Lines starting with '-' are blacklisting. +## - Lines not starting with '#', '+', '-' are ignored. +## + +# Intel 830-865 +-Intel\(R\) 8[[:digit:]]{2,2}[^[:digit:]] + +# Intel IGD +-Intel IGD + +# Pre-R300 radeon +-Mesa DRI R[12]00[^[:digit:]] +-Mesa DRI R[12]00$ + +# Old Mesa software GL renderer +-software rasterizer + +# Gallium has softpipe; we explicitly enable llvmpipe +-softpipe + +# nouveau vieux NV25 doesn't work too well +-Mesa DRI nv25 diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..f6d264f --- /dev/null +++ b/data/meson.build @@ -0,0 +1,197 @@ +desktop_plain = 'gnome' + +desktops = [ + desktop_plain, + 'gnome-xorg', + 'gnome-wayland', +] + +shell_component = { + desktop_plain: 'org.gnome.Shell', +} + +required_components = { + desktop_plain: [ + 'org.gnome.SettingsDaemon.A11ySettings', + 'org.gnome.SettingsDaemon.Color', + 'org.gnome.SettingsDaemon.Datetime', + 'org.gnome.SettingsDaemon.Housekeeping', + 'org.gnome.SettingsDaemon.Keyboard', + 'org.gnome.SettingsDaemon.MediaKeys', + 'org.gnome.SettingsDaemon.Power', + 'org.gnome.SettingsDaemon.PrintNotifications', + 'org.gnome.SettingsDaemon.Rfkill', + 'org.gnome.SettingsDaemon.ScreensaverProxy', + 'org.gnome.SettingsDaemon.Sharing', + 'org.gnome.SettingsDaemon.Smartcard', + 'org.gnome.SettingsDaemon.Sound', + 'org.gnome.SettingsDaemon.UsbProtection', + 'org.gnome.SettingsDaemon.Wacom', + 'org.gnome.SettingsDaemon.XSettings', + ], +} + +if enable_session_selector + desktops += 'gnome-custom-session' +endif + +foreach name: desktops + desktop_conf = configuration_data() + desktop_conf.set('bindir', session_bindir) + + desktop = name + '.desktop' + + desktop_in = configure_file( + input: desktop + '.in.in', + output: desktop + '.in', + configuration: desktop_conf + ) + + if name.endswith('-xorg') + install_dir = session_datadir / 'xsessions' + elif name.endswith('-wayland') + install_dir = session_datadir / 'wayland-sessions' + else + # FIXME: The same target can not be copied into two directories. + # There is a workaround in meson_post_install.py until proper + # solution arises: + # https://github.com/mesonbuild/meson/issues/2416 + install_dir = session_datadir / 'xsessions' + #install_dir = [ + # join_paths(session_datadir, 'xsessions'), + # join_paths(session_datadir, 'wayland-sessions') + #] + endif + + desktop_target = i18n.merge_file( + type: 'desktop', + input: desktop_in, + output: desktop, + po_dir: po_dir, + install: true, + install_dir: install_dir + ) +endforeach + +sessions = [ + 'gnome', + 'gnome-dummy' +] + +foreach session: sessions + session_file = session + '.session' + desktop_conf = configuration_data() + desktop_conf.set('libexecdir', session_libexecdir) + desktop_conf.set('required_components', ';'.join( + [shell_component.get(session, '')] + required_components.get(session, []))) + + desktop = session_file + '.desktop' + + desktop_in = configure_file( + input: desktop + '.in.in', + output: desktop + '.in', + configuration: desktop_conf + ) + + i18n.merge_file( + type: 'desktop', + input: desktop_in, + output: session_file, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_pkgdatadir, 'sessions') + ) +endforeach + +schema_conf = configuration_data() + +schema = 'org.gnome.SessionManager.gschema.xml' + +configure_file( + input: schema + '.in', + output: schema, + install: true, + install_dir: join_paths(session_datadir, 'glib-2.0', 'schemas'), + configuration: schema_conf +) + +install_data( + 'gnome-session.convert', + install_dir: join_paths(session_datadir, 'GConf', 'gsettings') +) + +if enable_systemd_session + unit_conf = configuration_data() + unit_conf.set('libexecdir', session_libexecdir) + + systemd_service = ['gnome-session-manager@.service', + 'gnome-session-signal-init.service', + 'gnome-session-restart-dbus.service', + 'gnome-session-monitor.service', + 'gnome-session-failed.service'] + + foreach service: systemd_service + configure_file( + input: service + '.in', + output: service, + install: true, + install_dir: systemd_userunitdir, + configuration: unit_conf + ) + endforeach + + systemd_target = files('gnome-session-wayland@.target', + 'gnome-session-wayland.target', + 'gnome-session-x11@.target', + 'gnome-session-x11.target', + 'gnome-session-x11-services.target', + 'gnome-session-x11-services-ready.target', + 'gnome-session@.target', + 'gnome-session.target', + 'gnome-session-pre.target', + 'gnome-session-manager.target', + 'gnome-session-initialized.target', + 'gnome-session-shutdown.target', + 'gnome-session-failed.target', + ) + + install_data( + systemd_target, + install_dir: systemd_userunitdir + ) + + install_data( + 'gnome-launched-override.scope.conf', + rename: 'override.conf', + install_dir : join_paths(systemd_userunitdir, 'gnome-launched-.scope.d') + ) + + foreach session, req_components: required_components + wanted_targets = [] + foreach component: req_components + wanted_targets += 'Wants=@0@.target'.format(component) + endforeach + + configure_file( + input: session + '.session.conf.in', + output: session + '.session.conf', + configuration: { + 'requires_component': shell_component[session], + 'wants_required_components': '\n'.join(wanted_targets), + }, + install_dir: systemd_userunitdir / 'gnome-session@@0@.target.d'.format( + session), + ) + endforeach +endif + +data = files('hardware-compatibility') + +if enable_session_selector + data += files('session-selector.ui') +endif + +install_data( + data, + install_dir: session_pkgdatadir +) diff --git a/data/org.gnome.SessionManager.gschema.xml.in b/data/org.gnome.SessionManager.gschema.xml.in new file mode 100644 index 0000000..b2b220d --- /dev/null +++ b/data/org.gnome.SessionManager.gschema.xml.in @@ -0,0 +1,24 @@ + + + + false + Save sessions + If enabled, gnome-session will save the session automatically. + + + false + Save this session + When enabled, gnome-session will automatically save the next session at log out even if auto saving is disabled. + + + true + Logout prompt + If enabled, gnome-session will prompt the user before ending a session. + + + true + Show the fallback warning + If enabled, gnome-session will display a warning dialog after login if the session was automatically fallen back. + + + diff --git a/data/session-selector.ui b/data/session-selector.ui new file mode 100644 index 0000000..1c55712 --- /dev/null +++ b/data/session-selector.ui @@ -0,0 +1,195 @@ + + + + + + + + + + + + session-store + + + Custom Session + center + 500 + 310 + False + + + True + 0.5 + out + + + True + 12 + + + True + vertical + 6 + + + + True + other + + + + True + vertical + 0 + + + True + 0.0 + 0.5 + Please select a custom session to run + + + True + True + 0 + + + + + + + False + True + 0 + + + + + True + vertical + 12 + + + True + 12 + + + True + True + never + automatic + in + + + True + True + False + 0 + sort-model + + + + + 0 + + + + + True + vertical + 6 + start + + + _New Session + True + True + True + True + + + False + False + 0 + + + + + _Remove Session + True + True + True + True + + + False + False + 1 + + + + + Rena_me Session + True + True + True + True + + + False + False + 2 + + + + + False + 1 + + + + + 1 + + + + + 1 + + + + + True + 6 + end + + + _Continue + True + True + True + True + True + True + + + False + False + 0 + + + + + False + 2 + + + + + + + + + + -- cgit v1.2.3