Why at-spi-bus-launcher is not a service

Hi,

I did random check of running processes and spot at-spi-bus-launcher process. There are year long threads for CentOS and Arching Linux about how to disable it.
So the topic is regularly pops up in the community.

I expected to see at-spi-bus-launcher as a service, because it is a background process in fact, but it always launched by gtk-greeter and it configured at build time!

  preConfigure = ''
    configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" )
  '';

I think disabling a service is easier than tweaking a derivation in the overlay.

On my GNOME desktop, it is a service:

$ systemctl status --user at-spi-dbus-bus.service
● at-spi-dbus-bus.service - Accessibility services bus
     Loaded: loaded (/etc/systemd/user/at-spi-dbus-bus.service; linked-runtime; preset: ignored)
     Active: active (running) since Sun 2025-11-23 14:37:32 EST; 4 days ago
 Invocation: 8d8fccdc24874763bce37266a3c2e241
   Main PID: 2113212 (.at-spi-bus-lau)
      Tasks: 10 (limit: 75993)
     Memory: 1.5M (peak: 3.8M, swap: 1.3M, swap peak: 1.3M)
        CPU: 37ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/at-spi-dbus-bus.service
             ├─2113212 /nix/store/z9frh5wqjs90v4zaqfms0pxy74sa5ix8-at-spi2-core-2.58.0/libexec/at-spi-bus-launcher
             ├─2113301 /run/current-system/sw/bin/dbus-daemon --config-file=/nix/store/z9frh5wqjs90v4zaqfms0pxy74sa5ix8-at-spi2-core-2.58.0/share/defaults/at-spi2/accessibility.conf --nofork --print-address 11 --address=unix:path=/run/user/1000/at-spi/bus
             └─2113303 /nix/store/z9frh5wqjs90v4zaqfms0pxy74sa5ix8-at-spi2-core-2.58.0/libexec/at-spi2-registryd --use-gnome-session

Nov 23 14:37:32 jace systemd[2904]: Starting Accessibility services bus...
Nov 23 14:37:32 jace systemd[2904]: Started Accessibility services bus.
Nov 23 14:37:33 jace at-spi-bus-launcher[2113301]: dbus-daemon[2113301]: Activating service name='org.a11y.atspi.Registry' requested by ':1.0' (uid=1000 pid=2113226 comm="/nix/store/hwaampl107lphga3wjbihmpjqkgw5566-gnome-")
Nov 23 14:37:33 jace at-spi-bus-launcher[2113301]: dbus-daemon[2113301]: Successfully activated service 'org.a11y.atspi.Registry'
Nov 23 14:37:33 jace at-spi-bus-launcher[2113303]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.Registry
1 Like

Wow it is a ghost service :slight_smile:

grep -r at-spi-dbus-bus ./nixpkgs | wc
0 0 0

It cannot be disabled through systemctl:

systemctl disable --user at-spi-dbus-bus.service
The unit files have no installation config (WantedBy=, RequiredBy=, UpheldBy=,
Also=, or Alias= settings in the [Install] section, and DefaultInstance= for
template units). This means they are not meant to be enabled or disabled using systemctl.

There is no service config:

$ nix repl
Nix 2.31.2
Type :? for help.
nix-repl> :l <nixpkgs/nixos>
:l <nixpkgs/nixos>
Added 6 variables.
config, options, pkgs, system, vm, vmWithBootLoader

nix-repl> config.systemd.user.services
config.systemd.user.services
{
dbus = { … };
filter-chain = { … };
gcr-ssh-agent = { … };
nixos-activation = { … };
obex = { … };
pipewire = { … };
pipewire-pulse = { … };
systemd-tmpfiles-setup = { … };
wireplumber = { … };
}

It is packaged through the systemd.user.packages option most likely; refusing the service definition in the package instead of explicitly redefining it in nix.