Release day 2021.7.14
today isRelease Day!
Today, I am excited to share the results of the past weeks’ hard work. This is a very important version, and it is the first of the new scheduling release planned for the future of Bottles.
If you are not up to date, Bottles has changed its release cycle, going from one release simply when it is ready, to two fixed appointments on the 14th and 28th of each month. These days, major and significant versions of Bottles are released. This does not mean that no more updates will be released in the meantime but that these will only be fixes or translations.
We have also changed the versioning system, going from a numbered version (e.g. 3.1.15) to a version based on the CalVer model, i.e. a version based on the release date (e.g. 2021.7.14).
Let’s move on to the important things now: what’s new in this release?
Well, a lot. There are more than 20k of modified lines of code that drastically improve the user experience, fix several bugs and implement a lot of new features.
DXVK & VKD3D
Now Bottles supports VKD3D, a Vulkan-based implementation of Direct3D 12 developed by a developer on Valve’s Proton team.
VKD3D is a project developed by the Wine development team, our choice to integrate the variant for Proton is given by greater compatibility with modern games.
To use VKD3D, you will need to install a version of it from the Preferences and then select and enable it in the bottle settings.
DXVK instead has seen several fixes. Among all there are two important ones: the first fixes a serious problem in identifying the Nvidia card on Optimus laptops, the second fixes a problem in the recognition of DirectX libraries, causing several applications to crash.
Dependencies with even more power
We worked hard on Bottles’ dependency system, making it even more powerful and less demanding of user input.
There are mainly 4 noteworthy new features:
- Windows cabinet extraction support
- DLL override and transport
- Support for environment variables and arguments
- Font installation
Cabinet is a native compressed package format for Microsoft Windows. It is a package containing multiple resources, normally used for installers and patches. Our dependency system is now able to extract these resources and install them (sometimes with tweaks), without requiring any user input.
Some dependencies need specific DLLs to work, now the dependency system can install them (e.g. by copying them from an extracted cabinet) and register an override to tell the runner to use them.
Some software requires a specific environment and/or needs to be started with
specific arguments in order to work. Now the dependencies system can pass
arguments to software and register new environment variables (e.g. it
is possible to temporarily declare an override, using the
variable, without having to save it in the bottle).
Fonts play a key role in the compatibility of Windows software. Their absence may prevent the program from starting or make its use impossible. Now the system dependencies can install fonts on their own, without the need for the user to act on the installer.
Another very important feature is the integration with the Bottles versioning system (experimental feature). In fact, when this is active, a new restore point (state) will be created before the installation of a new dependency, allowing you to restore the bottle in case something goes wrong.
There are many other news and fixes regarding the dependencies system but it is really very difficult to explain them all.
For more informations about the new dependencies manager features:
One of the main problems is the lack of components (runner, dxvk, vkd3d) when these are needed. For example, we are creating a bottle that requires dxvk but this is not present in the system, Bottles will install it and then resume the process.
This is a first implementation of the automatic component installation system, in fact at the moment the installation status is not displayed and you will have to wait for details on the screen when the download is finished.
Many new features are also visible from the outside. We have worked to make the UI even simpler and more intuitive, some elements have changed, some relocated and some merged.
The new Preferences
Let’s start from the new Preferences screen, where you can configure Bottles, install components (runners, dxvk, vkd3d) and enable experimental features (such as versioning).
As we can see, all the settings have been divided into categories, making them more accessible without having to search around in the screen.
Experiments now have their own dedicated section, this means we can offer many more experiments in the future. Stay tuned!
The new bottle view
We get to the heart of Bottles, the screen where the magic happens. That is, the screen of our bottle, where we can see its details, launch tools, run applications and above all modify its settings. Here you can spend a few seconds or whole days.
So, we decided to revisit some details in order to make it even more accessible.
As you can see, the switcher in the headerbar has disappeared and a new sidebar has been added on the left. The problem with the previous style was the complexity of being able to add more than 4 items, we had to hide them inside a submenu.
The Programs section in the details screen is now hidden if there are no programs to view. We have also restored the backup button, lost in some updates. Another new feature (actually present since the previous version, but never announced) is the ability to start an executable with arguments.
Finally, some graphical glitches have been fixed, including an unpleasant white line under the name of the bottle.
Going back to talking about dependencies, adding more and more of them, it has become a problem to search for the ones we are interested in, for this reason we have integrated a search bar to filter them in real time.
If you like treasure hunt, we have scattered some light bulbs in the UI, if you click on them we will reveal to you how to use that particular feature. We will add more in the future, trying to provide documentation for each feature available in Bottles.
There are no bottles
The bottles page has also changed and now shows a button for creating a new bottle when there is none.
In this way, new users are guided towards the first important action to take in order to start their adventure in Bottles.
Other UI improvements
In the general interface, we fixed some widget behaviors. For example, the Downloads button is now hidden when there are no downloads in progress, freeing the screen from unnecessary details.
We have reduced the number of notifications spawned in the system, limiting them to only the important ones. The logs have also been reduced, showing only important informations.
The alcoholism issue
As I’m sure many of you have already read, Bottles has supported its own campaign to raise awareness about alcoholism, applying a project to eliminate wherever possible, any reference to alcohol. This has led to a makeover of the logo and the rewriting of several strings, the site and documentation.
Other users have joined the cause, giving their contribution in the adaptation of translations and the creation of the logo and I take this opportunity to thank them.
The new logo
The new logo represents bottles with no reference to alcoholism, it took several days to create and I’m excited to show it publicly.
Despite our efforts to improve Bottles from day to day, something can still go wrong. For this reason we have implemented a Crash Reporting system. When Bottles will be restarted due to an error, a window containing the crash log will be shown, you will need to press the button to submit the report, in order to let us know.
The report is automatically filled in but you can still add more details before submitting it, to help us replicate the bug.
There are so many new features in this release and explaining them all is a feat. Below I’ll list all the other news worthy of note, for the rest I refer you to the official repository.
Dependencies can have different licenses, and it’s important to know about them. In fact now each dependency is distributed with its own license, which can be reached from the manifest or the context menu.
Some details are now displayed on screens when new restore points (states) are created from the versioning screen.
The search for programs installed in the bottles has been extended to the user’s Appdata path, in order to detect even more applications.
Now Flatpak uses its own directories to save data (bottles, runenrs, dxvk, vkd3d and temp). After the update, at the first startup, a message is displayed inviting and guiding the user to migrate the old bottles, this procedure is also explained in the documentation.
Staying on topic, we improved Flatpak compatibility by implementing dependencies for cabextract, vkd3d, opencl and others, solving several compatibility issues.
We fixed several issues with using async methods, which were causing the application to crash without a log. Although the problem seems to be completely fixed, we are still investigating and ask you to report any crashes to us.
~ Bottle’s Developers