Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ You'll need the following dependencies:
- libjson-glib-dev
- libpantheon-wayland-1-dev
- libpwquality-dev
- libsystemd-dev
- libxkbregistry-dev
- [distinst](https://github.com/pop-os/distinst/)
- valac
Expand Down
10 changes: 0 additions & 10 deletions session/autostart.desktop

This file was deleted.

11 changes: 0 additions & 11 deletions session/compositor-autostart.desktop

This file was deleted.

33 changes: 33 additions & 0 deletions session/compositor@wayland.service.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[Unit]
Description=Installer Compositor
# On wayland, force a session shutdown
OnFailure=gnome-session-shutdown.target
OnFailureJobMode=replace-irreversibly
CollectMode=inactive-or-failed
RefuseManualStart=on
RefuseManualStop=on

After=gnome-session-manager.target

Requisite=gnome-session-initialized.target
PartOf=gnome-session-initialized.target
Before=gnome-session-initialized.target

#NOTE: ConditionEnvironment works with systemd >= 246
ConditionEnvironment=XDG_SESSION_TYPE=%I

[Service]
Slice=session.slice
Type=notify
ExecStart=env GALA_SESSION_TYPE=installer XDG_CURRENT_DESKTOP=Pantheon @bindir@/gala --wayland

# unset some environment variables that were set by the compositor and won't work now that the compositor is gone
ExecStopPost=-/bin/sh -c 'test "$SERVICE_RESULT" != "exec-condition" && systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY && rm -f "$XDG_RUNTIME_DIR/wayland-0" "$XDG_RUNTIME_DIR/wayland-0.lock"'

# On wayland we cannot restart
Restart=no
# Kill any stubborn child processes after this long
TimeoutStopSec=5

# Lower down Gala's OOM score to avoid being killed by OOM-killer too early
OOMScoreAdjust=-1000
9 changes: 9 additions & 0 deletions session/installer.service.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Unit]
Description=Installer
After=gnome-session-initialized.target

[Service]
Type=exec
ExecStart=@bindir@/io.elementary.installer
Restart=on-failure
Slice=session.slice
9 changes: 9 additions & 0 deletions session/installer.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Unit]
Description=Installer
DefaultDependencies=no

Requisite=gnome-session-initialized.target
PartOf=gnome-session-initialized.target
Before=gnome-session-initialized.target

Wants=io.elementary.installer.compositor@wayland.service io.elementary.installer.service
46 changes: 34 additions & 12 deletions session/meson.build
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
autostartdir = get_option('sysconfdir') / 'xdg' / 'autostart'
schemadir = get_option('datadir') / 'glib-2.0' / 'schemas'

install_data(
'autostart.desktop',
install_dir: autostartdir,
rename: meson.project_name() + '.desktop'
)

install_data(
'compositor-autostart.desktop',
install_dir: autostartdir,
rename: meson.project_name() + '.compositor.desktop'
)

install_data(
'installer.desktop',
install_dir: get_option('datadir') / 'wayland-sessions'
Expand All @@ -33,3 +21,37 @@ install_subdir(
install_dir: autostartdir,
strip_directory: true
)

prefix = get_option('prefix')

systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir')

service_config = configuration_data()
service_config.set('bindir', prefix / get_option('bindir'))

configure_file(
input: 'compositor@wayland.service.in',
output: 'io.elementary.installer.compositor@wayland.service',
install: true,
install_dir: systemd_userunitdir,
configuration: service_config
)

install_data(
'installer.target',
rename: 'io.elementary.installer.target',
install_dir: systemd_userunitdir
)

configure_file(
input: 'installer.service.in',
output: 'io.elementary.installer.service',
configuration: service_config,
install: true,
install_dir: systemd_userunitdir
)

install_data(
'session.conf',
install_dir: systemd_userunitdir / 'gnome-session@installer.target.d',
)
6 changes: 6 additions & 0 deletions session/session.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[Unit]
Wants=org.gnome.SettingsDaemon.MediaKeys.target
Wants=org.gnome.SettingsDaemon.Power.target
Wants=org.gnome.SettingsDaemon.XSettings.target

Requires=io.elementary.installer.target
Loading