The ways desktop applications can be or are launched automatically upon logging into a desktop environment on GNU/Linux is to a large degree standardized. You can easily manually add applications you would like to auto-start to a standardized folder all the desktop environments look at, and you can just as easily use that folder to prevent applications from launching at start-up. D-Bus and applications launched by it does complicate things a bit, though.
The Freedesktop Standard
/etc/xdg/autostart/ are used to specify what applications should be launched when you login to a desktop environment.
The applications listed in the system-wide
/etc/xdg/autostart/ are launched if a Freedesktop-standard
.desktop file is in that folder unless there is a corresponding file in the per-user folder
$HOME/.config/autostart that says otherwise.
.desktop are files that describe a programs name, description, executable, icon file and several other things. They are use to create the menu items desktop environments show. They are also used for several other purposes.
Preventing A System-Wide Auto-Start Desktop File From Being Used
Quite a few programs will, annoyingly, install a .desktop file in
/etc/xdg/autostart/ that make them auto-start upon login without being explicitly configured to do so. The Spice vdagent is one of the garbage programs that will auto-launch if the package is installed on a machine. This is caused by the file
/etc/xdg/autostart/spice-vdagent.desktop. Desktop environments can be told to ignore that file by creating another file with the same name in
$HOME/.config/autostart. That file would need to have a
[Desktop Entry] with
Hidden=true in it:
Hidden=true will, in all other cases, prevent a program from being shown in a desktop environments menu. It is seen differently if the .desktop file happens to be in
$HOME/.config/autostart/, it means "do not auto-run programs in .desktop files with this name" in that case.
There are two other another oddly named key that can be used for a similar purpose:
NotShowIn. These can be used if you would like to auto-start a program in just one or two desktop environments or not start a program in specific desktop environments. The Show part should be read as Run in when .desktop files are in
The D-Bus can also launch programs automatically and it does so in a whole lot of cases. Preventing programs from being launched by D-Bus is a whole other ordeal. There is no way to make D-Bus launch or not launch programs depending on what desktop environment is being used or other factors.
The KDE Plasma desktop environment comes with a lot of software that, annoyingly, gets launched by D-Bus. The simplest way to prevent D-Bus from launching something is to eradicate whatever
.service file is responsible from
The D-Bus/systemd files can be controlled by systemd's systemctl utility, but it's a mess. You can, for example, prevent
/usr/share/dbus-1/services/org.kde.kglobalaccel.service from being launched by running:
systemctl --user mask 'dbus\x2d:1.2\x2dorg.kde.kglobalaccel.slice'
Why you would need to pre-fix it with
dbus\x2d:1.2\x2 or end it with
.slice is anyone's guess. The simpler solution is to just remove the
.service file or uninstall the program it belongs to.