From d9fedaf18b8a95d1c8ee0239aafbb6aec5e22776 Mon Sep 17 00:00:00 2001 From: Sergio Costas Rodriguez Date: Mon, 18 Nov 2024 13:57:36 +0100 Subject: [PATCH 1/2] Remove gnome shell for split desktop snap These are the required changes in core24-desktop to allow gnome shell to work in its own snap. --- hooks/001-extra-packages.chroot | 1 + hooks/002.1-add-gdm.chroot | 42 ++++--------------- hooks/599-cleanup-packages.chroot | 13 +++++- static/etc/system-image/writable-paths | 1 - .../usr/bin/core-desktop-session-wrapper.sh | 3 +- .../portals/gnome-keyring.portal | 4 ++ .../xdg-desktop-portal/portals/kwallet.portal | 4 ++ 7 files changed, 31 insertions(+), 37 deletions(-) create mode 100644 static/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal create mode 100644 static/usr/share/xdg-desktop-portal/portals/kwallet.portal diff --git a/hooks/001-extra-packages.chroot b/hooks/001-extra-packages.chroot index ae610465..003ec76d 100755 --- a/hooks/001-extra-packages.chroot +++ b/hooks/001-extra-packages.chroot @@ -267,6 +267,7 @@ PACKAGES=( p11-kit-modules plymouth-label-ft polkitd + python3-dbus rfkill squashfs-tools sudo diff --git a/hooks/002.1-add-gdm.chroot b/hooks/002.1-add-gdm.chroot index 3b8e0427..35ba2071 100755 --- a/hooks/002.1-add-gdm.chroot +++ b/hooks/002.1-add-gdm.chroot @@ -28,33 +28,9 @@ apt-get install --no-install-recommends -y \ gir1.2-gsound-1.0 \ libcanberra-pulse \ libsnapd-glib-2-1 \ - ibus - -# Install a basic Ubuntu session -apt-get install --no-install-recommends -y \ - ubuntu-session \ - gkbd-capplet \ - gnome-menus \ - gnome-terminal \ - gnome-settings-daemon \ - gnome-shell-extension-appindicator \ - gnome-shell-extension-desktop-icons-ng \ - gnome-shell-extension-ubuntu-dock \ - gnome-shell-extension-ubuntu-tiling-assistant \ - gnome-control-center \ - gnome-keyring \ - fprintd \ - libpam-fprintd \ - opensc \ - bolt \ - libpam-gnome-keyring \ - spice-vdagent \ - xdg-desktop-portal \ - xdg-desktop-portal-gnome \ - xdg-desktop-portal-gtk \ - xdg-user-dirs-gtk \ - inotify-tools \ - alsa-ucm-conf + ibus \ + pkexec \ + xdg-desktop-portal # Remove setuid from some executables we're not using chmod u-s,g-s /usr/bin/pkexec @@ -70,11 +46,11 @@ sed -i '/^Description=/ a # delay until snapd finishes seeding\nAfter=snapd.seed # Remove D-Bus service activation files provided by # ubuntu-desktop-session snap. -rm /usr/share/dbus-1/services/org.gnome.Nautilus.service -rm /usr/share/dbus-1/services/org.gnome.Terminal.service -rm /usr/share/dbus-1/services/org.freedesktop.impl.portal.desktop.gnome.service -rm /usr/share/dbus-1/services/org.freedesktop.impl.portal.desktop.gtk.service -rm /usr/share/dbus-1/services/org.gnome.Shell.Screencast.service +rm -f /usr/share/dbus-1/services/org.gnome.Nautilus.service +rm -f /usr/share/dbus-1/services/org.gnome.Terminal.service +rm -f /usr/share/dbus-1/services/org.freedesktop.impl.portal.desktop.gnome.service +rm -f /usr/share/dbus-1/services/org.freedesktop.impl.portal.desktop.gtk.service +rm -f /usr/share/dbus-1/services/org.gnome.Shell.Screencast.service rm -f /usr/share/dbus-1/services/org.freedesktop.IBus.service rm -f /usr/share/dbus-1/services/org.freedesktop.portal.IBus.service rm -f /usr/share/dbus-1/services/org.freedesktop.ColorHelper.service @@ -120,7 +96,7 @@ sed -i "/^ReadWritePaths=/ a \\ /var/lib/extrausers/ \\\\" \ /usr/lib/systemd/system/accounts-daemon.service # Hide gnome-terminal by default -sed -i 's/OnlyShowIn=/NoDisplay=true\nOnlyShowIn=/g' /usr/share/applications/org.gnome.Terminal.desktop +#sed -i 's/OnlyShowIn=/NoDisplay=true\nOnlyShowIn=/g' /usr/share/applications/org.gnome.Terminal.desktop # change default wallpapers cp /usr/share/gnome-background-properties/ubuntu-wallpapers.xml /usr/share/gnome-background-properties/ubuntu-core-desktop-wallpapers.xml diff --git a/hooks/599-cleanup-packages.chroot b/hooks/599-cleanup-packages.chroot index 06fc52c6..4af99b13 100755 --- a/hooks/599-cleanup-packages.chroot +++ b/hooks/599-cleanup-packages.chroot @@ -1,13 +1,22 @@ #!/bin/sh set -e -echo Removing pipewire # remove packages that were installed due to dependencies but that we # must remove. -dpkg -r --force-all pipewire wireplumber pipewire-pulse +echo Removing pipewire +dpkg -r --force-all pipewire wireplumber pipewire-pulse pipewire-alsa # For pipewire-bin remove all the binaries but retain all the config from /usr/share which will # be used by clients and modules for i in $(dpkg -L pipewire-bin | grep -v "^/\.$" | grep -v "usr/share" | sed -E -e 's,^/,,' | tac) ; do rm -df "$i" || /bin/true done +echo Removing xdg-desktop-portal-XXX +# Save the portal file +cp /usr/share/xdg-desktop-portal/portals/gnome.portal /usr/share/xdg-desktop-portal/portals/gnome.portal.preserve +dpkg -r --force-all xdg-desktop-portal-gtk xdg-desktop-portal-gnome +# Now, restore the portal file +mv /usr/share/xdg-desktop-portal/portals/gnome.portal.preserve /usr/share/xdg-desktop-portal/portals/gnome.portal + +# Remove all the gnome services to ensure that they don't interfere with the ones in the session snap +rm -f /usr/share/dbus-1/services/org.gnome.* diff --git a/static/etc/system-image/writable-paths b/static/etc/system-image/writable-paths index 4e8a3f44..8ac84bd5 100644 --- a/static/etc/system-image/writable-paths +++ b/static/etc/system-image/writable-paths @@ -73,7 +73,6 @@ /etc/polkit-1/rules.d auto persistent none none /var/lib/AccountsService auto persistent transition none /var/lib/gdm3 auto persistent transition none -/usr/share/wayland-sessions auto persistent transition none /usr/share/polkit-1 auto persistent transition none /var/lib/colord auto persistent transition none /var/lib/fprint auto persistent transition none diff --git a/static/usr/bin/core-desktop-session-wrapper.sh b/static/usr/bin/core-desktop-session-wrapper.sh index 9c485dab..4cdbe415 100755 --- a/static/usr/bin/core-desktop-session-wrapper.sh +++ b/static/usr/bin/core-desktop-session-wrapper.sh @@ -61,6 +61,7 @@ fixup_xauthority & ln -sf "snap.$snap_name/wayland-0" $XDG_RUNTIME_DIR/wayland-0 # Symlink sockets for pipewire and pipewire-pulse ln -sf "snap.pipewire/pipewire-0" $XDG_RUNTIME_DIR/pipewire-0 -ln -sf "snap.pipewire/pulse" $XDG_RUNTIME_DIR/pulse +mkdir -p $XDG_RUNTIME_DIR/pulse +ln -sf "../snap.pipewire/pulse/native" $XDG_RUNTIME_DIR/pulse/native exec "/snap/bin/$snap_cmd" diff --git a/static/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal b/static/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal new file mode 100644 index 00000000..07eb3d24 --- /dev/null +++ b/static/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal @@ -0,0 +1,4 @@ +[portal] +DBusName=org.freedesktop.secrets +Interfaces=org.freedesktop.impl.portal.Secret +UseIn=gnome diff --git a/static/usr/share/xdg-desktop-portal/portals/kwallet.portal b/static/usr/share/xdg-desktop-portal/portals/kwallet.portal new file mode 100644 index 00000000..8198428a --- /dev/null +++ b/static/usr/share/xdg-desktop-portal/portals/kwallet.portal @@ -0,0 +1,4 @@ +[portal] +DBusName=org.freedesktop.impl.portal.desktop.kwallet +Interfaces=org.freedesktop.impl.portal.Secret; +UseIn=kde From 4fcec63d954b3f8d86b741e82abc0fd508443542 Mon Sep 17 00:00:00 2001 From: Sergio Costas Rodriguez Date: Tue, 11 Feb 2025 13:26:08 +0100 Subject: [PATCH 2/2] Remove udisks2 daemon package --- hooks/599-cleanup-packages.chroot | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hooks/599-cleanup-packages.chroot b/hooks/599-cleanup-packages.chroot index 4af99b13..0fcbb17b 100755 --- a/hooks/599-cleanup-packages.chroot +++ b/hooks/599-cleanup-packages.chroot @@ -20,3 +20,8 @@ mv /usr/share/xdg-desktop-portal/portals/gnome.portal.preserve /usr/share/xdg-de # Remove all the gnome services to ensure that they don't interfere with the ones in the session snap rm -f /usr/share/dbus-1/services/org.gnome.* + +echo Removing udisks2 +dpkg -r --force-all udisks2 +rm -f /usr/lib/systemd/user/gvfs-udisks2-volume-monitor.service +