Riconoscere il terminale
  Home FAQ Contact Sign in
it.comp.lang.python only
 
Advanced search
POPULAR GROUPS

more...

it.comp.lang.python Profile…
 Up
Riconoscere il terminale         


Author: ZeD
Date: Aug 20, 2007 09:17

Salve, lavoro sotto linux, e volevo sapere se era possibile conoscere quando
il mio programma viene lanciato da terminale e quando no.

In pratica vorrei che, se io lancio
$ mioProgramma.py
da xterm, konsole e compagnia bella, lanci una interfaccia utente scritta
tramite le le ncurses, mentre se eseguo mioProgramma da "esegui comando"
(Alt+F2, per chi usa kde), o similari, lanci un'altra interfaccia utente.

--
Under construction
13 Comments
Re: Riconoscere il terminale         


Author: Alessandro Pellizzari
Date: Aug 20, 2007 09:26

Il Mon, 20 Aug 2007 16:17:54 +0000, ZeD ha scritto:
> Salve, lavoro sotto linux, e volevo sapere se era possibile conoscere
> quando il mio programma viene lanciato da terminale e quando no.

Il modo migliore e` quello di fare un unico programma che apre
l'interfaccia in base al nome con cui viene chiamato, quindi puoi fare un
soft-link xprogramma -> programma
Da console lancerai "programma", da X lancerai "xprogramma".

Non c'e` un modo semplice per capire se lo lanci da console o meno, e
personalmente eviterei di cercarlo, e lascerei decidere all'utente
l'interfaccia da usare.

Bye.
no comments
Re: Riconoscere il terminale         


Author: Y3s
Date: Aug 20, 2007 09:56

Il Mon, 20 Aug 2007 17:26:33 +0000, Alessandro Pellizzari ha scritto:
> Il Mon, 20 Aug 2007 16:17:54 +0000, ZeD ha scritto:
>
>> Salve, lavoro sotto linux, e volevo sapere se era possibile conoscere
>> quando il mio programma viene lanciato da terminale e quando no.
>
> Il modo migliore e` quello di fare un unico programma che apre
> l'interfaccia in base al nome con cui viene chiamato, quindi puoi fare un
> soft-link xprogramma -> programma
> Da console lancerai "programma", da X lancerai "xprogramma".
>

Oppure in base a un'opzione sulla riga di comando..che so:

programma -> lancia il text-mode
programma -gui -> lancia la GUI
> Non c'e` un modo semplice per capire se lo lanci da console o meno, e
> personalmente eviterei di cercarlo, e lascerei decidere all'utente
> l'interfaccia da usare.
>
Show full article (1.17Kb)
no comments
Re: Riconoscere il terminale         


Author: Enrico 'Henryx' Bianchi
Date: Aug 20, 2007 14:22

ZeD wrote:
> In pratica vorrei che, se io lancio
> $ mioProgramma.py
> da xterm, konsole e compagnia bella, lanci una interfaccia utente scritta
> tramite le le ncurses, mentre se eseguo mioProgramma da "esegui comando"
> (Alt+F2, per chi usa kde), o similari, lanci un'altra interfaccia utente.

Oltre a cio` che ti e` stato consigliato, c'e` da dire che l'unica casistica
in cui potrebbe avere senso quello che vuoi fare e` quando l'applicativo
viene fatto partire da console, e non da terminale (ovvero, X Window non e`
stato avviato). In questo caso, controllerei l'esistenza della variabile
d'ambiente $DISPLAY e del valore ad essa associato (solitamente :0.0).
Tieni comunque presente che tutto cio` funziona su di un ambiente *nix, su
di un ambiente Windows (liscio) e Mac OS X (sempre liscio) tale controllo
e` inutile (sia perche` i due sistemi partono sempre in modalita` grafica,
sia perche` X Window di default non e` installato)

Enrico
no comments
Re: Riconoscere il terminale         


Author: crxor 666
Date: Aug 20, 2007 15:58

ZeD gmail.com> wrote:
> da xterm, konsole e compagnia bella, lanci una interfaccia utente scritta
> tramite le le ncurses, mentre se eseguo mioProgramma da "esegui comando"
> (Alt+F2, per chi usa kde), o similari, lanci un'altra interfaccia utente.

SuSv2 e successivi (e forse anche precedenti, non ho voglia di
controllare) specifica l'esistenza di queste variabili d'ambiente.
<http://www.opengroup.org/onlinepubs/007908799/xbd/envvar.html>

In particolare ti suggerisco di provare con la variabile TERM.

Il problema è che il contenuto di tale variabile è non specificato.
Ovvero uno ci può mettere quello che vuole. Valori comuni sono xterm,
rxvt, xterm-color.

Immagino che se un processo non è lanciato da un terminale, tale
variabile d'ambiente potrebbe non essere settata.

Oppure si potrebbe provare a giocare con le chiamate di sistema relative
all'avere un terminale associato...

--
blog: http://www.akropolix.net/rik0/blogs | Uccidete i filosofi,
site: http://www.akropolix.net/rik0/ | tenetevi riso e
forum: http://www.akropolix.net/forum/ | bacchette per voi.
no comments
Re: Riconoscere il terminale         


Author: ZeD
Date: Aug 20, 2007 23:25

Y3s wrote:
>> Il modo migliore e` quello di fare un unico programma che apre
>> l'interfaccia in base al nome con cui viene chiamato, quindi puoi fare un
>> soft-link xprogramma -> programma
>> Da console lancerai "programma", da X lancerai "xprogramma".
> Oppure in base a un'opzione sulla riga di comando..che so:
>
> programma -> lancia il text-mode
> programma -gui -> lancia la GUI

allora, posto che le opzioni il mio programma ce le ha :D e quindi è
possibile, via riga di comando piuttosto che via configurazione, forzare
una modalità o l'altra, volevo che, in mancanza d'altro, il mio programma
si comportasse come mplayer (per chi lo conosce), che, nonostante venga
chiamato tramite il comando "mplayer" sia da (emulatore di) terminale, che
da gui, si comporta in modo diverso.

Pensavo fosse possibile fare una cosa del genere, e che magari esistesse
qualcosa come "sys.sto_usando_il_terminale" ^^;

--
Under construction
no comments
Re: Riconoscere il terminale         


Author: Pablo Xon
Date: Aug 20, 2007 23:40

ZeD ha scritto:
> [...] volevo che, in mancanza d'altro, il mio programma
> si comportasse come mplayer (per chi lo conosce), che, nonostante venga
> chiamato tramite il comando "mplayer" sia da (emulatore di) terminale, che
> da gui, si comporta in modo diverso.

Se ricordo bene MPlayer quando si installa crea un link simbolico (su
sistemi che usano Gnome come DM lo chiama gmplayer) che lancia mplayer
con l'opzione "gui".
Nei menù e nelle altre componenti grafiche viene usato questo link, da
riga di comando si possono usare indifferentemente entrambi.

Se nel tuo sistema lanciando "mplayer" il comportamento è diverso, è
possibile che l'installazione di mplayer aggiunga anche un alias in
.bashrc (o chi per esso), e/o uno script che verifica l'esistenza di $TERM.

Da me (ubuntu e fedora sui client, RH sui server) non riscontro questo
comportamento: mplayer lancia sempre il comando da terminale.
Tu che distro usi?

Ciao,
Paolo
no comments
Re: Riconoscere il terminale         


Author: ZeD
Date: Aug 20, 2007 23:54

crxor 666 wrote:
> In particolare ti suggerisco di provare con la variabile TERM.
> Il problema è che il contenuto di tale variabile è non specificato.
> Ovvero uno ci può mettere quello che vuole. Valori comuni sono xterm,
> rxvt, xterm-color.

in effetti, la variabile TERM è una di quelle il cui valore è diverso, se il
programma è lanciato da terminale o da GUI. Nel secondo caso il suo valore
è 'dumb' ^^;

Vabè, verificherò se il valore di TERM è xterm o meno

--
Under construction
no comments
Re: Riconoscere il terminale         


Author: crxor 666
Date: Aug 21, 2007 00:50

Enrico 'Henryx' Bianchi wrote:
> Tieni comunque presente che tutto cio` funziona su di un ambiente *nix, su
> di un ambiente Windows (liscio) e Mac OS X (sempre liscio) tale controllo
> e` inutile (sia perche` i due sistemi partono sempre in modalita` grafica,
> sia perche` X Window di default non e` installato)

Direi che il caso di MacOS X è leggermente più complicato. In primo
luogo non è completamente vero che OS X parte *sempre* in modalità
grafica.

Direi che è meglio dire che parte *di default* in modalità grafica.

OS X 'di default' non ha installato X11, ma è una scelta relativamente
comune. È un pacchetto fornito da Apple, oltre che chi usa i vari
macports, fink o altri sistemi di pacchettizzazione per sw open
probabilmente non lo installerà.

A questo punto ci troviamo davanti al grosso quesito: quale è la
libreria grafica usata?

Per esempio su OS X ha perfettamente senso scegliere di partire in
terminale o partire in GUI. Per esempio se guardo chi sia vim nel mio
sistema scopro che:
Show full article (2.49Kb)
no comments
Re: Riconoscere il terminale         


Author: crxor 666
Date: Aug 21, 2007 00:50

ZeD gmail.com> wrote:
> Vabè, verificherò se il valore di TERM è xterm o meno

Ribadisco, fai un po' di prove. Controlla anche se rxvt.
Aggiungo che se lanciato da console non grafica potrebbe avere un altro
valore ancora. xterm-color pure lo ho visto (quindi se *contiene* xterm
non se lo è).

Per le console non grafiche, il valore di TERM viene settato
direttamente da getty. O meglio, getty viene spawnato con ambiente vuoto
e comincia a costruire un ambiente che passerà a login.

Il contenuto di TERM è specificato nel file gettytab. Se sei su Linux
dai un occhio anche a gettydefs

Ma ribadisco, dai anche un occhio se riesci ad avere informazioni sul
Controlling Terminal. Magari scopri qualcosa di interessante.

--
blog: http://www.akropolix.net/rik0/blogs | Uccidete i filosofi,
site: http://www.akropolix.net/rik0/ | tenetevi riso e
forum: http://www.akropolix.net/forum/ | bacchette per voi.
no comments
 
1 2