Представлен выпуск проекта Bottles 2022.1.28, развивающего приложение для упрощения установки, настройки и запуска Windows-приложений в Linux на базе Wine или Proton. Программа предоставляет интерфейс для управления префиксами, определяющими Wine-окружение и параметры для запуска приложений, а также инструменты для установки зависимостей, необходимых для корректной работы запускаемых программ. Код проекта написан на языке Python и распространяется под лицензией GPLv3. Программа поставляется в формате Flatpak и в пакетах для Arch Linux.
Вместо скрипта Winetricks в Bottles для установки дополнительных библиотек применяется полноценная система управления зависимостями, работа которой напоминает управление зависимостями в пакетных менеджерах дистрибутивов. Для запускаемого Windows-приложения определяется список зависимостей (DLL-библиотеки, шрифты, runtime и т.п.), которые необходимо загрузить и установить для нормальной работы, при том, что у каждой зависимости могут быть свои зависимости.
Bottles предоставляет репозиторий с информацией о зависимостях для различных программ и библиотек, а также инструментарий для централизованного управления зависимостями. Все установленные зависимости отслеживаются, поэтому при удалении программы, можно удалить и связанные зависимости, если они не используются для запуска других приложений. Подобный подход позволяет обойтись без установки отдельной версии Wine для каждого приложения и использовать единое Wine-окружение для запуска как можно большего числа приложений.
Для работы с Windows-префиксами в Bottles применяется концепция окружений, предоставляющих готовые настройки, библиотеки и зависимости для определённого класса приложений. Предлагаются базовые окружения: Gaming - для игр, Software - для прикладных программ и Custom - чистое окружение для проведения собственных экспериментов. В окружении для игр включены DXVK, VKD3D, Esync, на системах с гибридной графикой активирована дискретная графическая карта, а в PulseAudio включены настройки для улучшения качества звука. В окружении для приложений включены настройки, подходящие как для мультимедийных программ, так и офисных приложений.
При необходимости можно установить несколько разных версий wine, proton и dxvk, и на лету переключаться между ними. Возможен импорт окружений из других менеджеров Wine, таких как Lutris и PlayOnLinux. Окружения запускаются с использованием sandbox-изоляции, отделены от основной системы и имеют доступ только в необходимым данным в домашнем каталоге. Предоставляется поддержка версионного контроля, автоматически сохраняющего состояние перед установкой каждой новой зависимости и позволяющего откататься на одно из прошлых состояний в случае проблем.
Среди изменений в новом выпуске:
Дополнительно можно отметить публикацию выпуска проекта Proton 7.1-GE-1, в рамках которого энтузиастами формируются независимые от компании Valve расширенные сборки пакета для запуска Windows-приложений Proton, отличающиеся более свежей версией Wine, задействованием FFmpeg в FAudio и включением дополнительных патчей, решающих проблемы в различных игровых приложениях.
В новой версии Proton GE осуществлён переход на Wine 7.1 с патчами из Wine-staging 7.1 (в официальном Proton продолжает использоваться Wine 6.3). Перенесены все изменения из git-репозиториев проектов vkd3d-proton, dxvk и FAudio. Решены проблемы в играх Forza Horizon 5, Resident Evil 5, Persona 4 Golden, Progressbar95 и Elder Scrolls Online.
Вместо скрипта Winetricks в Bottles для установки дополнительных библиотек применяется полноценная система управления зависимостями, работа которой напоминает управление зависимостями в пакетных менеджерах дистрибутивов. Для запускаемого Windows-приложения определяется список зависимостей (DLL-библиотеки, шрифты, runtime и т.п.), которые необходимо загрузить и установить для нормальной работы, при том, что у каждой зависимости могут быть свои зависимости.
Bottles предоставляет репозиторий с информацией о зависимостях для различных программ и библиотек, а также инструментарий для централизованного управления зависимостями. Все установленные зависимости отслеживаются, поэтому при удалении программы, можно удалить и связанные зависимости, если они не используются для запуска других приложений. Подобный подход позволяет обойтись без установки отдельной версии Wine для каждого приложения и использовать единое Wine-окружение для запуска как можно большего числа приложений.
Для работы с Windows-префиксами в Bottles применяется концепция окружений, предоставляющих готовые настройки, библиотеки и зависимости для определённого класса приложений. Предлагаются базовые окружения: Gaming - для игр, Software - для прикладных программ и Custom - чистое окружение для проведения собственных экспериментов. В окружении для игр включены DXVK, VKD3D, Esync, на системах с гибридной графикой активирована дискретная графическая карта, а в PulseAudio включены настройки для улучшения качества звука. В окружении для приложений включены настройки, подходящие как для мультимедийных программ, так и офисных приложений.
При необходимости можно установить несколько разных версий wine, proton и dxvk, и на лету переключаться между ними. Возможен импорт окружений из других менеджеров Wine, таких как Lutris и PlayOnLinux. Окружения запускаются с использованием sandbox-изоляции, отделены от основной системы и имеют доступ только в необходимым данным в домашнем каталоге. Предоставляется поддержка версионного контроля, автоматически сохраняющего состояние перед установкой каждой новой зависимости и позволяющего откататься на одно из прошлых состояний в случае проблем.
Среди изменений в новом выпуске:
- Добавлен новый бэкенд для управления Wine, состоящий из трех компонентов: WineCommand, WineProgram и Executor.
- Предложено несколько обработчиков WineProgram:
- reg, regedit - для работы с реестром, позволяет одним вызовом менять несколько ключей.
- net - для управления сервисами.
- wineserver - для проверки работы управляющего процесса Bottles.
- start, msiexec и cmd - для работы с ярлыками .lnk и файлами .msi/.batch.
- taskmgr - менеджер задач.
- wineboot, winedbg, control, winecfg.
- Реализован менеджер исполнения (Executor), при запуске исполняемого файла автоматически вызывающий необходимый обработчик в зависимости от расширения файла (.exe, .lnk, .batch, .msi).
- Предоставлена возможность запуска команд в полном или сокращённом окружении.
- Добавлена поддержка синхронизации с использованием системного вызова futex_waitv (Futex2), появившегося в ядре Linux 5.16. Добавлен обработчик Caffe, основанный на Wine 7 и поддерживающий механизм синхронизации Futex2.
- Для инсталляторов реализована возможность изменения файлов конфигурации (json, ini, yaml).
- Добавлена поддержка скрытия элементов в списке программ.
- Добавлен новый диалог для показа содержимого файлов-манифестов для зависимостей и инсталляторов.
- В список доступных инсталляторов добавлена функция поиска.
Дополнительно можно отметить публикацию выпуска проекта Proton 7.1-GE-1, в рамках которого энтузиастами формируются независимые от компании Valve расширенные сборки пакета для запуска Windows-приложений Proton, отличающиеся более свежей версией Wine, задействованием FFmpeg в FAudio и включением дополнительных патчей, решающих проблемы в различных игровых приложениях.
В новой версии Proton GE осуществлён переход на Wine 7.1 с патчами из Wine-staging 7.1 (в официальном Proton продолжает использоваться Wine 6.3). Перенесены все изменения из git-репозиториев проектов vkd3d-proton, dxvk и FAudio. Решены проблемы в играх Forza Horizon 5, Resident Evil 5, Persona 4 Golden, Progressbar95 и Elder Scrolls Online.