<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>48211</bug_id>
          
          <creation_ts>2023-10-26 21:24:04 +0300</creation_ts>
          <short_desc>xdg-desktop-portal-gtk для XFCE</short_desc>
          <delta_ts>2023-10-27 22:24:25 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>xdg-desktop-portal</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="Yuri N. Sedunov">aris</assigned_to>
          <cc>aris</cc>
    
    <cc>sem</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235776</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-10-26 21:24:04 +0300</bug_when>
    <thetext>Простите за длинное описание.

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 -&gt; destination=:1.55 error_name=org.freedesktop.DBus.Error.UnknownMethod reply_serial=11
   string &quot;No such interface “org.freedesktop.portal.FileChooser” on object at path /org/freedesktop/portal/desktop&quot;

Откат до 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&apos;а) этот файл не помогал. Оказывается, при таком запуске переменная $XDG_CURRENT_DIR не попадает в окружение процесса, и поэтому специфичные для окружения конфигурационные файлы игнорируются:

$ xargs -0L1 echo &lt;  /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?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235777</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-10-26 21:25:09 +0300</bug_when>
    <thetext>&gt; использующая xfce-desktop-portal для переносимых диалогов выбора файлов 

Очепятка, xdg-desktop-portal конечно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235813</commentid>
    <comment_count>2</comment_count>
    <who name="Yuri N. Sedunov">aris</who>
    <bug_when>2023-10-27 13:42:20 +0300</bug_when>
    <thetext>Тут еще одна история, решение в которой, хоть и с привлечением xdg-desktop-portal-xapp, по сути такое же, как и ваше.

https://forum.artixlinux.org/index.php/topic,6031.0.html

У меня нет понимания в настоящий момент, как можно помочь xfce на системном уровне. Наверное, этому DE нужно самому побеспокоится о себе.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235816</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-10-27 13:52:00 +0300</bug_when>
    <thetext>(In reply to Yuri N. Sedunov from comment #2)
&gt; Тут еще одна история, решение в которой, хоть и с привлечением
&gt; xdg-desktop-portal-xapp, по сути такое же, как и ваше.
&gt; 
&gt; https://forum.artixlinux.org/index.php/topic,6031.0.html

Интересно, здесь у людей работает XFCE-portals.conf, а у меня нет, XDG_CURRENT_DESKTOP в окружение запущенного systemd xdg-desktop-portal&apos;а не попадает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235852</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-10-27 22:24:25 +0300</bug_when>
    <thetext>(In reply to Ivan A. Melnikov from comment #3)
&gt; Интересно, здесь у людей работает XFCE-portals.conf, а у меня нет,
&gt; XDG_CURRENT_DESKTOP в окружение запущенного systemd xdg-desktop-portal&apos;а не
&gt; попадает.

Видимо, где-то должны запускаться подобные команды:

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 по своему?</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>