gksu: Gtk-ПОПЕРЕДЖЕННЯ **: не вдається відкрити дисплей:: 0


40

Раптом гксу перестали працювати на мене:

~$ gksu gparted

(gpartedbin:24252): Gtk-WARNING **: cannot open display: :0

Те саме відбувається з gparted-pkexec:

~$ gparted-pkexec 
No protocol specified

(gpartedbin:25454): Gtk-WARNING **: cannot open display: :0

Що може бути причиною цього?

Я не запускаю це через SSH або VNC. Це localhost у звичайному вікні терміналу.


Ви не працюєте в графічному інтерфейсі користувача або не намагаєтеся запустити програму в системі (наприклад, через ssh), яку не надає жоден графічний інтерфейс.
AB

1
@AB Я повинен уточнити, що це не через ssh. Він знаходиться на локальному хості у абсолютно нормальному вікні терміналу. Відкриття інфакти, що знаходиться в меню програми, має той же результат.
d_inevitable

Вам не слід використовувати gksuдля запуску GParted. gpartedвикористовує polkit, щоб отримати підвищені привілеї.
муру

@muru, коли я бігаю, gpartedне gksuотримуюRoot privileges are required for running gparted.
d_inevitable

Гаразд, спробуйте gparted-pkexec(без gksu) або gksu gpartedbin.
муру

Відповіді:


67

Якщо використовується Ubuntu 17.10 або новішої версії, ця проблема може виникнути, коли додаток не оновлено з повною підтримкою Wayland. Як вирішення, поки додаток не буде оновлено, можна запустити

xhost +SI:localuser:root

що дозволить rootкористувачеві відображати програми на робочому столі. Ознайомтесь також із цим питанням та запитаннями щодо інших можливих способів вирішення: чому б gksu / gksudo або не запустити графічну програму з судо з Wayland?

джерело


@MDMower Thx для редагування, дізнався щось нове =)!
Cutton Eye

@pomsky Thx для додавання посилання;)!
Cutton Eye

У 18.04 X-Org буде знову використаний як за замовчуванням. Тож ця проблема повинна виникла тоді. див.
Cutton Eye

11

Спробуйте запустити xhost +localhostу своєму терміналі, а потім знову запустити команду. Це дозволяє всім користувачам вашої системи (тобто root) відкривати вікна на екрані. Не забудьте використовувати + localhost, а не просто +, оскільки безпечніше дозволяти з'єднання лише з localhost, ніж з будь-якого місця.

Щоб зробити це постійним, відредагуйте ~/.xinitrcфайл так:

Біжи gedit ~/.xinitrc

Відредагуйте файл таким чином (він повинен бути порожнім на початку):

#! /bin/bash
xhost +localhost &

Тепер збережіть файл, вийдіть із системи та увійдіть у систему. Тепер все повинно працювати добре з sudo.

Я не можу відтворити вашу проблему 14.04, але це працювало для мене в минулому, коли sudo / gksu кинув цю помилку.

Джерела:

  1. http://www.nikhef.nl/~mjg/xhost_plus.html
  2. https://forums.opensuse.org/showthread.php/405624-sudo-doesnt-open-X-programs
  3. https://wiki.ubuntu.com/CustomXSession

1
Це справді працює. Так це означає його обмеження доступу? Будь-які ідеї, що може бути причиною цього?
d_inevitable

Так, це захисна функція X. Це дозволяє лише підключення від вашого користувача до xserver, поки не сказано інше, я думаю. Я не дуже впевнений, чому це потрібно для деяких додатків, а не для інших, і я не маю поняття, чому це було б робити для всіх частин. Можливо, ви десь роздумували і посилили охорону?
Марк Паскаль

2
Це призводить до помилки: xhost: не вдається відкрити дисплей ""
IgorGanapolsky

5
На Redis було запропоновано використовувати xhost +local:. Після цього я зміг запустити gparted з терміналу, але використовувати xhost +localhostне вдалося.
rmin

1
Справді! xhost +local:виправлена ​​міна! Це дає non-network local connections being added to access control listте, що потрібно.
лобнер

5

Виконайте наступне у своєму терміналі:

nano /home/user/.bashrc # user = name of your user

Додайте наступний рядок наприкінці.

export XAUTHORITY=$HOME/.Xauthority

2
Було б корисно, якщо ви могли б додати трохи пояснень, як це вирішує проблему та чи є у неї шкідливі побічні ефекти?
Джефф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.