Desktopumgebung in Linux programmgesteuert in C erkennen

9

Ich versuche herauszufinden, ob ich auf einer Gnome- oder KDE-Desktopumgebung laufe.

Ich weiß, dass ich über einen ps -aux und grepping Gnome oder KDE überprüfen kann, aber das ist nicht gut: 1) Was ist, wenn ich auf einem Gnome-Desktop bin, aber ich habe die KDE-Bibliotheken geladen? 2) Ich muss es aus dem Code tun, ohne system () oder popen () oder andere fork / exec Kombination zu verwenden.

Ich kann Dateien lesen, oder env. Variablen oder was auch immer.

Irgendwelche Ideen?

Danke, jede Hilfe ist willkommen.

    
Jessica 16.08.2010, 19:49
quelle

4 Antworten

1

Wählen Sie eine Reihe von Fenstermanagern aus, die Ihnen wichtig sind: metacity, xfwm4, flwm usw. Sie können in Ihrem grep von ps suchen (oder durch / proc suchen). Gnome-Bibliotheken bedeuten nicht unbedingt, dass jemand die gesamte Gnome-Desktop-Umgebung ausführt, aber Gnome und KDE sind keine Fenster-Manager. Wenn WMs Ihnen wichtig sind, suchen Sie nach solchen.

    
nmichaels 16.08.2010, 20:21
quelle
1

Zumindest bei Opensuse gibt es die Umgebungsvariablen WINDOWMANAGER, WINDOW_MANAGER

%Vor%     
Eike 16.08.2010 19:59
quelle
0

Sie können Ihr Fenster-Toolkit statisch verknüpfen, wenn Ihnen eine inkonsistent aussehende Benutzeroberfläche nichts ausmacht. Es wird immer noch gut funktionieren. Sie können die gemeinsam genutzten Bibliotheken auch einfach bündeln und sicherstellen, dass LD_LIBRARY_PATH auf diese verweist. Wenn Sie tatsächlich etwas implementieren möchten, das dynamisch mit verschiedenen Toolkits verknüpft ist, könnten Sie etwas mit dlopen / dlsym versuchen, aber das wäre verrückt.

Wenn Sie an der Konsistenz zwischen plattformübergreifenden und Cross-Widget-Toolkits interessiert sind, wäre Ihre beste Wette etwas, das nativ aussehende Widgets selbst rendert. Swing kann den gleichen Code wie GTK oder Windows darstellen. Ich weiß, dass du kein Java verwendest, aber es gibt keine einfache Lösung in C (Swing wird dich sowieso nur irgendwie wegbringen, weil es Qt nicht tut).

    
Hut8 16.08.2010 20:29
quelle
0

Nicht sicher, wie Standard das ist, aber es ist konsistent in Fedora 21, Slackware 14.1 und Ubuntu 14.04. (Mehr willkommen)

probiere

aus %Vor%

Hoffe, das hilft.

    
Luis Pinto 25.06.2015 18:53
quelle

Tags und Links