Risposte:
Il xhostcomando richiede l'esecuzione di un server X attivo, può essere eseguito nella schermata di accesso, ad esempio quando viene lightdmcaricato. È possibile abilitarlo modificando /etc/lightdm/lightdm.confe aggiungendo la riga:
display-setup-script=/home/user/bin/xhost.sh
/etc/lightdm/lightdm.conffile di esempio :
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
display-setup-script=/home/user/bin/xhost.sh
/home/user/bin/xhost.shfile di esempio :
#!/bin/bash
xhost +
Funziona su Ubuntu 12.04.1 LTS ed era necessario per abilitare un'applicazione Java che aveva bisogno di X ed era gestita da Tomcat 6.
Questo ha funzionato per me:
Modifica ~/.xinitrc:
export DISPLAY=":0.0"
xhost +
openbox
Nota: nella mia configurazione specifica, eseguo solo openbox . Normalmente quel file è vuoto o mancante in Ubuntu. La mia ipotesi è che potresti rimuovere la linea "openbox" e funzionerebbe, ma non ho modo di provarlo adesso. Se non funziona, sostituire l'ultima riga per il comando del gestore finestre.
Ho avuto lo stesso problema con Ubuntu 17.10. È possibile che il mio sistema non sia stato configurato correttamente. Comunque, nel mio caso, ho aggiunto
xhost + SI:localuser:root > /dev/null
in fondo al mio ~/.bashrcfile e ha funzionato. Non so se questo è un rischio per la sicurezza. Condivido che nel caso in cui qualcun altro si trovi nella stessa situazione e confido che l'aggiunta di root all'elenco degli utenti del server X prediletti dovrebbe essere OK.
È suggerito qui http://ubuntuhandbook.org/index.php/2017/10/ubuntu-17-10-tip-graphical-apps-doesnt-launch-via-root-sudo-gksu/
Puoi testarlo prima direttamente sul terminale:
$ xhost + SI:localuser:root
$ xhost -
La seconda riga assicura che solo quelli nell'elenco abbiano accesso al server X. Quindi provare "Modifica come amministratore", dopo aver fatto clic con il tasto destro su un file o eseguirlo direttamente
$ pkexec gedit
Se questo non funziona, è inutile rendere permanente il comando in ~ / .bashrc.
Per essere più precisi, ho eseguito prima
$ xhost
per vedere quali utenti hanno avuto accesso al server X. Ho visto che il formato era SI:localuser:dominicdove dominicè il mio nome di accesso. Quindi, ho usato lo stesso formato SI:localuser:root per aggiungere l' rootutente.
Ecco una variante della risposta di @ GeorgeLitos, con queste modifiche:
/etc/lightdm/lightdm.conf, poiché si tratta di un file di proprietà del sistema che può essere sovrascritto dagli aggiornamenti di sistema. Utilizzare invece la directory delle estensioni/etc/lightdm/lightdm.conf.d/ . Questo significa anche che non è necessario duplicare altre impostazioni.Basta creare un file (come utente root) /etc/lightdm/lightdm.conf.d/xhost.confcon questi contenuti:
[SeatDefaults]
display-setup-script=xhost +
Funziona su Ubuntu 16.04.5 LTS.
Modifica il file /etc/rc.local(con sudo) e aggiungi il comando prima dell'ultimo comando ( exit 0).