Release Day 2022.3.28

Published on 2022-03-28

It’s Release Day again!

Two more weeks of work have been done and it’s time to celebrate another release day!

This release brings several improvements, work is progressing fast to support Steam Proton prefixes and some nice new features!

News

Ok now let’s get to the point. What’s new in this version?

Environment recipes

Bottles is a WINE prefix manager based on environments, sets of instructions that are interpreted to make a bottle (a la Docker, we can say).

Since v2 we offer 2 pre-configured environments: Gaming and Application. In addition to those we have always allowed to create custom bottles that are therefore not linked to an environment.

From today it is possible to use your own environments, this means that you can reproduce a specific set of instructions at any time and, why not, also share it with friends and colleagues.

To use yours, simply select the Custom environment and then choose your recipe.

Bottles - Custom environments

This way Bottles will follow your instructions.

Recipes are nothing more than YAML files with a well-defined structure, like the example below:

Runner: wine
Parameters:
    custom_dpi: 120
    discrete_gpu: true
    dxvk: true
    dxvk_hud: false
    dxvk_nvapi: true
    fixme_logs: false
    fsr: true
    fsr_level: 5
    fullscreen_capture: false
    gamemode: false
    gamescope: true
    gamescope_borderless: true
    gamescope_fps: 60
    latencyflex: false
    mangohud: true
    pulseaudio_latency: true
    sync: futex2
    take_focus: false
    use_runtime: true
    virtual_desktop: true
    virtual_desktop_res: 1280x720
    vkd3d: true
Installed_Dependencies:
- d3dx9
- msls31
- arial32
- times32
- d3dcompiler_43
- d3dcompiler_47

Beautiful, is not it? Send us feedback, bug hunters!

Improved Steam Proton support

In the last release we announced experimental support for Steam Proton prefixes. While this feature remains under development, there are lots of news about it in this release.

In fact, Bottles is now able to read the Launch options of a Steam game (installed via Proton) and interpret them in Bottles configurations. So if you enable MangoHud on Steam, you will see the dedicated toggle switched on.

Of course you can at any time change a setting in Bottles and this will be reflected in Steam (be careful because not all settings are available yet, we have enabled MangoHud, Gamescope, GameMode, FSR and others). At the moment to synchronize settings from one client to another, you need to restart the target one, we are working on it.

Bottles - Steam Proton

As you can see in the screenshot above, there is also another big news. In fact, Bottles is now able to recognize the game associated with the prefix and allows you to start it via Steam. We hope you find it useful.

Installers improvements

In this release there are several new features also for the installers. There are two most important and noteworthy ones.

Now the programs installed through this feature will use a Windows path by default instead of unix. This choice was made to maintain as much internal use of the paths as possible and ensure a better functioning of WINE.

Installers, who install installers, who install installers, who … got it?

Now installers can depend on other installers, useful when one program can run on its own but others may need it. Maintainers will just need to add the new Installers section to the manifest:

...
Installers:
- first_installer
- second_installer

and Bottles will automatically install all of them in the correct order.

New CLI

We finally have a real CLI and it is very powerful!

We have heard your prayers and written a new CLI that covers tons of use cases, let’s see some of them.

How to launch it

The CLI has now a dedicated command: bottles-cli. If you have installed Bottles as a Flatpak, you can launch it by simply typing:

flatpak run --command="bottles-cli" com.usebottles.bottles --help

other packages can reach it at usual way:

bottles-cli --help

And the following is its help page:

usage: bottles-cli [-h] [-v] [-j]
                   {info,list,programs,tools,reg,edit,new,run} ...

Bottles is a tool to manage your bottles

positional arguments:
  {info,list,programs,tools,reg,edit,new,run}
                        sub-command help
    info                Show information about Bottles
    list                List entities
    programs            List programs
    tools               Launch WINE tools
    reg                 Manage registry
    edit                Edit a bottle configuration
    new                 Create a new bottle
    run                 Run a program

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -j, --json            Outputs in JSON format

List stuff

You can list all your bottles:

bottles-cli list bottles
> Found 2 bottles:
- Games
- TestLayers

as well as components:

bottles-cli list components -f category:dxvk
> Found 7 dxvk
- dxvk-1.10
- dxvk-1.9.4
- dxvk-1.9.3

and programs:

bottles-cli programs -b Games
> Found 4 programs:
- Battle.net
- Epic Games Store
- Origin
- Ubisoft Connect

just typing the right command.

What about making new bottles?

We have the new command for that:

bottles-cli new --bottle-name Awesome --environment custom --arch win64 --runner Caffe-7.2 --dxvk dxvk-1.10 --vkd3d vkd3d-proton-2.6 --custom-environment /path/to/custom/environment/file.yml

I need to edit a bottle

You can edit a bottle by using the edit command:

bottles-cli edit -b Games --win win7

and you can change every parameter of your bottle, even the version of the components.

I am a hacker, I want to launch programs trough CLI 👾

Wait there is something for you too and you will love it. Now you can not only run executables:

bottles-cli run -b Games -e /path/to/file.exe

but also directly a program of your bottle, without having to deal with paths:

bottles-cli run -b Games -p Battle.net

I’m a developer

Hello! For you today we have the --json flag which if set will return any output in json format, it should come in handy.

bottles-cli --json list components -f category:vkd3d
> {"vkd3d": ["vkd3d-proton-2.6", "vkd3d-proton-2.5", "vkd3d-v2.4"]}

And many more features are available, refer to the --help command to list all of them.

All other changes

There are many other changes and improvements in this release. Below are some noteworthy ones, for all others, please refer to the GitHub organization.

  • Now it is possible to use custom environment recipes, just choose its YAML file when creating a new bottle
  • Support for Steam Runtime
  • Installers can now depend by other installers
  • Installers now uses Windows paths by default for new entries in the Programs list
  • Runners paths are now appended to the environment to ensure those to get picked up
  • The DXVK Hud option now uses the default configuration, use the Environment Variables section to tweak it
  • Now you can launch the game linked to a Steam Proton prefix directly from Bottles
  • Now enabling some options (e.g. MangoHud) for a Steam Proton prefix, the Launch options on Steam are updated (requires Steam restart)
  • Now Steam Proton prefixes are parsed from the vdf LocalSettings file
  • Now by updating the Launch options in a Steam Proton prefix, Bottles will read the changes and update the dedicated bottle
  • The ACO shader compiler has been removed from the preferences as it is active by default
  • Legacy WINE tools are now grouped in the Utilities menu
  • Now LatencyFleX will be used only with DXVK-Nvapi installed and the Vulkan layer is automatically appended to the environment, no need to set it manually
  • WineBridge is now automatically updated
  • Registry is now updated using the minimal WineCommand interface
  • New CLI much more powerful (bottles-cli —help)
  • Now Caffe is always the default runner when making a bottle with the Gaming or Application environment
  • Support for system Dark mode and general UI improvements (Thanks to @A6GibKm)
  • Better Download logging (Thanks to @thopiekar)
  • Fixed a bug when updating Core components
  • Fixed a bug in installing LatencyFleX, was causing a crash if there was no version selected
  • Fixed a bug with unix path when using CLI, was treated as a Windows path
  • Fixed a bug in the component version listing, the most recent version was not always picked up (Thanks to @CleoMenezesJr and @psydvl)
  • Fixed a bug with offline mode, connection check would not fail when stalled
  • Fixed a bug with changing the screen resolution, it wasn’t async and caused a freeze
  • Fixed a bug with WineCommand, was using MangoHud on minimal mode too
  • Fixed a bug with Runner update, was not checking if the runner exist
  • Fixed a bug with WineEnv, was not returning the env list when asking for a clean one
  • Malay translations thanks to @amiruldevkun
  • French translations thanks to @julroy67
  • Finnish translations thanks to Jiri Grönroos
  • Hungarian translations thanks to @zoli111, @aronkvh, @Oliver-EMRLD
  • Galician translations thanks to @frandieguez
  • German translations thanks to @ThatRedKite, @CoreXGit
  • Japanese translations thanks to @ryonakano
  • Italian translations thanks to @albanobattistella

Thanks to all users who contributed to this release!

~ Bottles’ developers

Download 2022.3.28

Related Articles

Sponsors

JetBrains GitBook Linode Appwrite Hyperbitz Scaleway

Plus all the donations from the awesome users who support Bottles!

Show more