|
|
Up |
|
|
  |
Author: ZeDZeD 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 |
|
  |
Author: Alessandro PellizzariAlessandro 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 |
|
  |
Author: Y3sY3s 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 |
|
  |
Author: Enrico 'Henryx' BianchiEnrico '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 |
|
  |
Author: crxor 666crxor 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...
|
| |
| no comments |
|
  |
Author: ZeDZeD 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 |
|
  |
Author: Pablo XonPablo 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 |
|
  |
Author: ZeDZeD 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 |
|
  |
Author: crxor 666crxor 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 |
|
  |
|
|
  |
Author: crxor 666crxor 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.
|
| |
| no comments |
|
|
|
|
|
|