Вино: настройки приложения не сохраняются при (некорректном) выходе

Вопрос или проблема

Прежде всего, прошу прощения за публикацию этой проблемы с Wine здесь. Я уже пробовал форум WineHQ, но, к сожалению, никто не смог мне помочь. Может быть, мне повезет здесь больше.

У меня проблема с запуском Wine 9.0 и настройками Windows- приложений. Всякий раз, когда приложение выходит “неаккуратно” (например, я просто перезагружаю ПК), не закрыв Windows-приложение заранее, все настройки просто теряются. Я наблюдаю это поведение с тех пор, как начал использовать Wine – это не специфично для версии 9.0.

В качестве примера, когда я запускаю Notepad++ под Wine, я включаю автоматический перенос слов в его настройках. Это работает и также восстанавливается правильно, когда я явно закрываю Notepad++ перед перезагрузкой. Когда я просто перезагружаю свой ПК, не закрывая Notepad++ заранее, все сделанные мною настройки просто теряются. А настройки последнего “аккуратного” выхода восстанавливаются, когда я открываю Notepad++ в следующий раз. Можно ли как-то предотвратить это, например, сохраняя состояние запущенного Windows-приложения периодически? Или есть какой-то трюк, который я могу использовать, чтобы сказать Linux (в моем случае Ubuntu 20.04) закрывать любое запущенное приложение Wine “аккуратно”, а не убивать его силой, например, перед перезагрузкой?

Notepad++ – это всего лишь один пример. Это происходит и с другими Windows-приложениями.

Любая помощь будет очень ценна. Заранее большое спасибо.

После того, как я поиграл с менеджером сессий (скрипт PostSession gdm3), я в итоге создал файл .desktop и добавил его в свою панель:

$ cat ~/.local/share/applications/clean-shutdown.desktop 
[Desktop Entry]
Name=Чистая перезагрузка
Exec=sh -c "gnome-session-quit --power-off && wmctrl -l | cut -d ' ' -f1 | xargs -rL1 wmctrl -ic"
Terminal=false
Type=Application
Icon=system-shutdown
Comment=Закрывает все открытые окна аккуратно через wmctrl перед выключением (правильно сохраняет настройки приложений Wine)

Это не самое элегантное решение, но оно работает на данный момент.

Единственный небольшой недостаток в том, что команда wmctrl всегда выполняется, даже если я не подтверждаю диалог выключения. Я не нашел, как это обойти.

Ответ или решение

Ваша проблема с сохранением настроек приложений в Wine при незавершенном выходе — это довольно распространенное явление среди пользователей, работающих с программами, эмулируемыми на Wine. Давайте разберем основные аспекты данной ситуации и рассмотрим возможные решения.

Проблема: Неправильное завершение приложений

Как вы упомянули, при неправомерном завершении, например, при перезагрузке компьютера без предварительного закрытия приложения (в данном случае Notepad++), все изменения в настройках теряются. Это связано с тем, что Wine не успевает сохранить состояние приложения в момент его неаккуратного завершения и возвращается к последнему сохраненному состоянию при следующем запуске.

Решения

  1. Программное обеспечение для управления окнами:
    Вы нашли разумное решение, используя инструмент wmctrl для закрытия всех открытых окон перед завершением работы системы. Это действительно позволяет обойти проблему с потерей данных и не сохраняемыми настройками.

    Ваш скрипт .desktop эффективно автоматизирует этот процесс:

    [Desktop Entry]
    Name=Clean shutdown
    Exec=sh -c "gnome-session-quit --power-off && wmctrl -l | cut -d ' ' -f1 | xargs -rL1 wmctrl -ic"
    Terminal=false
    Type=Application
    Icon=system-shutdown
    Comment=Closes all open windows cleanly through wmctrl before shutdown (saves Wine app settings properly)

    Такой подход позволяет вам правильно завершить работу Wine-приложений.

  2. Периодическое сохранение состояния:
    К сожалению, Wine не предоставляет встроенной функции для регулярного автоматического сохранения состояния приложений. Однако вы можете добавить в ваш скрипт дополнительные команды для автоматизации этих сохранений, если приложение поддерживает команду для сохранения состояния через консоль (например, с помощью аргументов командной строки).

  3. Использование системного менеджера сессий:
    Вы также можете рассмотреть возможность настройки вашего дисплейного менеджера, такого как gdm3, чтобы он автоматически вызывал свой скрипт перед завершением сеанса. Это требует немного более глубоких познаний в конфигурации системных настроек и может варьироваться в зависимости от используемой среды рабочего стола.

  4. Обновление Wine:
    Хотя вы указали, что проблема наблюдается не только в версии 9.0, использование актуальной версии Wine может помочь избежать некоторых известный ошибок, связанных с управлением состоянием приложения. В новой версии могут быть внесены улучшения в управление памятью и сохранение состояния, которые могут помочь Зависимости текущих версий также могут быть важны.

Вывод

Ваша текущая реализация с wmctrl — это одно из эффективных решений для вашей проблемы. Возможно, вы также захотите выяснить, можно ли настроить его так, чтобы команда выполнялась только при подтверждении завершения, что улучшит удобство использования.

Если у вас остались дополнительные вопросы или вы хотите обсудить другие аспекты работы с Wine, пожалуйста, не стесняйтесь обращаться. Удачи в использовании Wine и в дальнейших настройках вашей системы!

Оцените материал
Добавить комментарий

Капча загружается...