55

All of the sudden gksu stopped working for me:

~$ gksu gparted

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

The same happens with gparted-pkexec:

~$ gparted-pkexec 
No protocol specified

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

What could possibly be causing this?

I am not running this through SSH or VNC. This is localhost in a normal terminal window.

Mark Paskal
  • 2,900
d_inevitable
  • 1,902

6 Answers6

89

If running Ubuntu 17.10 or newer, this issue can arise when an application has not been updated with full support for Wayland. As a workaround until the application is updated, you can run

xhost +SI:localuser:root

which will allow the root user to display applications on your desktop. Also see this Q&A for other possible workarounds: Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland?

source

pomsky
  • 68,507
Cutton Eye
  • 1,211
13

Try running xhost +localhost in your terminal, and then running the command again. This lets all users on your system (i.e. root) open windows on your screen. Make sure to use +localhost and not simply +, as it's more secure to allow connections from only localhost than from anywhere.

To make this permanent, edit the ~/.xinitrc file like this:

Run gedit ~/.xinitrc

Edit the file to look like this (it should be empty at the start):

#! /bin/bash
xhost +localhost &

Now save the file, log out and log in. Now everything should run just fine with sudo.

I can't reproduce your problem on 14.04, but this has worked for me in the past when sudo / gksu threw this error.

Sources:

  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
wjandrea
  • 14,236
  • 4
  • 48
  • 98
Mark Paskal
  • 2,900
  • 1
    This does work indeed. So does that mean its an access control restriction? Any ideas what the cause of this could be? – d_inevitable Apr 27 '15 at 22:21
  • Yes, it's a security feature of X. It allows only connections from your user to the xserver until told otherwise, I think. I'm not super sure why it's required for some apps and not others, and I don't have a clue why it would be doing it for gparted of all things. Perhaps you were tinkering and tightened security somewhere? – Mark Paskal May 04 '15 at 00:16
  • Well its happening with all apps, even gedit. Also I have noticed that it is only happening for one of my two users on the system, not the other. I've been tinkering with a lot of things, but not recently. A list of possible things that could cause this behaviour could help a lot. – d_inevitable May 04 '15 at 14:45
  • OK, not sure the cause, but I do have a fix. You need to add the xhost command to the .xinitrc file for the user so it runs when you start the session. – Mark Paskal May 04 '15 at 22:50
  • Thanks it worked! Desperate was I but you saved my day!!! – reexmonkey Sep 17 '16 at 09:29
  • This did not work for me... Any other idea? – Steven Roose Oct 19 '16 at 17:28
  • 2
    This yields an error: xhost: unable to open display "" – IgorGanapolsky Jan 30 '17 at 18:33
  • 5
    On redis, it was suggested to use xhost +local:. After that I was able to launch gparted from the terminal, but using xhost +localhost didn't work. – rmin Sep 06 '17 at 01:40
  • 1
    Indeed! xhost +local: fixed mine! It yields non-network local connections being added to access control list which is what is needed. – lobner Nov 10 '17 at 08:16
  • 1
    I get xhost: unable to open display "" – Nathan B May 06 '18 at 16:55
8

Execute the following in your terminal:

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

Add the following line at the end.

export XAUTHORITY=$HOME/.Xauthority
  • 5
    Would be useful if you could add some explanation of how this solves the problem, and whether it has any adverse side effects? – Geoff Jan 01 '19 at 23:25
2

xhost + fixed my problem

but Be aware that xhost + completely deactivates authentication and allows everyone to access all application on your screen...

xhost +si:localuser:root seems to work similar with proper authentication

Bercove
  • 411
0

I solve it by simply running in the terminal ,

sudo gparted

Looks like GTK+ root password dialog confused with x server settings

Salem F
  • 133
  • 8
0

Just to add to possible issues that results in "Gtk-WARNING **: cannot open display: :0".

I got it after deleting /tmp/.X11-unix/X0. Solution I know of as of now: restart, creating socket by python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/.X11-unix/X0')" from https://serverfault.com/questions/358866/create-unix-named-socket-from-the-command-line did not help to resolve the error.