DEV Community

Cover image for I installed Bottles twice on Arch to settle the Flatpak vs AUR question
Abdullah Musa
Abdullah Musa

Posted on Originally published at musabase.com

I installed Bottles twice on Arch to settle the Flatpak vs AUR question

Steam on Linux is a solved problem. Proton handles it, and most of your library just works.

Everything else is where people give up and keep a Windows partition around. Six years of Epic freebies you claimed and never opened. GOG classics. That one .exe sitting on an old drive. Bottles handles all of it, and the install takes one command.

The catch is that there are two commands, and the one you pick decides how much configuration you do afterwards. I ran both on the same machine, so here's the comparison instead of a coin flip.

The two paths

# AUR
yay -S bottles

# Flatpak
flatpak install flathub com.usebottles.bottles
Enter fullscreen mode Exit fullscreen mode

Both give you working Bottles. They don't conflict, and you can genuinely have both installed, which is how I ended up with two entries in my application menu.

AUR Flatpak
Integration Native system libraries and GPU drivers Sandboxed, bundled dependencies
Permissions Nothing to configure Flatseal, manually, per folder
GPU drivers Uses your system Vulkan and Mesa directly Needs runtime extensions installed
Game drives Sees them Can't see them until you say so
Isolation None Full sandbox

What the sandbox actually costs

This is the part most guides skip, and it's three extra things.

Flatseal, or Bottles can't see your games. A sandboxed app can't read outside its sandbox, so your second drive full of Windows games is invisible. You grant access per folder with Flatseal. You can tick "All system files" instead, and it works, but that hands any game you run access to your entire system, which is the exact thing the sandbox existed to prevent. Grant the folders you need.

You also need "All devices" on, which isn't obvious. Games want GPU acceleration, shared memory and input devices. Without it they'll launch and then run badly, or not see your controller.

GPU runtime extensions, or things render wrong. The Flatpak build doesn't inherit your full graphics stack. Wine and most Windows games still want 32-bit graphics libraries:

flatpak install flathub org.freedesktop.Platform.GL.default
flatpak install flathub org.freedesktop.Platform.GL32.default
Enter fullscreen mode Exit fullscreen mode

The 32-bit one is the one people forget. NVIDIA usually matches the host driver automatically, so you shouldn't need to do this by hand there.

MangoHud separately, if you want an overlay. The Monitor Performance toggle in Bottles sits greyed out until the Flatpak layer exists:

flatpak install flathub org.freedesktop.Platform.VulkanLayer.MangoHud
Enter fullscreen mode Exit fullscreen mode

None of this is hard. It's just three steps the AUR build doesn't ask for, which is why I'd tell most Arch users to run yay -S bottles and move on. Take Flatpak if you specifically want the isolation, and know you're paying for it in setup.

The part that's genuinely easy

Once Bottles is running, the workflow is short. Create a bottle, name it, pick Gaming as the purpose, leave the runner on Soda, click Create. Bottles pulls DXVK, VKD3D and the rest itself.

For Epic: open the bottle, Install Programs, pick Epic Games Store, Start Installation. Two to five minutes. It then appears in Programs with a play button, and the launcher behaves like it does on Windows, updates, login and all. GOG works the same way through the same installer list.

For a loose .exe, including games already installed on a Windows drive: Programs, Add Shortcuts, browse to the executable, done. No install step at all.

The trick worth stealing

I wanted Need for Speed Most Wanted 2005 at 1080p. It officially caps at 720p, and the usual fix is a widescreen mod, which doesn't reliably work through Wine because the mod's hook DLL never gets loaded.

Need for Speed Most Wanted 2005, running on Linux at 1080p

Bottles has this built in. Open the bottle, Compatibility, DLL Overrides, type dinput8, save.

That tells the bottle to prefer the mod's DLL over Wine's built-in one, and the mod starts working. It's a two-second fix that applies to a lot of older games, since dinput8 is what a large share of mods hook into.

When something won't launch

Working order, cheapest first:

  1. Permissions, if you're on Flatpak. It's the most common cause and the easiest to miss.
  2. Switch the runner. Settings, Components, Runner. Soda is the default, but a different Proton or Wine build ships different patches, DXVK versions and game-specific fixes. ProtonUp-Qt installs GE-Proton into Bottles the same way it does for Steam.
  3. DLL overrides, as above.
  4. ProtonDB, for anything game-specific other people already solved. And restart Bottles fully after changing permissions or runners. Some changes don't take effect until you do.

What this doesn't fix

Kernel-level anti-cheat. Valorant, Call of Duty and similar titles won't run through Bottles, Proton, or anything else, because the studios haven't enabled Linux support in their anti-cheat. That's a decision, not a technical wall, but it's not one you can work around from your end.

The full walkthrough

Everything above with screenshots of each step, the Flatseal settings in detail, Epic sign-in, the GOG notes and a longer FAQ is on my site: Run Non-Steam Games on Arch Linux with Bottles.

It's part 2 of a series. Part 1 covers Steam and Proton, part 3 goes into plain Wine, and the Linux Gaming Roadmap indexes the lot.

If you went the Flatpak route and hit something I didn't, especially on NVIDIA, I'd like to hear it in the comments.

Originally published on MusaBase.

Top comments (0)