OVH Cloud OVH Cloud

[ zsh ] tester DISPLAY

14 réponses
Avatar
yvon.thoravalNO
j'ai bien lu les articles de mosx.net concernant zsh mais je ne pige pas
la manière de faire un test sur la variable d'environnement DISPLAY

si DISPLAY et vide je veux faire un export DISPLAY=""localhost:0.0"

c'est pour faire un p'tit wrapper qui lance The Gimp (par exemple)
depuis macos X
--
Yvon Thoraval

10 réponses

1 2
Avatar
Saïd
Yvon Thoraval :

j'ai bien lu les articles de mosx.net concernant zsh mais je ne pige pas
la manière de faire un test sur la variable d'environnement DISPLAY

si DISPLAY et vide je veux faire un export DISPLAY=""localhost:0.0"

c'est pour faire un p'tit wrapper qui lance The Gimp (par exemple)
depuis macos X


if [ ${DISPLAY:-vide} = "vide" ]
then
export DISPLAY=localhost:0.0
fi

--
Saïd.

Avatar
yvon.thoravalNO
Saïd wrote:

if [ ${DISPLAY:-vide} = "vide" ]
then
export DISPLAY=localhost:0.0
fi


impec, où as-tu trouvé ça c'est une bonne astuce parce qu"n fait je
faisais :

if [ -z ${DISPLAY} ]
then
echo "DISPLAY est vide"
fi


ou bien :

if [ -n ${DISPLAY} ]
then
echo "DISPLAY est vide"
fi



et ça me donnait tjs DISPLAY est vide why ?

--
Yvon Thoraval

Avatar
Saïd
Yvon Thoraval :
Saïd wrote:

if [ ${DISPLAY:-vide} = "vide" ]
then
export DISPLAY=localhost:0.0
fi


impec, où as-tu trouvé ça c'est une bonne astuce parce qu"n fait je
faisais :

if [ -z ${DISPLAY} ]
then
echo "DISPLAY est vide"
fi




C'est correct aussi.

ou bien :

if [ -n ${DISPLAY} ]
then
echo "DISPLAY est vide"
fi




Ca donne le contraire (non vide)


et ça me donnait tjs DISPLAY est vide why ?



Peut-etre parce que tu lances ca dans un Terminal. Dans Terminal la variable
DISPLAY n'est jamais initialisee meme si tu as lance X11.

--
Saïd.


Avatar
Saïd
Yvon Thoraval :
Saïd wrote:

if [ ${DISPLAY:-vide} = "vide" ]
then
export DISPLAY=localhost:0.0
fi


impec, où as-tu trouvé ça c'est une bonne astuce


man zshall et j'ai cherche {, jusqu'a trouver un truc qui convient. Je me
souvenais juste qu'il fallait des {} pour remplacer une variable par une
valeur si la variable n'existe pas.

--
Saïd.


Avatar
yvon.thoravalNO
Saïd wrote:


Peut-etre parce que tu lances ca dans un Terminal. Dans Terminal la variable
DISPLAY n'est jamais initialisee meme si tu as lance X11.


ah c'est ça, je me disais, c'est une variable "volatile"...
--
Yvon Thoraval

Avatar
Saïd
Yvon Thoraval :
Saïd wrote:


Peut-etre parce que tu lances ca dans un Terminal. Dans Terminal la variable
DISPLAY n'est jamais initialisee meme si tu as lance X11.


ah c'est ça, je me disais, c'est une variable "volatile"...


C'est normal. DISPLAY est une variable d'environnement. l'environnement
d'un programme UNIX est herite du programme qui le lance. Comme le programme
qui lance Terminal n'a rien a voir avec X11 (Pourtant Panther etait censer
integrer X11 plus mieux, ils auraient pu penser a ajouter ca) eh bien le
Terminal n'est pas au courant qu'il y a un serveur qui tourne. C'est pour ca
que le X11 d'Apple lance un xterm qui herite de la variable DISPLAY, pour ne
pas confuser les macuser en leur disant de creer une variable DISPLAY dans
les shells a partir desquels ils veulent utiliser des applis X11.

--
Saïd.


Avatar
yvon.thoravalNO
Saïd wrote:

C'est pour ca
que le X11 d'Apple lance un xterm qui herite de la variable DISPLAY, pour ne
pas confuser les macuser en leur disant de creer une variable DISPLAY dans
les shells a partir desquels ils veulent utiliser des applis X11.


mauvais calcul d'Apple c'est ça qui est "confusant"...
en fait ça "marche' mais dès que tu as tourné le dos, pfuitttt la valeur
DISPLAY ya pu.

conclusion simple pour moi, en attendant qu'Apple y se gratt la tête, je
ne teste plus DISPLAY... je force à localhost...
--
Yvon Thoraval

Avatar
Saïd
Yvon Thoraval :
Saïd wrote:

C'est pour ca
que le X11 d'Apple lance un xterm qui herite de la variable DISPLAY, pour ne
pas confuser les macuser en leur disant de creer une variable DISPLAY dans
les shells a partir desquels ils veulent utiliser des applis X11.


mauvais calcul d'Apple c'est ça qui est "confusant"...
en fait ça "marche' mais dès que tu as tourné le dos, pfuitttt la valeur
DISPLAY ya pu.



??? tu peux preciser les conditions exactes de la perte de DISPLAY?

--
Saïd.


Avatar
yvon.thoravalNO
Saïd wrote:


??? tu peux preciser les conditions exactes de la perte de DISPLAY?


Oui, ca me para^t très bizarre cette histoire...

Bon je lance The Gimp depuis un terminal par la commande :

./The*sh

le script TheGimp.zsh étant, tout simplement :

#!/bin/zsh
export DISPLAY=localhost:0.0
open /Applications/Utilities/X11.app
/sw/bin/gimp &

ça me lance effectivement X11, un xterm (j'aimerais m'en débarasser) et,
bien sûr The Gimp.

mais si, dans le terminal qui m'a servi a lancer ce script, je fais un
echo $DISPLAY, j'ai que dalle...

Ce qui est confirmé par le fait que si je veux lancer sodipodi dans la
foulée et sur ce même terminal ca marche pô.

par contre, bien sûr ca marche sous xterm...

je continue mes manips si je fais, au Terminal :

iB:~/bin/Zsh> export DISPLAY="localhost:0.0"
iB:~/bin/Zsh> echo $DISPLAY
localhost:0.0


donc c'est ok et même je peux lancer sodipodi...

BILAN : une commande au Terminal n'agit pas exactement de la même
manière que cette même commande dans un script ?
--
Yvon Thoraval

Avatar
Éric Lévénez
Le 25/12/03 16:06, dans
<1g6gzb1.12lj4dfdsn1x2N%, « Yvon Thoraval »
a écrit :

Bon je lance The Gimp depuis un terminal par la commande :

./The*sh

le script TheGimp.zsh étant, tout simplement :

#!/bin/zsh
export DISPLAY=localhost:0.0
open /Applications/Utilities/X11.app
/sw/bin/gimp &

ça me lance effectivement X11, un xterm (j'aimerais m'en débarasser) et,
bien sûr The Gimp.

mais si, dans le terminal qui m'a servi a lancer ce script, je fais un
echo $DISPLAY, j'ai que dalle...


Normal.

Le shell ZSH que tu lances depuis ton shell courant s'exécute dans son
propre espace de travail. Tout ce que ce sous-shell ZSH modifie ou défini ne
peut en aucun cas venir modifier le shell parent.

Exemple 1 :

HAL3:~ eric$ pwd # Le shell parent est dans mon home
/Users/eric
HAL3:~ eric$ (cd / ; pwd) # On lance un sous shell qui change
/ # le répertoire courant du sous shell
HAL3:~ eric$ pwd
/Users/eric # Le shell parent n'est pas affecté
HAL3:~ eric$

Exemple 2 :

HAL3:~ eric$ export a=toto ; echo $a # Le shell parent défini a
toto
HAL3:~ eric$ (export a=titi ; echo $a) # Un shell fils modifie a
titi
HAL3:~ eric$ echo $a # Le shell parent a toujours le même a
toto
HAL3:~ eric$


--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

1 2