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

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

    <bug>
          <bug_id>53436</bug_id>
          
          <creation_ts>2025-03-13 14:36:55 +0300</creation_ts>
          <short_desc>Невозможно запустить графическое приложение в Wayland</short_desc>
          <delta_ts>2026-04-09 16:59:06 +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>SimplePAMApps</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=53655</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>55611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey V Turchin">zerg</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>antohami</cc>
    
    <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
    
    <cc>shaba</cc>
    
    <cc>urozhaevaoo</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260973</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-03-13 14:36:55 +0300</bug_when>
    <thetext>Мне необходима работоспособность от root команды
# su -l -c &apos;xdg-open http://www.ru&apos; CURRENTUSER
В X-ах оно работает.

Для Wayland не хватает пары моментов:
* Проброса $WAYLAND_DISPLAY, что одной строкой делается, как с $DISPLAY
* Выставления $XDG_RUNTIME_DIR. Тут не знаю, как правильно взять, чтоб не разошлось ни с кем.

Т.е. при пробросе $WAYLAND_DISPLAY команда
# su -l -c &apos;XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open http://www.ru&apos; CURRENTUSER
работает упешно.

P.S.
Я пользуюсь, чтоб из-под root в acc можно было ссылки открывать в пользовательском браузере, а не в root-овом. Например, в alterator-notes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261025</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-03-14 10:07:57 +0300</bug_when>
    <thetext>2 Shaba: не знаешь, systemd ставит пользователю при логине $XDG_RUNTIME_DIR?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261157</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-03-17 11:02:56 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #1)
&gt; 2 Shaba: не знаешь, systemd ставит пользователю при логине $XDG_RUNTIME_DIR?
Отвечу сам. Да, pam_systemd устанавливает $XDG_RUNTIME_DIR при логине.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261158</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-03-17 11:07:16 +0300</bug_when>
    <thetext>Следовательно, `su -l` тоже должен

По схожему алгоритму с
https://git.altlinux.org/gears/s/systemd.git?p=systemd.git;a=blob;f=src/login/pam_systemd.c
Там прямо
xsprintf(rt, &quot;/run/user/&quot;UID_FMT, ur-&gt;uid);
, за исключением проверок в validate_runtime_directory()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271221</commentid>
    <comment_count>4</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2025-08-21 16:28:42 +0300</bug_when>
    <thetext>Открывать сайты в веб-браузере от root кажется мне странной затеей.
Проблема в том, что alterator-browser-qt запущен от root. Если была бы возможность запускать его от пользователя, а уже доступ к контенту он получал через авторизацию, как то происходит в веб-браузере, то всё было бы хорошо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271229</commentid>
    <comment_count>5</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-08-21 19:09:45 +0300</bug_when>
    <thetext>Добиться того, чтобы XDG_RUNTIME_DIR правильно выставлялся в suминус-окружении — хорошая задача, давно пора это сделать. Но это не так-то просто сделать правильно :(

Этот каталог, как известно, создаётся по открытии первого сеанса некоторого uid и рекурсивно удаляется по закрытии последнего сеанса этого uid. То есть, все, кто порождают сеансы или иные окружения, где выставляется XDG_RUNTIME_DIR, должны обеспечить, что он есть. `su -l` от некоторого усера может стать первым процессом от этого усера с момента загрузки (это не про xdg-open из инсталлятора, а вообще), и в этом случае просто назначить XDG_RUNTIME_DIR нельзя, нужно обеспечить его создание кем-то привилегированным. Можно и забить, но это тогда сильноскрытое, трудноотлаживаемое ветвление между двумя ситуациями — каталог то есть, то нет, и со стороны кажется, будто от балды. Лучше одно поведение (&quot;обеспечивать наличие&quot;), чем два (у su и у всех остальных).

Системдоиды решили, что можно этого добиться, везде включая модуль pam_systemd, который всё сделает — создаст сеанс в logind (и потом закроет сеанс в logind), тот запустит (и потом остановит) user@%i.service, у последнего зависимость &quot;BindsTo=user-runtime-dir@%i.service After=user-runtime-dir@%i.service&quot;.
Если мы не хотим включать pam_systemd в su-памсервис (can o&apos; worms), тогда надо синхронизироваться с этим циклом.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271230</commentid>
    <comment_count>6</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-08-21 19:10:25 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #4)
&gt; Открывать сайты в веб-браузере от root кажется мне странной затеей.
&gt; Проблема в том, что alterator-browser-qt запущен от root. Если была бы
&gt; возможность запускать его от пользователя, а уже доступ к контенту он
&gt; получал через авторизацию, как то происходит в веб-браузере, то всё было бы
&gt; хорошо.

+1. Говорят, альтератор-2 решит эту проблему?.. GUI-окна не будут работать от root?..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271231</commentid>
    <comment_count>7</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-08-21 19:13:52 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #0)
&gt; Мне необходима работоспособность от root команды
&gt; # su -l -c &apos;xdg-open http://www.ru&apos; CURRENTUSER
&gt; В X-ах оно работает.

Можете ли вы полагаться на то, что запущен systemd?
Если да, то может подойти вот такой рецепт:
  # systemd-run -M &quot;$USER&quot;@.host --user -- xdg-open http://www.ru

Ещё -G по вкусу, см. help и man-страницу.

&gt; Для Wayland не хватает пары моментов:
&gt; * Проброса $WAYLAND_DISPLAY, что одной строкой делается, как с $DISPLAY
&gt; * Выставления $XDG_RUNTIME_DIR. Тут не знаю, как правильно взять, чтоб не
&gt; разошлось ни с кем.
&gt; 
&gt; Т.е. при пробросе $WAYLAND_DISPLAY команда
&gt; # su -l -c &apos;XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open
&gt; http://www.ru&apos; CURRENTUSER
&gt; работает упешно.
&gt; 
&gt; P.S.
&gt; Я пользуюсь, чтоб из-под root в acc можно было ссылки открывать в
&gt; пользовательском браузере, а не в root-овом. Например, в alterator-notes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271399</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 10:17:03 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #4)
&gt; Открывать сайты в веб-браузере от root кажется мне странной затеей.
Мне тоже, поэтому запускаю от пользователя.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271400</commentid>
    <comment_count>9</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 10:18:04 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #4)
&gt; всё было бы хорошо.
И так всё хорошо, за исключением недоработки в su.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271401</commentid>
    <comment_count>10</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 10:18:49 +0300</bug_when>
    <thetext>(Ответ для Arseny Maslennikov на комментарий #6)
&gt; Говорят, альтератор-2 решит эту проблему?
Эту -- нет. Свою такую же -- да.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271402</commentid>
    <comment_count>11</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2025-08-26 10:19:20 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #8)
&gt; (Ответ для Антон Мидюков на комментарий #4)
&gt; &gt; Открывать сайты в веб-браузере от root кажется мне странной затеей.
&gt; Мне тоже, поэтому запускаю от пользователя.

То есть в предлагаемом решении в комментарии 3 будет запускаться от пользователя?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271403</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 10:20:15 +0300</bug_when>
    <thetext>(Ответ для Arseny Maslennikov на комментарий #7)
&gt; Можете ли вы полагаться на то, что запущен systemd?
Видимо, придётся.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271404</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 10:20:55 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #11)
&gt; То есть в предлагаемом решении в комментарии 3 будет запускаться от
&gt; пользователя?
Я о ином тут не писал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271405</commentid>
    <comment_count>14</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 10:22:21 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #0)
&gt; при пробросе $WAYLAND_DISPLAY команда
&gt; # su -l -c &apos;XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open http://www.ru&apos; CURRENTUSER
&gt; работает упешно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271409</commentid>
    <comment_count>15</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2025-08-26 10:30:57 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #14)
&gt; (Ответ для Sergey V Turchin на комментарий #0)
&gt; &gt; при пробросе $WAYLAND_DISPLAY команда
&gt; &gt; # su -l -c &apos;XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open http://www.ru&apos; CURRENTUSER
&gt; &gt; работает упешно.

Кстати, а в чём проблема пробрасывать $WAYLAND_DISPLAY? У alterator-browser, запущенном под root, эта переменна задана.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271428</commentid>
    <comment_count>16</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-08-26 11:33:23 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #15)
&gt; Кстати, а в чём проблема пробрасывать $WAYLAND_DISPLAY? У alterator-browser,
&gt; запущенном под root, эта переменна задана.

(Ответ для Sergey V Turchin на комментарий #0)
&gt; * Проброса $WAYLAND_DISPLAY, что одной строкой делается, как с $DISPLAY</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285490</commentid>
    <comment_count>17</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2026-04-09 16:59:06 +0300</bug_when>
    <thetext>*** Bug 54782 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>