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.
7 Answers
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.shexample /etc/lightdm/lightdm.conf file:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
display-setup-script=/home/user/bin/xhost.shexample /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.
2This worked for me:
Edit ~/.xinitrc:
export DISPLAY=":0.0"
xhost +
openboxNote: 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.
2~/.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 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/nullat 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 geditIf this does not work, then it is pointless to make the command permanent in ~/.bashrc.
To be more precise, I first executed
xhostto 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.
Here's a variant of @GeorgeLitos's answer, with these changes:
- Don't directly modify
/etc/lightdm/lightdm.conf, as this is a system-owned file that may be overwritten by system upgrades. Instead, use the extension directory/etc/lightdm/lightdm.conf.d/. This also means that other settings don't need to be duplicated in there. - No need for a separate shell script; the command can be directly placed into the configuration file.
Just create a file (as user root) /etc/lightdm/lightdm.conf.d/xhost.conf with these contents:
[SeatDefaults]
display-setup-script=xhost +This works on Ubuntu 16.04.5 LTS.
Edit the file /etc/rc.local (with sudo) and add the command before the last command (exit 0).
Add the following line to /etc/xdg/lxsession/LXDE/autostart
xhost +local: