xhost setting at boot

I am able to set xhost at boot in Fedora by editing /etc/gdm/Init/Default and for example add:

/usr/bin/xhost +local:

How can similar be done in Ubuntu? I want that the

/usr/bin/xhost +local:

command is executed when the system is sitting at login prompt.


Solution 1:

The xhost command needs an active X server to run, it can run at the login screen, for example when lightdm loads. You can enable it by editing /etc/lightdm/lightdm.conf and adding the line:

display-setup-script=/home/user/bin/xhost.sh

example /etc/lightdm/lightdm.conf file:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
display-setup-script=/home/user/bin/xhost.sh

example /home/user/bin/xhost.sh file:

#!/bin/bash
xhost +

It works on Ubuntu 12.04.1 LTS, and it was needed to enable a Java application that needed X and was run by Tomcat 6.

Solution 2:

This worked for me:

Edit ~/.xinitrc:

export DISPLAY=":0.0"
xhost +
openbox

Note: in my specific setup, I'm running only openbox. Normally that file is empty or missing in Ubuntu. My guess is that you could remove the "openbox" line and it would work, but I don't have a way to test it right now. If it doesn't work, replace the last line for your window manager command.

Solution 3:

~/.xinitrc did not work for me on Ubuntu 14.04 but the following in ~/.profile did. On each login, GUI/terminal/SSH/etc..., the script will run so I redirect stdout to silence the output.

xhost +local: > /dev/null

Solution 4:

I had the same issue with Ubuntu 17.10. It could be that my system was not properly configured. Anyway, in my case, I added

xhost + SI:localuser:root > /dev/null

at the bottom of my ~/.bashrc file and it worked. I don't know if this is a security risk. I share that in case someone else is in the same situation and trust that adding root to the list of privileged X server users should be OK.

It is suggested here on ubuntuhandbook.org

You can test it directly on the terminal first:

xhost + SI:localuser:root
xhost -

The second line makes sure that only those in the list have access to the X server. Then try "Edit as administrator", after right clicking on a file or directly execute

pkexec gedit

If this does not work, then it is pointless to make the command permanent in ~/.bashrc.

To be more precise, I first executed

xhost

to see which users had access to the X server. I saw that the format was SI:localuser:dominic where dominic is my login name. So, I used the same format SI:localuser:root to add the root user.