I programmi X sanno con quale sessione X dovrebbero parlare guardando la DISPLAYvariabile d'ambiente.
Per prima cosa devi scoprire cosa DISPLAYè impostato nella sessione X in cui vuoi che il tuo programma venga eseguito. Fallo immettendo il comando echo $DISPLAYall'interno di un X-terminal in quella sessione X. In genere ottenere qualcosa di simile :0.0viene emesso.
Diciamo che si desidera avviare il programma eccellente xclockprogramma nella sessione X dove DISPLAYè :0.0, ma si vuole fare questo alla console. Quindi premi Alt-Ctrl-F1 per passare a quella console, quindi digita:
DISPLAY=:0.0 xclock # variables set w/ a command are local to that command
Quindi torni a X premendo Alt-Ctrl-F7 o Alt-Ctrl-F8 (o forse qualche altro tasto F, a seconda del tuo sapore di Linux) e guarda il nuovo grazioso orologio a muro che hai lì.
In effetti avresti potuto eseguire il comando sopra in qualsiasi shell su quella stessa macchina (tramite SSH, in qualsiasi sessione X, su qualsiasi console ecc.) - il fatto che hai specificato DISPLAY=:0.0prima del comando significa che la xclockfinestra apparirà sempre in la stessa sessione X.
In effetti - a parte il fatto che i programmi X lo guardano - non c'è nulla di speciale nella DISPLAYvariabile. Normalmente quando si avviano programmi da un terminale X, iniziano nel posto giusto perché DISPLAYè già stato impostato per te.
Invece di usare il comando sopra, puoi anche dividerlo in due prima impostando DISPLAYe poi eseguendo xclock. In questo caso l' DISPLAYimpostazione persisterà fino alla chiusura della shell e tutti i successivi programmi X avviati da lì si apriranno nella stessa sessione X di xclock.
# variables set w/o a command are local to the shell,
export DISPLAY=:0.0 # unless exported
xclock