Release day 2022.1.28
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.
Ok now let’s get to the point. What’s new in this version?
New WINE Backend
This version introduces a new backend for managing WINE. Previously this was done by a single Runner class that was concerned with simply running commands and managing their output. In many cases this system did not allow for easy extension and resulted in multiple confusing and repetitive calls.
The new manager is structured in 3 essential components: WineCommand, WineProgram, Executor.
The WineCommand is a complete wrapper for the execution of WINE commands, this manages the environment and all the bottle options and allows you to l aunch commands in a minimal version that does not include some settings such as gamescope and gamemode (not always necessary).
WineProgram (s) are WINE (and non) tools mapped into a class to be used “natively” by Bottles, exposing all their commands as methods. At the moment the following have a WineProgram:
The Executor is the manager of executables and works as a bridge between the WinePrograms, launching the correct one based on the file extension (.exe, .lnk, .batch, .msi), it also supports other extensions, for example by launching a jpeg this should be opened automatically by the program in the bottle which is capable of supporting the extension.
We are also working on a winebridge, a tool in .NET Standard that Bottles will use for some operations, such as obtaining the list of processes or killing one (avoiding the use of winedbg which requires the debugger to be connected to the process in order to terminate it). This tool also simplifies other operations such as getting and killing a process by its name or pid. In the future it can be used to integrate functions that WINE does not offer by default as a command, we are in fact working on a command that returns the list of installed programs, avoiding heavy searches on the disk.
Finally, it is possible to hide a program, even if it was automatically found by Bottles in the search process.
Just click on the eye icon in the headerbar to show hidden programs.
Caffe 7 and Futex2 support
The new Caffe runner is based on WINE 7 (here the complete changelog) supports Futex2 synchronization for greater performance. This requires kernel 5.16+ or a patched one. In Bottles it is now possible to choose Futex2 synchronization from the bottle preferences, such as for esync and fsync.
New manifest dialogs
Dependency and installer manifests are now shown in a new dialog with code syntax.
They are not only much prettier but also easier to read.
Improved installers view
The new installers screen now has a search bar (does this mean that many more installers will arrive? Well we hope so, the feature is on its way to stable).
The compatibility grade and full application name is also now displayed instead of the package name.
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.
- Each runner change will re-initialize the installed components (DXVK, VKD3D, DXVK-Nvapi ..) to avoid breackage
- New WINE backend ensures stable and faster operations
- New WINE registry WineProgram, allows to write multiple keys in a single call, reducing waiting times
- New net WineProgram allows Bottles to manage bottle services
- New wineserver WineProgram checks the bottle status to prevent commands from being executed when the server is down
- New start/msiexec/cmd WineProgram(s) for handling .lnk shortcuts, .msi/.batch files
- New executor manager handle all executables launched in Bottles, automatically redirecting the call to the correct WineProgram based on the extension
- Choose a shell script to be executed after a program
- Bottles handle 2 types of commands: minimal and full, allowing to run commands on lighter environments when needed (no gamescope, gamemode..)
- Changing Windows/DXVK/VKD3D/DXVK-Nvapi/Runner version displays visual feedback
- Support for Futex2 sync (need kernel 5.16 or patched)
- Iinstallers can edit config files (json, ini, yaml) using the update_config action
- Bottles shows in the console which WineProgram(s) are running
- Manifests are now shown in a source view
- Bottle detail page icon changed
- Installers view now shows the pretty title and compatibility grade
- Search in installers view
- Hide and show items in the programs list
- Rename auto-detected programs
- Fixed Health Check crash in some distributions
- Fixed Wayland support
- Fixed unwanted program start ups when Bottles asks for the process list
- Fixed 3D controller GPU detection
- Fixed backup import feature
- Fixed programs list, was disappearing after renaming a program
- Fixed 64-bit dependencies installation, some actions was not able to place the DLLs in the correct folder
- Fixed Windows version switch, some keys was missing causing some dependencies to fail to install (like .NET 3.5)
- Fixed installers, was not interrupting the installation process when a dependency failed to install
- Fixed bottle creation, was allowing some special characters in the name
- Fixed Desktop entires, was setting the wrong path to the executable
- Fixed the Download manager, was unable to reach some resources (e.g. physx) due to lack of User-Agent
- Fixed dependencies installation during bottle creation, was breaking the bottle if a dependency is unreadable
- Fixed a recursion in gamescope settings
- Portuguese translations thanks to @hugok79, @laralem
- Bulgarian translations thanks to @kostadin04
- Italian translations thanks to @albanobattistella, @phaerrax
- Portuguese (Brazil) translations thanks to @davipatricio, @andrelomba86, @farribeiro
- Sweedish translations thanks to @Lemonmeth, @eson57
- Basque translations thanks to Sergio Varela
- Greek translations thanks to @dim20
- Croatian translations thanks to @milotype
- Danish translations thanks to @emiltang, @ettmetal
- Dutch translations thanks to @MichelN86
- Polish translations thanks to Krzysztof Marcinek
- French translations thanks to @julroy67
- German translations thanks to Lasse Palm
- Spanish translations thanks to @Lvaskz, @d33vliter
- Norwegian Bokmål translations thanks to @comradekingu
- Indonesian translations thanks to @rezaalmanda
- Turkish translations thanks to @ersen0
- Russian translations thanks to @mclvren
- Esperanto translations thanks to phlostically
- Chinese (Simplified) translations thanks to Eric, @lumingzh
- Finnish translations thanks to Jiri Grönroos
- Japanese translations thanks to @shuriken1812
- Czech translations thanks to @panmourovaty
- Hungarian translations thanks to @ovari
- Chinese (Traditional) translations thanks to @XiaoPanPanKevinPan
- Vietnamese translations thanks to Giai Ngo
Thanks to all users who contributed to this release!
~ Bottles’ Developers