It is nice to have the desktop automatically change its theme from light to dark at sunset. Most applications work by default without further action in Fedora Kinoite. However Android Studio despite supporting light & dark themes for ages did not offer the option to automatically change the theme in Linux until very recently.
After enabling the “Sync with OS” setting unfortunately nothing happened. Not even a restart of the application changed the theme. Guess Linux is still Linux where everything needs a bit of dedication to properly work.
So digging into the topic it is (what else!) a Flatpak permissions issue. The dbus communication is not going through between the system and the application. After enabling the permissions I managed to get Android Studio to read the current theme on launch. But this was just a dead end as the automatic switching was still not working, I had to restart Android Studio to pick the switched theme which was not great for the workflow.
After some time scouting sources of both Android Studio (really IntelliJ IDEA by JetBrains) and the application’s Flathub repo, the culprit was found. Android Studio itself is working fine as on a non-atomic system not using the Flatpak version there is no problem. The issue was in the Flatpak’s environment that missed a specific component, namely dbus-tools. Inside this module the command dbus-monitor is found and this is missing from the current Flathub build.
The dbus-monitor is used to do exactly as its name states, it monitors the dbus for changes (signals) and this is what Android Studio uses to get the “color-scheme” parameter from the system. If this command cannot be executed it just dies silently and automatic theme change will not work. In a non-atomic system dbus-tools is part of the core system but Flatpaks run in a bare-bones environment and in this case the module is not included.
To confirm this hypothesis I created my own Flatpak including dbus-tools:
{
"name": "dbus-tools",
"buildsystem": "meson",
"config-opts": [
"-Dtools=true",
"-Dmessage_bus=false",
"-Dsystemd=disabled",
"-Dx11_autolaunch=disabled"
],
"sources": [
{
"type": "archive",
"url": "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz",
"sha256": "0ba2a1a4b16afe7bceb2c07e9ce99a8c2c3508e5dec290dbb643384bd6beb7e2"
}
]
},
...
There are a few more tweaks that are not relevant for the case in question but are just to get the Flatpak built with less overhead:
$ cat com.google.AndroidStudio.Test.json
{
"id": "com.google.AndroidStudio.Test",
"runtime": "org.freedesktop.Sdk",
"runtime-version": "25.08",
"sdk": "org.freedesktop.Sdk",
"command": "android-studio-wrapper",
"finish-args": [
"--socket=x11",
"--socket=pulseaudio",
"--socket=ssh-auth",
"--socket=gpg-agent",
"--share=ipc",
"--share=network",
"--device=all",
"--filesystem=home",
"--allow=multiarch",
"--env=JAVA_HOME=/app/extra/jbr",
"--talk-name=org.freedesktop.Notifications",
"--talk-name=org.freedesktop.secrets"
],
"modules": [
{
"name": "dbus-tools",
"buildsystem": "meson",
"config-opts": [
"-Dtools=true",
"-Dmessage_bus=false",
"-Dsystemd=disabled",
"-Dx11_autolaunch=disabled"
],
"sources": [
{
"type": "archive",
"url": "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz",
"sha256": "0ba2a1a4b16afe7bceb2c07e9ce99a8c2c3508e5dec290dbb643384bd6beb7e2"
}
]
},
{
"name": "android-studio",
"buildsystem": "simple",
"build-commands": [
"install -D -t ${FLATPAK_DEST}/bin/ apply_extra android-studio-wrapper",
"echo '[Desktop Entry]' > test.desktop",
"echo 'Type=Application' >> test.desktop",
"echo 'Name=Android Studio Test' >> test.desktop",
"echo 'Exec=android-studio-wrapper' >> test.desktop",
"echo 'Icon=com.google.AndroidStudio.Test' >> test.desktop",
"echo 'Categories=Development;IDE;' >> test.desktop",
"install -Dm644 test.desktop ${FLATPAK_DEST}/share/applications/${FLATPAK_ID}.desktop",
"echo '<?xml version=\"1.0\" encoding=\"UTF-8\"?>' > test.metainfo.xml",
"echo '<component type=\"desktop-application\">' >> test.metainfo.xml",
"echo ' <id>com.google.AndroidStudio.Test</id>' >> test.metainfo.xml",
"echo ' <metadata_license>CC0-1.0</metadata_license>' >> test.metainfo.xml",
"echo ' <project_license>Apache-2.0</project_license>' >> test.metainfo.xml",
"echo ' <name>Android Studio Test</name>' >> test.metainfo.xml",
"echo ' <summary>Test Build</summary>' >> test.metainfo.xml",
"echo ' <description><p>Testing theme switching configuration.</p></description>' >> test.metainfo.xml",
"echo ' <launchable type=\"desktop-id\">com.google.AndroidStudio.Test.desktop</launchable>' >> test.metainfo.xml",
"echo '</component>' >> test.metainfo.xml",
"install -Dm644 test.metainfo.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.metainfo.xml",
"echo \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'><rect width='10' height='10' fill='purple'/></svg>\" > test.svg",
"install -Dm644 test.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/${FLATPAK_ID}.svg"
],
"sources": [
{
"type": "extra-data",
"filename": "android-studio.tar.gz",
"size": 1541218005,
"only-arches": [
"x86_64"
],
"url": "https://dl.google.com/dl/android/studio/ide-zips/2026.1.2.10/android-studio-quail2-linux.tar.gz",
"sha256": "64445a54092e7056c6eb7f1a89ad116d0feec2ef5f965b8e594d62abdb58590f"
},
{
"type": "script",
"dest-filename": "apply_extra",
"commands": [
"tar xzf android-studio.tar.gz --strip-components=1",
"rm -f android-studio.tar.gz"
]
},
{
"type": "script",
"dest-filename": "android-studio-wrapper",
"commands": [
"/app/extra/bin/studio $@"
]
}
]
}
]
}
Then you install flatpak-builder, build your custom Flatpak and when finalised you can test it out:
$ sudo dnf -y install flatpak-builder git
$ flatpak-builder --user --install --force-clean --disable-rofiles-fuse build-dir com.google.AndroidStudio.Test.json
$ flatpak run --command=dbus-monitor com.google.AndroidStudio.Test
If the last command displays content it means dbus-monitor is now part of your Flatpak’s environment and you can safely launch the full appplication:
$ flatpak run com.google.AndroidStudio.Test
I ran all inside a toolbx so that I can get rid of it again easily. Also it should not affect your existing Flathub Android Studio installation, it is a completely parallel Flatpak (com.google.AndroidStudio.Test).
Now the best moment comes, going into Settings>Appearance and enabling “Sync with OS“. Immediately Android Studio should change its theme to the system one. An easy way to change your theme if you have sunrise & sunset as triggers, is to simply change your location in the KDE Plasma settings e.g. to the other side of the planet, then you can quickly revert back and forth.
As this is only a personal solution I have also created an issue at the Flathub repo so hopefully we will soon see this Android Studio Flatpak correctly switching light to dark themes and viceversa automatically for everyone.
