Два приложения GUI как разные пользователи на одном экране

Я зарегистрирован как пользователь A. Я хочу запустить приложение GUI как пользователь B. Пользователь, а не root. Пользователь B тоже локальный, а не удаленный, мне нужны только разные переменные среды. Я не хочу запускать второй X, я хочу, чтобы они были на одном дисплее. У меня нет проблем с программами, запущенными в терминале, su - ... работает. Для графического сообщения появляется сообщение об ошибке:

 Application initialization failed: couldn't connect to display ":0.0" 

или

 Gtk-WARNING **: cannot open display: :0.0 

Есть ли хороший способ исправить это? Статья о правильном использовании xhost или что-то еще?

  • FreeBSD: открытие приложений X после su для root?
  • Где Linux vncserver (Xvnc) получает список возможностей геометрии
  • XOrg-config-файлы в настройке шмеля
  • Есть что-то вроде «xdg-close» - напротив xdg-open?
  • Передача X с монитора на удаленную машину
  • PuTTY, CygwinX и переадресация X11 отказались
  • история файла .xsession-errors и что его предшествовало?
  • Есть ли способ предотвратить захват фокуса другим приложением?
  • 3 Solutions collect form web for “Два приложения GUI как разные пользователи на одном экране”

    Выполните следующую команду, чтобы дать userBname доступ к дисплею: xhost +SI:localuser:userBname Вы можете использовать xhost + для доступа ко всем; однако это небезопасно. Лучше предоставить доступ для каждого пользователя. Правильный синтаксис для записей xhosts для локальных пользователей – SI:localuser:username .

    Затем su userBname , export DISPLAY=:0.0 и, наконец, запустите программу GUI. Хотя вы предоставили доступ к дисплею ранее с помощью xhost , вы также должны установить переменную окружения DISPLAY чтобы программы знали, где разместить свой графический вывод. Разрешение различных переменных DISPLAY для разных пользователей позволяет нескольким пользователям, подключенным к одной машине, использовать разные физические терминалы.

    Просто используйте gksu -u желаемое имя пользователя, введите пароль, и вы должны быть готовы к работе.

     DISPLAY=:1.0 gksu [-u <user>] [options] <command> 

    В качестве альтернативы вы можете использовать su, а затем установить XDISPLAY на правый экран и, наконец, запустить нужное приложение.

    Вот как я это делаю:

    1. Откройте x-терминал как пользователь с существующим X-сеансом.
    2. xauth list команду xauth list . Вы должны увидеть значения cookie X Magic, которые аутентифицируют запросы на X-сервер для различных дескрипторов. Скопируйте файл с ссылкой «unix». например, myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
    3. Откройте второй терминал в качестве первоначального пользователя, но переключите пользователя (su) на нужный вам идентификатор, например su - user2
    4. Теперь вы переключили пользователя, выпустили команду xauth add и вставьте строку, которую вы предварительно скопировали на этапе 2, затем нажмите return, например xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
    5. Запустите программу X во втором терминале из командной строки, например: firefox

    Это оно!

    Linux и Unix - лучшая ОС в мире.