Flatpak. Решение проблемы с долгим запуском приложений
Если вы читаете меня в Телеграм-канале (а если нет, то это повод начать), то уже читали пост о том, что после недавнего крупного обновления Manjaro Linux (на основе Arch Linux) у меня сломался OutWiker — возникли проблемы flatpak-пакетом, и даже из исходников его еле удалось запустить. Если еще не читали, то вот ссылки на начало и продолжение (в один пост не уместилось). Теперь я начинаю разгребать последствия.
После того самого обновления выявились две странности, которые казалось бы никак не связаны между собой. Во-первых, начались проблемы с работой OutWiker, который упакован в flatpak, а, во-вторых, некоторые приложения (например, Telegram) стали долго запускаться (после нажатия на иконку ничего не происходит секунд 10-20, а потом приложение запускается).
Проблема с OutWiker выглядела таким образом, что приложение запускалось без каких-либо ошибок и задержек, но вместо HTML-рендера WebKit в окне была пустая панель. Ничего подозрительного в логах не писалось. Также была другая проблема — OutWiker не открывал папку с плагинами, если выбрать пункт меню «Справка — Открыть папку с плагинами», но это такая мелочь, что я на нее сначала не обратил внимания.
Такое поведение OutWiker я раньше встречал после обновления ядра Linux, но оно чинилось выполнением команды flatpak update
, в результате которой обновлялись flatpak-пакеты org.freedesktop.Platform.GL.nvidia-*
, после чего OutWiker работал как надо. После последнего обновления команда flatpak update
ничего не обновила, и проблема осталась. В том, что ничего не обновилось я начал винить тот факт (возможно, так оно и есть), что OutWiker при сборке flatpak использует старую версию org.gnome.Platform
(объяснение, почему это так, достойно отдельного поста), и я сначала начал копать в сторону возможности обновления org.gnome.Platform
.
В какой-то момент для экспериментов я запустил сломанный OutWiker. При этом потыкал в менюшку для открытия папки с плагинами в надежде увидеть что-то в логах. Ничего не увидел и переключился на другие задачи, оставив OutWiker в фоновом режиме.
Через некоторое время (прошло минут десять, не меньше) я вернулся к OutWiker-у и заметил, что он-таки создал HTML-рендер, а в логах появилась малозаметная строчка «Failed to call portal: Timeout was reached». Гугление этой фразы вывело меня через несколько ссылок на разные сообщения в багтрекере программы xdg-desktop-portal на github. Эта программа каким-то образом связана с flatpak. В сообщениях где-то сослались на комментарий, который помог решить проблему.
Для этого нужно было проделать следующие магические действия:
- Установить
dbus-broker
sudo systemctl enable --global dbus-broker.service
sudo systemctl enable dbus-broker.service
- Перезагрузиться
После этого OutWiker заработал, как и раньше, в том числе начал открывать папку с плагинами, и Telegram стал запускаться сразу. Я пока не разбирался, как связаны между собой xdg-desktop-portal и сервис dbus-broker, а также, как их использует flatpak.
Чуть позже еще заметил другое решение проблемы на reddit, но сам я его уже не пробовал:
dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
По поводу описанной проблемы в багтерекере xdg-desktop-portal заведено уже несколько записей, будем надеяться, что со временем проблему решат, и этот пост перестанет быть актуальным.
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Leave a comment