2012-04-19 21 views
7

Ho bisogno di determinare in modo programmatico quale gestore di finestre è in esecuzione, su Linux.Come rilevare se il SO Linux utilizza l'ambiente KDE o Gnome

Pseudocodice per come sarebbe essere utilizzato:

if(WindowManagerOfOS.isKDE()){ 
     do.anyThing(); 
} 

Come posso fare questo? È possibile?

+1

Non riesco a testarlo sul mio computer ma provare a vedere cosa UIManager.getSystemLookAndFeelClassName() restituisce su uno dei due – Adam

+0

correlati: http://stackoverflow.com/questions/3376679/qt-how-to-detect-whether- the-application-is-running-on-gnome-or-kde –

risposta

10
System.getenv("XDG_CURRENT_DESKTOP") 

restituisce "GNOME" sulla mia macchina. Provalo su box basato su KDE.

Vedi anche

+0

Un utente potrebbe averlo installato, ma solo eseguirlo, nel qual caso sarebbero presenti entrambe le variabili d'ambiente. Dovresti controllare i processi in esecuzione. – Adam

+0

Tomaz, userò la 'KDE_SESSION_VERSION' per verificare questo. Il problema è che KDE non ha un desktop ... –

+0

Mi sono dimenticato di commentare ... System.getenv ("XDG_CURRENT_DESKTOP") stampa nulla per me in Linux Mint 12 con KDE nativo. –

1

La risposta ufficiale è che non si dovrebbe prendersi cura. Entrambi i desktop rispettano gli standard esistenti. Entrambi possono eseguire il software degli altri. Che cosa stai cercando di fare? Se si tratta di un particolare servizio che si sta cercando, solo una distribuzione viene spedita per impostazione predefinita, è necessario effettuare una ricerca.

+3

-1 Questa non è una risposta alla domanda e avrebbe dovuto essere un commento. –

+0

Voterò che questa è una risposta ok. Forse non il migliore, ma funziona perché a volte abbiamo bisogno di dire "Non farlo" quando le persone vogliono sapere come "farlo". –

+1

Ci sono vari posti in cui le persone si preoccupano e dovrebbero sapere, il primo esempio è all'interno di xdg-utils http://cgit.freedesktop.org/xdg/xdg-utils/tree/scripts/xdg-utils-common.in vedere detectDE(), è usato da xdg-su/xdg-terminal ecc per capire quale shell dovrebbe essere usato il nostro wrapper grafico sudo. Ci sono anche alcune cose come l'impostazione di uno sfondo ecc. Che non sono coperti da alcuna API o standard fissi. L'applicazione per lo sfondo della varietà fa proprio questo nel seguente script http://bazaar.launchpad.net/~peterlevi/variety/trunk/view/head:/data/scripts/set_wallpaper – simotek