Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Window managerin selvitys

vesikuusi [17.08.2012 07:46:59]

#

Kas huomenta. Kuinkas voin C++:aa käyttämällä selvittää suoritushetkellä pyörivän ikkunaohjelman (window manager) Ubuntussa? Olenko ihan toivoton tapaus, kun en Googlestakaan vastausta löydä? :D

Tällainen taas silti löytyi: http://stackoverflow.com/questions/3496774/detect-desktop-environment-in-linux-programmatically-in-c

Mutta eivät ole keksineet ratkaisua sielläkään.

Pystyisikö asian hoitamaa getenv:llä?
Kiitosta :)

_Pete_ [17.08.2012 13:28:21]

#

Miksi se pitää tietää?

Metabolix [17.08.2012 15:18:57]

#

vesikuusi kirjoitti:

Olenko ihan toivoton tapaus, kun en Googlestakaan vastausta löydä? :D

Luultavasti olet, koska tuossakin linkissä lukee "desktop environment" eikä "window manager". Nämä ovat kaksi ihan eri asiaa.

Siitä huolimatta tuonkin keskustelun aloitusviestissä on yksi mahdollinen ratkaisu, jota kysyjä ei vain siellä halunnut käyttää, koska se on DE:n kanssa vähän huono. Kuitenkin WM:n selvittämiseen sama ratkaisu käy yleensä ihan hyvin, jos et pelleile X-etäyhteyksillä tai monella X-istunnolla. Voit siis etsiä prosessia listauksesta (ps | grep X) tai yksinkertaisemmin pidof-ohjelmalla:

if (system("pidof fluxbox >/dev/null") == 0) {
	printf("Käytössä on Fluxbox.\n");
}
if (system("pidof kwin >/dev/null") == 0) {
	printf("Käytössä on KWin.\n");
}

Toinen mahdollisuus on googlettaa oikeilla sanoilla (Linux detect window manager), jolloin löytyy oikeita vastauksia (esim. tämä). Ikkunointiohjelman nimen saa siis komentorivillä näin:

xprop -root _NET_SUPPORTING_WM_CHECK
# _NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x400022
xprop -id 0x400022 _NET_WM_NAME
# _NET_WM_NAME(UTF8_STRING) = "Fluxbox"

Tai yhdellä rivillä:

xprop -id "$(xprop -root _NET_SUPPORTING_WM_CHECK | grep -oE '0x.*')" _NET_WM_NAME

Voit itse selvittää, miten näitä X-ikkunoiden ominaisuuksia luetaan C:llä.

vesikuusi [17.08.2012 16:11:18]

#

Metabolix kirjoitti:

...linkissä lukee "desktop environment" eikä "window manager". Nämä ovat kaksi ihan eri asiaa.

Joo, mutta tuossa ketjussa kaveri tarkentaa, ettei takoittanutkaan ympäristöä, vaan ohjelmaa.

Mutta kiitos sinulle.

_Pete_ kirjoitti:

Miksi se pitää tietää?

Se menee edelleen tuohon teemajuttuun, jotta homma toimisi toisilla managereilla.

Metabolix [17.08.2012 16:27:42]

#

vesikuusi kirjoitti:

Joo, mutta tuossa ketjussa kaveri tarkentaa, ettei takoittanutkaan ympäristöä, vaan ohjelmaa.

Voisitko osoittaa sellaisen kohdan? Minä näen vain kohtia, joissa painotetaan, että tarkoitettiin nimenomaan DE:tä eikä pelkkää WM:ää.

vesikuusi [17.08.2012 19:46:58]

#

Aa hups se menikin toisinpäin :D

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta