Ubuntu 17, верно? Вы уверены, что на самом деле используете Xorg, а не Wayland? (т.е. ps auxfww
самом деле показывает программу под названием X
работает?)
Если вы используете Wayland--, который вы бы использовали по умолчанию: доступ к дисплею от пользователя root не разрешен из-за функции безопасности (кашель)(кашель). Они сказали, что вы можете обойти эту команду, прежде чем пытаться запустить gksu:
xhost si:localuser:root
Другой способ - просто запустить систему Ubuntu с обычной системой отображения Xorg; Вы можете установить это при входе в систему, я думаю.
Я никогда не использовал Ubuntu 17, хотя и определенно не пользователь Wayland. Это, вероятно, одна из причин того, что Ubuntu 18/LTS вернется к использованию классического Xorg по умолчанию.
Важное примечание: если ваше другое имя пользователя не является пользователем root, независимо от того, используете ли вы Wayland или классический Xorg, вам нужно выполнить следующую команду перед запуском вашей программы через gksu:
xhost si:localuser:otherusername
ОБНОВИТЬ:
Приведенное выше решение не работает для Ubuntu 17.04 Xorg из коробки:
$ xhost si:localuser:root
localuser:root being added to access control list
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 109 (X_ChangeHosts)
Value in failed request: 0xe
Serial number of failed request: 7
Current serial number in output stream: 9
Похоже, что Ubuntu Xorg «сервер не построен с поддержкой SECURE_RPC, поэтому попытка добавить хост FamilyNetname (0xfe) не удалась».
Так что не из коробки решения для Ubuntu еще (но это остается в качестве ответа до рабочего одного существует).