Memory shards

Do something lively!

When I switched to GNU/Linux one year ago, I followed a bunch of guides to install my favorite games on my system. Most of them were easy to install thanks to Proton and Steam. But some needed to be ran under Wine. While some guides recommended to its CLI and Winetricks, others recommended to use PlayOnLinux or Lutris as front-ends. In this article, we’re going to use Bottles.

Note: this article is a modified version of the guide I wrote for the Visual Novel Wiki.

Description

Bottles is free and open source software that uses environments to help you easily manage and run Windows apps on Linux. It’s a front-end for Wine to manage Windows environments, called “prefixes” or “bottles”, and their dependencies. It also supports configuration backup to easily replicate a Windows environment.

Installation

If you’re on an Arch-based distribution, you can install Bottles from the AUR (this version isn’t officially supported by the Bottles developers).

yay -S bottles

For other distributions, install the Flatpak version.

flatpak install flathub com.usebottles.bottles

I also recommend to install Wine and its dependencies as they can help to run some games. On Arch Linux, run pacman -S wine-staging. On other distributions, follow the official instructions.

Usage

Setting up components

Once Bottles has been installed, run it, click on the 3 dots in the menu bar then go to the “runners” tab. You’ll have to choose which Wine version you’re going to use by default. You can also go to the “DLL components” tab to choose. I recommend “Caffe 7.7” as the default runner and “DXVK 2.1” as the default DXVK version.

Creating a bottle

On the main menu, click on the plus sign icon, choose a name for your bottle, a preset, a runner and click on “Create”.

Note: if you installed the Wine package from your distribution package manager, it will be available as a runner under “system”.

Importing a custom configuration

Important: don’t import the configuration file from the bottle creation menu. It’s broken for now as it doesn’t keep the name of the bottle, its env variables or its runner. Only it dependencies seem to be imported so you’d have to configure the rest manually. To avoid this, read the following.

Click on the 3 dots in the menu bar and choose “Import”. In the new menu, click on the “Send” icon, click on the “Configuration” option and choose your YAML configuration to import. Once the import has started, cancel the Wine mono installation, go through installers when prompted and wait for the import to finish (it can take some time, a message will appear when it’s done). When the import is finished, go back to the main menu and go into your bottle. From there, you can change its name and some other settings.

Installing games

Once you created your bottle manually or imported a configuration, you can add files to the bottle directory.

For archived games, unzip then into “Program Files”, under the “drive_c” directory. Now, go back into your bottle settings and click on “Add shortcuts…” and click on the 3 dots next to it to add a desktop entry. You can also rename the shortcut before doing that

For games coming with an installer, just copy the executable inside your bottle path, go into its settings and click on “Run executable…” before creating shortcuts. For ISO files, you can extract their contents or just run the executable from the mounted point.

Gamescope support

Install the gamescope package for your distribution, go into your bottle settings and enable “Gamescope” option in the “Display” section. You can configure Gamescope from Bottles using the gear icon.

Note: Nvidia users will have to enable Direct Rendering Manager kernel mode setting to use it.

Mangohud support

Install the mangohud package for your distribution, go into your bottle settings and enable “Monitor Performance” option in the “Performance section”

Common issues

Note: to avoid conflicts between game configurations, you should create a bottle per game (by importing a configuration file multiple times).

Delete a bottle

Click on the 3 dots in the menu bar on the bottle configuration page and choose “Delete Bottle…”.

Windows theme

You can change the theme by editing the registry using the registry editor under “Tools”, in your bottle settings. From there, you can import a registry file like this one to change the theme to a more modern one. It also changes some elements like the windows top border or the desktop background to black.

Note: runners usually come with a similar theme by default.

Japanese Locale

Some visual novels require Japanese locale, like untranslated games or fan translations. First, configure the locale:

Then, in your bottle, add these 2 environment variables under the “Environment Variables” setting:

Fonts

Install the Windows Japanese Fonts in your bottle.

MIDI support

  1. Install timidity on your system
  2. Install a sound font
  3. Add timidity -iA -B2,8 -Os -EFreverb=0 & %command%; pkill -f timidity as a launch command in your executable settings

Window manager

Some Window managers can mess with the game window. If you encounter this kind of issue try to configure “Virtual Desktop” in your bottle settings, under “Display” and “Advanced Display Settings” (don’t forget to set the resolution). You can also disable “Allow the window manager to decorate the windows” and “Allow the window manager to control the windows” in winecfg (“Legacy Wine Tools > Configuration” in your bottle).

Videos flickering

Press Alt+F4 and keep the focus on the small confirmation window during the movie playblack (you can move it to the side of your screen).

Videos not playing

Try both of these fixes.

Black screen when switching to fullscreen mode

Changing your renderer to “GDI” in your bottle settings, under “Display” and “Advanced Display Settings”, can solve this issue.

Audio crackling

If you use PulseAudio, add this environment variable to your bottle settings: Variable name: PULSE_LATENCY_MSEC and value: 60

Performances issues and in-game crashes

Some dependencies related to your GPU could be missing. On Arch Linux, try one these:

Winetricks isn’t available in Bottles

Bottles doesn’t use Winetricks to manage its dependencies. Some of them are missing compared to Winetricks but you can still install them manually or use some scripts do that you like this one. Otherwise, here’s a list of common dependencies you can install through Bottles:

Game runs at a really high framerate

Some old games can have a hard time running on modern CPUs which have multiple cores. They can crash or run a really high framerate which could cause physics issue or increase its running speed. To work around that, you could add taskset -c 0 %command% as a launch command in your executable shortcut settings, to only use the first core of your CPU.

You could also limit FPS with Mangohud.

MANGOHUD=1 MANGOHUD_CONFIG=no_display,fps_limit=60 DXVK_HUD=1
MANGOHUD_CONFIG=no_display,fps_limit=30,vsync=3,gl_vsync=1 mangohud --dlsym %command%

Interesting Wine versions.

Other game specific tweaks

Some games will need a particular configuration. You can check out AppDB or ProtonDB, which despite its name can be quite useful in our case).

You can also try to change the runner or the DXVK version if you still have issues.

Sources

If you spot any mistakes or if you have a suggestion about this guide, please contact me.

See you again, have a nice day!