The most common reason to dual boot Linux with Windows OS is Games! Linux is great, but it sucks on Games support. Not just games, some propriety software from Adobe and Microsoft still lacks Linux support. Thankfully, there are a few software exists to run Windows applications and games on Linux. Some notable applications are CrossOver, PlayonLinux, Lutris, and Wine etc. In this guide, we will discuss about yet another similar application called Bottles, which allows us to run Windows software on Linux.
Table of Contents
What is Bottles?
Bottles is a free, open source graphical application to manage Wine prefixes in a new way. Using Bottles, we can easily run Windows software and Games on Linux operating systems.
You can run all windows executables such as .bat
, .exe
, and .msi
in Bottles. It will automatically detect all installed applications. No need to manually add to the programs list!
Isn't it similar to PlayonLinux/Lutris/Winetricks? You might wonder.
Yes, Bottles is similar to PlayonLinux and Lutris, but better. It is little more polished application than its counterparts and has a few extra features and a nice UI.
Of course, Lutris can also effectively manage the wine prefixes. As far as I observed, Lutris is a game manager (not just for Windows games), while Bottles is a GUI wrapper for wine to run and manage Wine prefixes, where Windows software can run (games or not).
Let us discuss a few features of Bottles.
1. Bottles environments
Bottle introduces a concept of Environments. The Bottles Environments are nothing but a bundle of ready-to-use configuration settings, libraries and dependencies that helps us to smoothly run Windows apps and games on a Linux PC.
You can create bottles based on the environment. Currently, Bottles offers three Environments:
- Gaming (for games),
- Software (for Windows apps),
- and Custom (make your own custom environment).
2. Manage multiple windows prefixes
Managing multiple Wine prefixes can be a pain, and is time consuming task. Thanks to Bottles application, it simplifies the process for day to day use. You can create different prefixes for different applications if you want, called different "bottles".
3. Built-in dependency manager and Task manager
As you already know, each Windows application requires one or more dependencies to work properly.
Fortunately, Bottles ships with an integrated dependency manager. The dependency manager will automatically installs the dependencies required by a windows app or a game.
And Bottles application comes with a built-in Task manager to monitor all wine processes.
4. Customization
Bottles is highly customizable. You can tweak your Windows environment as you please. You can choose and use various runners and optimizations such as dxvk, vkd3d, gamemode, esync, fsync etc., for better gaming performance.
There are two types of runners in Bottles. They are:
- Wine
- Proton.
Automatic installation and management of Wine and Proton runners is supported. You can also change the runner for any Bottle on the fly!
It checks runner updates for each Bottles and automatically repair Bottles in case of breakage.
Heads Up:
The runners are compatibility layers which allows Windows software to be installed and run on Linux systems. Bottles are environments where the runner configures the system and where the Windows runs and is installed.
5. Restore Bottles to previous version
The yet another notable feature of Bottles application is Versioning. The features allows the users to easily restore Bottles to previous working state when something goes wrong!
6. Configuring Bottles is easy!
Sometimes I find it little difficult to manage the prefix itself in Lutris, because all the configuration is pretty decentralized. Bottles is really good for running general applications, especially because you don't usually NEED advanced configuration for them.
7. Bottles are sandboxed
Running Windows applications with Bottles is safe! Bottles are fully isolated from the rest of the operating system. The files can not access your Linux operating system's HOME directory.
For now, Bottles Flatpak package version is only fully-sandboxed! The other versions provides partial sandbox support.
8. Backup Bottles
We can backup and import bottles from older version and also from other managers such as Lutris, PlayonLinux etc.
Install Bottles in Linux
Bottles is available as Flatpak, AppImage, Snap, AUR, and on system package managers.
1. Install Bottles using Flatpak
The officially recommended way to install Bottles is using Flatpak. Because Flatpak is the only version that supports full-sandboxed version.
Many recent Linux distributions comes with Flatpak pre-installed Just in case, if Flatpak is not available on your Linux machine, you can install Flatpak as described in the following link.
After installing Flatpak, run the following command to install Bottles using Flatpak:
$ flatpak install flathub com.usebottles.bottles
2. Install Bottles from AUR
If you're running Arch Linux and its variants like EndeavourOS, Manjaro Linux, you cna install Bottles from AUR using Paru or Yay AUR helpers.
$ paru -S bottles
Or,
$ yay -S bottles
If you want to install unofficial latest build, run:
$ paru -S bottles-git
Or,
$ yay -S bottles-git
3. Install Bottles using package manager
Bottles is packaged for a few Linux distributions and is available in the default repositories.
To install Bottles in Fedora, run:
$ dnf install bottles
Install Bottles in Void Linux:
$ nix-env -iA nixos.bottles
To install Bottles on openSUSE Tumbleweed, run the following as root
user:
# zypper addrepo https://download.opensuse.org/repositories/games:tools/openSUSE_Tumbleweed/games:tools.repo # zypper refresh # zypper install bottles
For openSUSE Leap 15.2, run the following as root
:
# zypper addrepo https://download.opensuse.org/repositories/games:tools/openSUSE_Leap_15.2/games:tools.repo # zypper refresh # zypper install bottles
Run Windows Software On Linux With Bottles
Launch Bottles from Application launcher or Menu.
At the first run, you will be taken on a welcome tour to know how to configure and use Bottles. Click Next to continue.
Once the key concepts of Bottles are introduced, you will be prompted to download and install a Runner which allows you to create your own Bottles. This is one time operation. You can use the same runner for all bottles.
Click Install button to download and install runner.
After the runner is downloaded and installed, you will see a successful message. Click the Close button.
1. Create a new Bottle
Bottles makes running Windows software and games on Linux much easier! Click "Create a new Bottle" button.
In the next window, enter a name to your Bottle and choose the type of the Environment (i.e. Gaming, Application or Custom) and click Create.
The new Bottle is being created. It will a take a moment to update the Wine configuration.
Congratulations! A Bottle named "Ostechnix" is just created. Click Close button.
Similarly, you can create as many as Bottles as you want. The list of available Bottles are shown in the main window.
2. View Bottle information
Click on the Bottle to view the complete details.
As you can see in the below screenshot, there are 6 sections in a Bottle environment. They are:
- Details & Utilities
- Preferences
- Dependencies
- Programs
- Versioning
- Task manager
2.1. Details & Utilities
As the name implies, this section displays the details of the Bottle and the list of installed utilities under this Bottle environment.
Just click on the any utility to run it. for example, I am going to click "Command line" utility.
Now you can run any Windows commands inside the Bottle.
If a you want to run a new Windows executable that is not available here, just click on the "Run executable" button on the top and choose the executable location from the local drive.
On the top right hand of the window, you will see a couple of icons. You can do the following operations by clicking on a respective icon.
- Display Flatpak and Bottle help
- Destroy this Bottle
- Make a backup of this Bottle
- Kill all WINE processes
- Reboot or Shutdown the Bottle environment.
2.2. Preferences
Under the Preferences section, you can tweak and optimize various settings related to Graphics, System and Audio. depending upon the type of Bottle environment some settings are enabled or disabled by default.
The following optimizations can be done in this section.
- Use DXVK
- Use VKD3D
- Enable DLSS
- Enable FSR
- Discrete GPU
- Enable Virtual desktop
- Capture mouse in full screen
- Change type of runner, runner version, DXVK version, VKD3D version, Windows OS version etc.
- Change working directory (Default is Bottles path)
- Enable Gamemode
- Enable Gamescope
- Reduce Pulseaudio latency
- Set environment variables
- And more.
2.3. Dependencies
In this section, you will find the list of installed and non-installed dependencies, fonts and libraries that helps the Windows software to run smoothly.
You can install or remove the required dependencies of your choice from this section.
2.4. Programs
In this section, you will find all installed programs. Bottles will automatically find and add the installed programs in the section. You don't need to manually do it.
2.5. Versioning
Bottles has a feature called Versioning. You can create a restore point(s) in working state. When something goes wrong, you can safely switch back to previous working state in one click. It is quite useful for those who test multiple configurations.
At the first run, there won't be any restore point. You need to create a new one by clicking on the + (plus) sign on the top bar. Enter a short, descriptive name for the restore point.
When there is an issue, just choose the restore point and click Restore (a small circle icon) button.
2.6. Task manager
This section allows you to monitor all wine processes. In this section, you will find the PID of the processes, process name, threads and parent process. You can also stop any running process from here.
3. Run Windows executable files in Bottle
Go to the Bottles main window and click the small circle icon next to the Bottle.
You can also click on the Bottle and choose "Run executable" button under the Details & Utilities window.
Choose the executable file (.exe
, .msi
, .bat
) from your local drive.
Alternatively, you can simply right click on the executable file and click "Open with Bottles" option.
The executable file will run now in the Bottle. Continue the installation steps and finish it.
Once the application is installed, it will be automatically added under the "Details & Utilities" and "Programs" sections.
You can launch the installed programs from either section. Just click play icon next to the application name to run the respective application.
Uninstall programs
Click on a Bottle to open its details window and click Uninstaller option.
Choose the program that you want to remove and click "Modify/Remove" button to uninstall it.
Where can I find the files in a Bottle?
Starting from Bottles 2021.10.14 version, the user directory path is fully sandboxed. Meaning - the Bottles files are completely isolated from the rest of the system files. This is why the users are encouraged to install the Flatpak version.
You can find all the Bottles in the following directory in your Linux system.
$ ls ~/.var/app/com.usebottles.bottles/data/bottles/bottles
A separate folder will be created for each Bottle you create.
If you go down further into a specific Bottle folder, and you will find a directory named "drive_c
". This is where the user's personal home directory exists.
$ ls ~/.var/app/com.usebottles.bottles/data/bottles/bottles/Ostechnix/ bottle.yml dosdevices drive_c states system.reg userdef.reg user.reg
Each user has a personal home directory (/home/your_username
). This is the place where you can store your personal files, like videos, photos or documents.
$ ls ~/.var/app/com.usebottles.bottles/data/bottles/bottles/Ostechnix/drive_c/users/ostechnix/ AppData Contacts Desktop Documents Downloads Favorites Links Music Pictures 'Saved Games' Searches Temp Videos
Change Bottles path
By default, all your Bottles files are saved in ~/.var/app/com.usebottles.bottles/data/bottles/bottles
directory.
If you want to change this path, click the three horizontal dots on the top right corner of the Bottles main window and then choose "Preferences" option.
Click the "Custom bottles path" icon under the Advanced section and then choose your desired path for the Bottles files.
Import/Export Bottles
From the Bottles main window, click the three horizontal dots on the top right corner. Click "Import/Export" option from drop down menu.
Next choose whether you want to import just the bottle configuration (without personal files) or full archive of your bottle including all personal files.
Select the file location from your local path to import the Bottles.
Conclusion
In this tutorial, we discussed what is Bottles, how to install Bottles in Linux and how to run windows software with Bottles in Linux operating systems. We also looked at the steps to import Bottles and change the default path of Bottles application.
I have been using Bottles for a couple days. I recommend Bottles for those who wants a simple graphical application to manage and run Windows apps on Linux with ease.
As fast as I tested, Bottles works just fine for simple Windows Apps. Unfortunately, it doesn't work well for some bigger programs like MS Office. I hope the developers will add support for more apps in the upcoming versions.
Resources:
10 comments
“Linux is great, but it sucks on Games support.”
Not really. Linux supports games really well. It’s for everything needed for games to run really well, and there are some great games that work wonderfully on Linux.
It would be more accurate to say that game developers suck on Linux support. That’s the real problem.
This bottles thing is a solution to problem that does not exist.
Not working under Mint 20.3.
It works OK here on the latest Mint! I’m using it to run a Windoze-only PCB autorouter, and it works fine.
Bottles is nice to simplify installing and windows software on linux, but frankly it’s not easy enough :p
Also it’s not available as snap afaik, which is fine, the flatpak format feel better suited for something like this
Hi,
when i ran bottle , the following error appears
cannot perform operation: mount –rbind /dev /tmp/snap.rootfs_fNx0oc//dev: No such file or directory
I am not sure the root cause of this issue. Never encountered with this error in my test machine. What is the distribution and how did you install it?
But .. why? Gaming doesn’t suck on Linux. Between native games and Proton, I haven’t come across a game I wanted to play and couldn’t. Also, wine does an awesome job already at running most Windows apps. If you need a particular proprietary app so badly, then using a VM or dual-booting is probably a better solution anyway.
The author of Bottles has explained why he created it in this link -> https://docs.usebottles.com/faq/why-bottles. Please have a look.
I agree with Alexander here. In the (by now) 5 different pieces and the one YT video I’ve seen on this, I’m still asking myself: what does it do wine itself doesn’t? The most complete conclusion I can come to is that it is a more sleeker playonlinux, winetricks with some new/ added features. And don’t get me wrong, as with all devs, I’m grateful that Davi put the time into creating this. But what it, IMHO kind of ignores is: it is a GUI for wine. You still need wine. It is still wine that does all the work. Bottles doesn’t run those “you can’t miss” windows programs, as some seem to keep shouting out of breath. Wine does. So this is a GUI shell. Admitted, with some cool additional features. With the emphasis on that word: additional. (Sorry Davi)