Developers of the Bottles program, which provides an interface for simplifying the installation, configuration, and running of Windows applications on Linux, have published information about the development of the Bottles Next initiative, aimed at completely redesigning the architecture and codebase of the project. It is noted that the existing monolithic application in Python with a GTK interface does not allow for many ideas to be implemented, such as macOS support, limits capabilities, and leads to issues that cannot be resolved without fundamentally changing the architecture.
The new architecture involves dividing the application into three separate components: a client with a graphical interface implementation, a server with the logic for launching applications and managing Wine prefixes, and an agent running under Wine that interacts with the Windows API. Initially, the plan was to use web technologies (Electron and VueJS) for the client implementation, but server after creating prototypes and community resistance to the idea of switching to the Electron engine, the developers decided to abandon this idea.
As a result, it was decided to use Rust for the client development and server build the graphical interface based on the libcosmic framework. Libcosmic is used in the COSMIC desktop environment and serves as an extension of the iced library, providing functions for creating graphical applications and applets. The development employs a reactive programming model and an architecture familiar to developers accustomed to the declarative interface-building language Elm. Rendering engines based on Vulkan, Metal, DX12, OpenGL 2.1+, and OpenGL ES 2.0+ may be used.
It is noted that developers would be more comfortable using the Go language, but they had to abandon it due to the lack of quality toolkits for building user interfaces. In addition to the new simplified interface, the familiar classic interface will be offered as an option. The agent's code will be written in C# and .NET, which is due to the need to run the WineBridg service in a Windows environment created by Wine. The container for testing the initial prototype of Bottles Next, written in Rust, is planned to be published in a few weeks. Currently, only a basic demo version is available.


Source: opennet.ru
