Release day 2022.1.14
today isRelease Day!
It’s Release Day again!
Another two weeks of work has been done and it’s time to celebrate another release day!
This release came with a lot of new features and improvements and focus on compatibility and stability.
Welcome in Trento
Today, we want to introduce Bottles Trento, an important milestone for the project.
[put here some confetti cannons]
Ok jokes aside, this is a major update. In the past we announced the Trento project as a total refactoring, only to realize that it was not the best decision, as it really required too much effort (special thanks to sonnyp for letting us reconsider the idea). We have opted to rewrite the backend one update at a time, with a view to future expansion. Today we finished the biggest part of the rewrite and the merits were felt immediately. Bottles is much more responsive, operations are carried out quickly and many bugs have been fixed.
This is the second codename since Bottles v3 exists (we no longer use this versioning, we switched to the CalVer model).
Trento is a beautiful and fascinating Italian city in Trentino-Alto Adige. The founders of the project are Italian and we have decided to enhance our territory, using the names of our cities as codename (there are no fixed intervals, the codename is changed according to the importance of the update and normally when an important milestone is reached. like this).
Read more about this awesome city.
Ok now let’s get to the point. What’s new in this version?
Improved dependencies manager
We have worked a lot on the dependencies manager in this version, with a focus on the speed and reliability of the installations.
Before many dependencies were decompressed to then extract some resources and then place them in their respective directories to make the programs detect them. This procedure could be cumbersome and dirty Bottles’ temp folder. Now the manager extracts only the necessary files, leaving the copy intact in temp, optimizing and speeding up the whole process.
With the old method we have also noticed an important problem, namely that the files that had to be destined for the system32 and syswow64 directories, were actually placed in the wrong paths, this is because Windows uses the syswow64 folder for 32bit resources and the system32 for 64bit resources when you are in a 64bit installation. This might sound strange but it was a very old Microsoft choice to help developers go from 32bit to 64bit, as they very often hard-scripted paths to files instead of using more suitable methods. With this update, all resources are placed in the correct path.
Dependency maintainers will no longer have to manually set the destination
folder but instead use the
win64 placeholders, so that Bottles
can manage the entire process independently based on the architecture of the
The following is an example from the
- action: get_from_cab
All the dependencies manifest files are already updated to use the new placeholders.
This update fixes issues with a lot of games and applications that were not working properly before. If you still have issues, please try in a new bottle or force re-install the dependencies you are having issues with.
Stop running programs
The program list is even more useful and allows you to stop a program when it is running.
In fact, once the button is pressed to start the program, it becomes the stop button. Meanwhile Bottles will listen to the process and when it stops running, it will return the button to its initial state, allowing the user to start it again.
Vulkan ICD loader
ICD (Installable Client Driver) are crucial for proper Vulkan support and should be properly configured. Bottles now automatically finds them and load the correct one according to your GPU vendor (taking care of hybrid configurations).
So if you are using an AMD GPU, Bottles will load the AMD Vulkan ICD. If you are using a AMD+Nvidia GPU combo, Bottles will load the AMD Vulkan ICD only if the Discrete GPU option is disabled.
This new feature provide the user with a lot of useful information about the system and Bottles environment: distro, kernel, GPUs, if the essential tools are found, if Bottles is running with custom a local repository and more.
You can provide these information with your bug reports (just press the button in the headerbar to copy them to the clipboard).
New DXVK,VKD3D,DXVK-Nvapi installers
Previously these components were installed using official scripts from their respective creators and maintainers of the projects. These, although reliable, can in some cases be slow. We then created a manager that takes care of installing and removing these components from a bottle, obtaining very quick results.
This release has initial support for gamescope, the micro-compositor formerly known as steamcompmgr. We made some tests and it seems to work fine but doesn’t came with the Flatpak right now. We could do an update in the next few days to bring it to the Flatpak, perhaps as an extension since not everyone may need this tool.
From the bottle preferences you can access the complete configuration, setting the FPS limit, resolution and scaling.
All other changes
There are a lot of other changes and improvements in this release. Below are other noteworthy ones, for all the others, refer to the GiHub organization.
- Stop a running program directly from the program list
- Vulkan ICDs are now automatically found and properly loaded according to your GPUs
- Dependencies are now installed even faster (give it a try)
- Experimental layered-bottles (currently only for developers)
- Support for local repositories, see the documentation
- Introducing the Health check, this display a lot of useful information about your installation
- New and improved dialogs for manifests, reviews and more
- During bottle creation, missing componentes are not installed automatically
- All dependencies have been updated to use the new structure and avoid residuals in temp
- The copy_cab_dll method for dependencies was deprecated if favor of new copy_file
- Improved accessibility, now it is possible to interact with widgets through keyboard
- The Software environment was renamed to Applications
- The “Compiler” notice is now hidden by default when DXVK is enabled, enable the DXVK HUD option to restore it
- Installers can now execute scripts through the new run_script action
- The Bottles runtime and GameMode settings are now placed under System instead of Graphics
- Dependencies can now use win32/win64 placeholders to automatically detect the right sys path (system32/syswow64 according to the bottle arch)
- Deprecated old scripts-installation for DXVK, VKD3D, DXVK-Nvapi which are now managed by Bottles
- Dependencies can now handle nested-dependencies (e.g. dotnet48 now depend on dotnet40, so it will automatically installed if not already)
- The wineserver is now automatically restarted when chaning sync type (system, esync, fsync)
- Initial Gamescope support
- Fullscreen mouse capture can now be set from the bottle preferences
- Fixed program arguments, was not storing correctly
- Fixed Windows version change, winxp was using wrong values
- Fixed a regression in xfce4-terminal support
- Fixed a bug in dependencies installation when handling the uninstaller
- Fixed a bug in components recognition when there are no components
- Fixed a bug in programs rename, was generating a new copy of the program instead of renaming it
- Fixed a bug during dependencies installation (when using the cab_extract method), DLLs were copied to wrong location
- Fixed a regression in DXVK-Nvapi installation, causing missing DLLs
- Fixed winemenubuilder blacklisting that was not working for runners which are using the lib32 path
- Fixed the ptrace() problem with Flatpak
- Fixed a bug when changing Sync type, was breaking next executions due to an already running wineserver with the wrong sync type
- French translations thanks to @julroy67
- Portuguese translations thanks to @davipatricio, @SantosSi
- Portuguese (Brazil) translations thanks to @davipatricio, @vitorhcl
- Chinese (Simplified) translations thanks to @sr093906, Eric
- Turkish translations thanks to @lateralrook, @ersen0
- German translations thanks to @ThatRedKite
- Basque translations thanks to Sergio Varela
- Italian translations thanks to @albanobattistella, @phaerrax
- Russian translations thanks to @Knebergish
- Spanish translations thanks to @oscfdezdz
Thanks to all users who contributed to this release!
~ Bottles’ Developers