I ran into a weird issue on Arch Linux. Every time I opened a Zoom meeting link, instead of opening in my regular Chrome (with all my tabs, extensions, and logged-in accounts), it would launch a completely fresh Chrome window with default settings. Like a brand new Chrome that had never been used before.
Understanding the Problem
On Linux, you can install apps in different ways. Two common ways are:
- System packages - installed via your package manager (
pacmanon Arch). These live in/usr/bin/. - Flatpak - a sandboxed way to install apps. These run in isolation and store their data in
~/.var/app/.
What Is Flatpak?
Flatpak is a way to install and run apps on Linux that works across all distributions (Arch, Ubuntu, Fedora, etc.). Think of it like an app store for Linux.
The key idea is sandboxing. When you install Chrome via pacman, it has access to your entire system like any other program. But when you install Chrome via Flatpak, it runs inside its own little bubble. It gets its own separate space for storing data (~/.var/app/com.google.Chrome/ instead of ~/.config/google-chrome/), and it can only access parts of your system that you explicitly allow.
This has some benefits:
- Works everywhere — the same Flatpak app works on any Linux distro without modification.
- Isolation — apps can’t mess with each other or your system easily.
- Easy updates — Flatpak apps update independently of your system packages.
But as we saw in this post, it also means a Flatpak app and a system-installed app are completely separate, even if they’re the same program. They don’t share settings, profiles, or data.
Without realizing it, I had two separate Chrome installations:
- Flatpak Chrome (v147) - the one I actually used every day, with all my bookmarks, extensions, and logged-in sessions.
- System Chrome (v143) - installed via
pacman, sitting unused with a blank default profile.
What Is xdg-settings?
On Linux, when any app (like Zoom) wants to open a URL, it doesn’t hardcode which browser to use. Instead, it asks the system: “What’s the default browser?” This is handled by a tool called xdg-open, and the default browser is configured via xdg-settings.
You can check your default browser with:
xdg-settings get default-web-browser
In my case, this returned:
google-chrome.desktop
That .desktop file pointed to /usr/bin/google-chrome-stable — the system Chrome, not my Flatpak one.
What Is a .desktop File?
A .desktop file is like a shortcut on Linux. It tells the system how to launch an app. Each Chrome installation has its own:
google-chrome.desktop→ launches/usr/bin/google-chrome-stable(system)com.google.Chrome.desktop→ launches the Flatpak Chrome
When Zoom opened a link, the system looked at the default (google-chrome.desktop), launched system Chrome, and that’s why I got a blank Chrome window every time.
The Fix
Step 1: Set the Flatpak Chrome as the default browser:
xdg-settings set default-web-browser com.google.Chrome.desktop
Step 2: Verify it:
xdg-settings get default-web-browser
# com.google.Chrome.desktop
Step 3: Since nothing depended on the system Chrome, I removed it:
# check if any package depends on it
pacman -Qi google-chrome | grep 'Required By'
# Required By : None
# safe to remove
sudo pacman -R google-chrome
How to Debug This Yourself
If you ever face a similar issue where the “wrong” browser opens, here’s a quick checklist:
- Check the default browser:
xdg-settings get default-web-browser - Check what’s actually running:
ps aux | grep chrome— look at the binary path to see which installation is active. - List available
.desktopfiles:ls /usr/share/applications/*chrom*and check Flatpak exports under/var/lib/flatpak/exports/share/applications/. - Check MIME handlers:
cat ~/.config/mimeapps.list— this file maps URL schemes (http,https) to.desktopfiles. - Set the correct default:
xdg-settings set default-web-browser <correct-desktop-file>
The core lesson: on Linux, having the same app installed via multiple methods (system package + Flatpak + Snap) can cause subtle issues like this. It’s worth checking if you have duplicate installations.
This issue was diagnosed and fixed with the help of Claude, and this blog post was also written by it.

