---
title: "Making CoolerControl's GUI start on login"
date: 2026-05-03
tags: [linux, coolercontrol, hardware, bazzite, kde, plasma, troubleshooting]
summary: CoolerControl ships a system daemon and a separate Qt GUI. The daemon controls fans at boot regardless of login, but the rpm doesn't install an autostart .desktop for the GUI, so the tray icon never appears. Drop one in `~/.config/autostart/` (or use Plasma's System Settings → Autostart) to fix it.
aliases: [coolercontrol-autostart, coolercontrol-gui-autostart, coolercontrol-tray-autostart]
---

CoolerControl is two binaries: a system daemon (`coolercontrold`) and a Qt GUI client (`coolercontrol`). The daemon does the actual work (pump curves, fan curves, temperature monitoring), and the rpm enables it as a systemd service, so cooling stays correct at boot whether you log in or not. The GUI is just a viewer for the daemon's API plus the configuration UI.

When you reboot and there's no tray icon, your fans are still being controlled. You're missing a UI, not a fan curve. But you'll still want it back.

Notes below are written for KDE Plasma (the default Bazzite spin) on Wayland. GNOME-specific deltas are called out where they matter.

## Why it doesn't autostart

The Fedora rpm (`coolercontrol-4.2.0-1.fc44.x86_64` at the time of writing) installs:

- `/usr/lib/systemd/system/coolercontrold.service`, the daemon, enabled by default.
- `/usr/share/applications/org.coolercontrol.CoolerControl.desktop`, a launcher entry for the apps menu.

What's missing: no `/etc/xdg/autostart/coolercontrol.desktop`, and the package doesn't drop anything into `~/.config/autostart/` on first run either. The entry under `applications/` puts CoolerControl in your apps menu. XDG autostart loaders don't look there.

Different from [[kopia-flatpak-autostart]], where an in-app toggle exists but silently writes into a sandboxed config dir. Here there's no toggle that writes a .desktop file at all; the package just doesn't ship autostart.

## Fix (Plasma, click path)

If you'd rather not edit dotfiles: *System Settings → Autostart → Add → Add Application → CoolerControl → OK*. Plasma writes a `.desktop` under `~/.config/autostart/` for you and applies it on the next session start.

## Fix (any DE, file path)

Drop a minimal autostart entry on the host:

```ini
# ~/.config/autostart/coolercontrol.desktop
[Desktop Entry]
Type=Application
Name=CoolerControl
Comment=Monitor and control your cooling device
Exec=coolercontrol
Icon=org.coolercontrol.CoolerControl
Terminal=false
StartupNotify=false
X-GNOME-Autostart-enabled=true
```

Plasma needs nothing more than a valid XDG `.desktop` file in `~/.config/autostart/`. Its session manager honours the freedesktop spec directly. The `X-GNOME-Autostart-enabled=true` line is a GNOME-specific extension; Plasma ignores it, but leaving it in keeps the file portable if you ever switch DE or copy it to another machine.

Verify after a reboot:

```bash
pgrep -af coolercontrol
```

You should see two processes: `coolercontrold` under the system slice (the daemon) and `coolercontrol` under your user session (the GUI).

## Get it to start in the tray

By default the GUI opens its main window on launch, which is annoying as an autostart. There's no `--start-in-tray` CLI flag despite forum threads claiming there is. `coolercontrol --help` lists `-h`, `-v`, `-d`, `--full-debug`, `--disable-gpu`, `--chromium-flags`, `--clear-cache`. That's it.

Tray-on-launch is a setting inside the app: *Settings → Start in Tray*. Enable it once with the GUI open, then future autostarts come up minimised to the system tray.

Plasma's tray shows the CoolerControl icon out of the box (StatusNotifierItem support is native). GNOME needs the **AppIndicator and KStatusNotifierItem Support** extension. Without it, the GUI is running but invisible: no main window, no tray icon, just a process you can only see in `pgrep`.

## When it still doesn't work

- **Daemon isn't running.** `systemctl status coolercontrold.service`. If it's disabled, `sudo systemctl enable --now coolercontrold.service`. The GUI will sit at "Connecting to daemon" forever without it.
- **GUI launches but pegs at "Connecting to daemon" with the daemon up.** The daemon listens on `127.0.0.1:11987` over HTTPS with a self-signed cert. If you've tightened the local firewall or replaced the cert, that's where to start.
- **Wayland session, GUI window flashes on login then closes.** Check `journalctl --user -b | grep -i coolercontrol`. Usually a Qt platform plugin or GPU acceleration issue. Add `--disable-gpu` to the `Exec=` line as a workaround.
- **Plasma's *System Settings → Autostart* lists the entry but it doesn't run.** Check perms on the desktop file. It must be readable by your user. `chmod 644 ~/.config/autostart/coolercontrol.desktop`. Same applies to GNOME's *Tweaks → Startup Applications*.

## Why not just the system desktop file

You might be tempted to copy `/usr/share/applications/org.coolercontrol.CoolerControl.desktop` into `/etc/xdg/autostart/`. Don't, on Bazzite or any other rpm-ostree atomic system: `/etc` is layered, but `/usr` is read-only and gets rebuilt on every rebase. A user-level autostart entry under `~/.config/autostart/` survives both system updates and rebases, and doesn't need root.

## Related

- [[kopia-flatpak-autostart]]. Same family of "Linux desktop autostart is annoying" problem, different root cause: Flatpak sandbox vs missing package autostart entry.
- [[bazzite-overview]]. Why this matters more on immutable Fedora: `/usr/share/applications/` is read-only, so you can't fix this by editing the system desktop file.
- [[flatpak-1password-browser-bridge]]. Another sandbox/permissions wrinkle in the same family of desktop-Linux papercuts.

## References

- [CoolerControl documentation](https://docs.coolercontrol.org/)
- [XDG Autostart specification](https://specifications.freedesktop.org/autostart-spec/autostart-spec-latest.html)
- [CoolerControl GitLab repository](https://gitlab.com/coolercontrol/coolercontrol)
