Voor KDE-ontwikkeling gebruik ik een aparte gebruiker. Maar als je su - kde-devel uitvoert en daarna een X11-toepassing oproept, dan krijg je vervelende foutmeldingen als:
of
Hier is een aantal oplossingen voor.
Een oplossing is om SSH te gebruiken met X Forwarding. Daarvoor dien je SSH zodanig in te stellen dat X11Forwarding yes in de configuratie staat en dan kunt inloggen met:
Vanuit de nieuwe shell is het mogelijk om X11-toepassingen uit te voeren. Ik heb hier geen onderzoek naar gedaan, maar iets zegt me dat dit meer (onnodige) overhead geeft. Bovendien kan het onwenselijk of onmogelijk zijn om deze aanpassing aan te brengen aan de SSH-daemon.
Een andere, in mijn ogen betere, oplossing is om de toegangspermissies van X aan te passen. Je kan bijvoorbeeld het volgende doen:
su - kde-devel
Dit schakelt het controlemechanisme simpelweg uit en staat alle verbindingen toe. Dit volstaat wanneer je je in een volledig vertrouwd netwerk begeeft. Een exactere oplossing zou zijn om alleen verbindingen van de huidige machine toe te staan:
su - kde-devel
Dit is feite waar we naar op zoek zijn. Maar natuurlijk wil je dit automatiseren, dus plaats je dit xhost-commando in je ~/.bashrc (van je eigen account, niet van het account dat je permissies wil geven). Dit wil je alleen doen voor interactieve terminals, dus het commando dient omgeven te worden door een terminal-controle. Als we toch bezig zijn, kunnen we iets doen aan de irritante uitvoer die xhost standaard geeft. Dit resulteert in de volgende regels voor je ~/.bashrc:
case "$TERM" in
xterm*|rxvt*|screen*) xhost +local: >/dev/null 2>&1 ;;
*) ;;
esac
Deze regels heb ik van de Ubuntu Forums gehaald, met een kleine toevoeging: ook terminals van het screen-type worden toegestaan (voor als je screen of tmux gebruikt).
Met deze stappen heb ik je laten zien hoe je X11-toepassingen kan uitvoeren vanuit iedere lokale gebruiker op je systeem.
xhost +user
En als je op een systeem met meerdere gebruikers zit kan je beter iets als "xhost +kde-devel" gebruiken natuurlijk.