Простите за длинное описание. TL;DR: Есть ли возможность создать *portals.conf так, чтобы он использовался только под XFCE? == Проблема == Какое-то время назад xdg-desktop-portal-gtk перестал работать на Сизифе под XFCE. Так сложилось, что я использую XFCE, и у меня есть программа (Cardinal), использующая xfce-desktop-portal для переносимых диалогов выбора файлов (Open и Save). Недавно эти диалоги сломались: при нажатии соответсвующих пунктов в меню ничего не происходит, при этом в dbus-monitor можно увидеть: error time=1698343267.248000 sender=:1.56 -> destination=:1.55 error_name=org.freedesktop.DBus.Error.UnknownMethod reply_serial=11 string "No such interface “org.freedesktop.portal.FileChooser” on object at path /org/freedesktop/portal/desktop" Откат до xdg-desktop-portal 1.16 [1] исправляет проблему. [1] https://git.altlinux.org/tasks/archive/done/_315/323426/build/100/x86_64/rpms/xdg-desktop-portal-1.16.0-alt1.1.x86_64.rpm Однако это не спортивно, поэтому продолжаем искать. == portals.conf == В гугле и man portals.conf было найдено другое решение -- создать файл /usr/share/xdg-desktop-portal/xfce-portals.conf следующего содержания: [preferred] # Use xdg-desktop-portal-gtk for every portal interface default=gtk Такой файл был создан и то, что он помогает, было проверено отладочным запуском /usr/libexec/xdg-desktop-portal --verbose --replace Однако при стандартном запуске xdg-desktop-portal (через systemd, с помощью активируемого d-bus user serviыe unit'а) этот файл не помогал. Оказывается, при таком запуске переменная $XDG_CURRENT_DIR не попадает в окружение процесса, и поэтому специфичные для окружения конфигурационные файлы игнорируются: $ xargs -0L1 echo < /proc/$(pidof /usr/libexec/xdg-desktop-portal)/environ | grep XDG XDG_DATA_DIRS=/home/iv/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/ XDG_RUNTIME_DIR=/run/user/500 XDG_SEAT=seat0 XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 Для себя создал /home/iv/.config/xdg-desktop-portal/portals.conf всё того же содержания: [preferred] # Use xdg-desktop-portal-gtk for every portal interface default=gtk И это сработало. Однако хотелось бы дистрибутивного решения. Есть ли сейчас возможность, например, запаковать в какой-нибудь пакет portals.conf так, чтобы он использовался только под XFCE?
> использующая xfce-desktop-portal для переносимых диалогов выбора файлов Очепятка, xdg-desktop-portal конечно.
Тут еще одна история, решение в которой, хоть и с привлечением xdg-desktop-portal-xapp, по сути такое же, как и ваше. https://forum.artixlinux.org/index.php/topic,6031.0.html У меня нет понимания в настоящий момент, как можно помочь xfce на системном уровне. Наверное, этому DE нужно самому побеспокоится о себе.
(In reply to Yuri N. Sedunov from comment #2) > Тут еще одна история, решение в которой, хоть и с привлечением > xdg-desktop-portal-xapp, по сути такое же, как и ваше. > > https://forum.artixlinux.org/index.php/topic,6031.0.html Интересно, здесь у людей работает XFCE-portals.conf, а у меня нет, XDG_CURRENT_DESKTOP в окружение запущенного systemd xdg-desktop-portal'а не попадает.
(In reply to Ivan A. Melnikov from comment #3) > Интересно, здесь у людей работает XFCE-portals.conf, а у меня нет, > XDG_CURRENT_DESKTOP в окружение запущенного systemd xdg-desktop-portal'а не > попадает. Видимо, где-то должны запускаться подобные команды: systemctl --user import-environment DESKTOP_SESSION XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE dbus-update-activation-environment --systemd DESKTOP_SESSION XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE Интересно, кто этим должен заниматься? Display manager? Или в каждом DE по своему?