Hi everyone, tl;dr: I submitted some PRs. If you didn't get a PR, feel free to ignore this. Otherwise read on for a lengthy explanation... We now have a round 100 user units packaged in Fedora, yay! Our packaging guidelines [1] specify that they should be packaged essentially in the same way as system units. This means that a) units which should be enabled by default need a line in /usr/lib/systemd/user-preset/90-default-user.preset provided by fedora-release package b) %systemd_user_post and %systemd_user_preun should be used to call systemctl preset --global For this to work, systemd should have a default policy of 'disable *' for user units. This was missing, so the default policy was 'enable *'. There's a long-standing ticket to add 'disable *' [2]. For *system* units, systemd calls preset-all in its %post. For *user* units, this is not done. On top of this, and probably at least partially caused by this, various packages that install user units do strange things. In particular, many units do not use the scriptlets properly. I'd like to clean this all up for F31: 1. add a default policy of 'disable *' for user units (https://src.fedoraproject.org/rpms/fedora-release/pull-request/80) 2. call 'preset-all --global' in systemd %post (will do once the fedora-release PR is merged) 3. use the scriptlets in more packages (https://src.fedoraproject.org/rpms/p11-remote/pull-request/1 https://src.fedoraproject.org/rpms/pipewire/pull-request/4 https://src.fedoraproject.org/rpms/pulseaudio/pull-request/2 https://src.fedoraproject.org/rpms/unity-gtk-module/pull-request/1 https://src.fedoraproject.org/fork/zbyszek/rpms/grub2/tree/use-scriptlets Those can be merged independently of the other changes.) No action is required from packagers, except for the PRs listed above to be merged. grub2 maintainers: please enable PRs in pagure! Otherwise, pull the changes from my use-scriptlets branch. [1] https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units [2] https://bugzilla.redhat.com/show_bug.cgi?id=1468501 Current state of *user* units in Fedora: unit name / static symlink [Install] preset scriptlets notes -----------------------------------------------+-----------+-----------------------+------------+-------------------- at-spi-dbus-bus.service no bamfdaemon.service no yes blueman-applet.service no yes bup-web.service yes yes not adding preset colord-session.service no cros-garcon.service yes yes not adding preset cros-garcon.service.d/cros-garcon-override.conf cros-pulse-config.service yes yes not adding preset cros-sftp.service yes yes not adding preset dbus-broker.service yes 90-default-user.preset yes dbus-daemon.service yes yes not wanted by default dbus.socket yes 90-default-user.preset yes dunst.service yes emacs.service yes no ethumb.service no yes evolution-addressbook-factory.service no evolution-calendar-factory.service no evolution-source-registry.service no evolution-user-prompter.service no exit.target no flatpak-portal.service no flatpak-session-helper.service no gamemoded.service yes glib-pacrunner.service no gnome-remote-desktop.service no yes gnome-shell.service no gnome-shell-wayland.target no gnome-shell-x11.target no gnome-terminal-server.service no gnome-user-share-webdav.service no graphical-session-pre.target no graphical-session.target no grive-changes@.service yes grive-timer@.service no grive-timer@.timer yes grub-boot-success.service no grub-boot-success.timer no needs preset (https://src.fedoraproject.org/rpms/fedora-release/pull-request/80) timers.target.wants/grub-boot-success.timer https://src.fedoraproject.org/fork/zbyszek/rpms/grub2/tree/use-scriptlets (why are PRs disabled??) gvfs-afc-volume-monitor.service no gvfs-daemon.service no gvfs-goa-volume-monitor.service no gvfs-gphoto2-volume-monitor.service no gvfs-metadata.service no gvfs-mtp-volume-monitor.service no gvfs-udisks2-volume-monitor.service no mpDris2.service yes mpris-scrobbler.service yes yes not adding preset obex.service yes yes needs preset (https://src.fedoraproject.org/rpms/fedora-release/pull-request/80) onedrive.service yes org.gnome.Evince.service no org.gnome.GPaste.service no yes org.gnome.GPaste.Ui.service no yes p11-kit-client.service yes no not a real service? p11-kit-remote@.service no no handled by p11-kit-server.socket p11-kit-remote.socket yes no sockets.target.wants/p11-kit-remote.socket https://src.fedoraproject.org/rpms/p11-remote/pull-request/1 p11-kit-server.service yes p11-kit-server.socket yes paths.target pipewire.service yes no handled by pipewire.socket pipewire.socket yes 90-default-user.preset no sockets.target.wants/pipewire.socket https://src.fedoraproject.org/rpms/pipewire/pull-request/4 pulseaudio.service yes yes handled by pulseaudio.socket pulseaudio.socket yes yes sockets.target.wants/pulseaudio.socket https://src.fedoraproject.org/rpms/pulseaudio/pull-request/2 redshift-gtk.service yes redshift.service yes reportd.service yes rtags.service yes rtags.socket yes rygel.service yes no not enabled sommelier@.service yes yes not adding preset sommelier-x@.service yes yes not adding preset squeezelite.service yes syncevo-dbus-server.service syncthing.service yes 90-syncthing.preset custom preset should be dropped [#1708297] systemd-exit.service systemd-tmpfiles-clean.service systemd-tmpfiles-clean.timer yes 90-systemd.preset needs preset systemd-tmpfiles-setup.service yes 90-systemd.preset needs preset termy-server.service yes termy-server.socket yes thunar.service tracker-extract.service tracker-miner-fs.service tracker-miner-rss.service tracker-store.service tracker-writeback.service unity-gtk-module.service yes default.target.wants/unity-gtk-module.service https://src.fedoraproject.org/rpms/unity-gtk-module/pull-request/1 vino-server.service xdg-desktop-portal-gtk.service xdg-desktop-portal.service xdg-document-portal.service xdg-permission-store.service xfce4-notifyd.service zeitgeist-fts.service zeitgeist.service legend: - unit name / static symlink: the unit name. If the package installs a static enablement symlink, it is also listed here. - [Install]: whether the unit file has an [Install] section - preset: if there's a preset for this unit, the name of the file that contains it - scriptlets: whether the package has installation scriptlets for the unit - notes: not adding preset → I don't think the unit should be enabled by default not wanted by default → package has been mostly deprecated by something else needs preset → I think the unit should be enabled by default Note that unless the unit has "yes" in both "[Install]" and "preset" columns, it'll not be affected by any preset changes, because either 'systemd preset' is not called for it, or it has no effect. I expect that this might not be very clear ;) Sorry. Please post any questions, I'll try to provide more information. Zbyszek _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx