34

I am attempting to run nautilus as root but when I run "sudo nautilus" from the terminal, I get the following error:

error: XDG_RUNTIME_DIR not set in the environment.

(nautilus:9341): Gtk-WARNING **: cannot open display:

The issue does not occur when I attempt to run nautilus as non-root. I am using ubuntu 14.04. Does anyone know how I can fix this?

1
  • Just for the record, I ended up here after I had the same error come up when trying to do X11Forwarding via ssh. Solution: I had forgotten to use the -X option when starting my ssh session.
    – JW.
    May 15, 2015 at 11:47

5 Answers 5

25

When you run software as another user you're in fact starting a new minimal isolated environment that doesn't carry on some "excessive" variables (among others variables responsible for injecting libraries or setting privileges). Replace your sudo nautilus call with the following - it will carry on user-specific X server settings from the current session:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

This is a one time low level solution but it will work on a misconfigured machine. If you want to permanently "fix your sudo" you need to find the issue with your environment configuration and correct it as described in other answers.

0
6

If you are getting this error in Docker ; this is what I do

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments
3

To make it easy - more explained the new booting of my system.

After all explanations here I came to the result - and "env" in terminal said already that is right for these session:

These two rows to use the environment variable:
For the tmp behavior I have chosen:

mkdir -pv ~/.cache/xdgr

For setting the environment variable:

export XDG_RUNTIME_DIR=$PATH:~/.cache/xdgr

After closing the terminal and a new open for the recall of env they tells:

XDG_RUNTIME_DIR=/run/user/1001

Note: it is ok for the user under ubuntu, root needs more (last info by term - with 0700 permissions)

2

I also had the same problem on Ubuntu 14.04. Open terminal by pressing,

Ctrl + Alt+ T

then sudo visudo and change the line

Defaults        env_keep="https_proxy"

to

Defaults        env_keep += "https_proxy"

It worked like charm.

0
0

Start using sh command instead of bash.

2

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .