Prüfen, ob KDE läuft

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Prüfen, ob KDE läuft

Beitrag von Targion »

Hallo! Wie kann ich prüfen, ob mein Programm unter GNOME oder KDE läuft? Erstaunlich viele Leute haben beides installiert, und so müsste ich von meinem Programm eine KDE und eine GNOME-Version erstellen, was blöde und umständlich ist. :?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Wozu muss man das wissen ?
Könntest z.b. nach tasts schaun ob kdm oder gdm laufen.
Grundsätzlich ists denk ich aber besser ne Anwendung so zu schreiben das sie nicht auf ne Desktop Enviroment reagiert.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Könntest z.b. nach tasts schaun ob kdm oder gdm laufen
Könnte Probleme bereiten, wenn jemand z.B. XDM oder Entrance als Displaymanager verwendet.

Eine Alternative ist nach dem jeweiligen WM zu schauen (also kwin oder metacity), aber auch darauf würde ich mich nicht verlassen. Was wenn einer, wie ich, XFCE verwendet? Oder ion oder ratpoisen, openbox, oder gar Gnome mit Sawfish oder KDE mit OpenBox?

Du hast keinen Anhaltspunkt, der dir hilft, das notwendige Toolkit (und darum geht es letztendlich, ob ich GTK oder QT verwende) herauszufinden.
Mach einfach deine Software + Desktopstarter und Menüdateien und liefere 2 Pakete aus, eins für QT und eins für GTK. Dann kann jeder das in sein Gnomemenu, Kmenu oder was auch immer packen. Die Leute wissen meist ohnehin, welches Toolkit sie verwenden.

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

Prozessliste mit ps -A erzeugen

gnome-session bedeutet Gnome läuft
ksmserver :KDE
xfce-mcs-manager:XFCE

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Ah! Ich probiere das mal aus! Gibt es keine schnellere, integrierte Lösung? Programme wie z.B. Opera ermitteln ja auch, ob KDE oder GNOME läuft (bei Opera wegen der Tastaturkürzel). Lesen die dafür auch das Ergebnis eines Systembefehls aus?

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Sowas mit ps auslesen hatten wir doch schon mal:
http://www.lazarusforum.de/viewtopic.php?p=9121#9121" onclick="window.open(this.href);return false;

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Das Auslesen ist nicht das Problem, ich dachte nur, dass es vielleicht weniger umständlich geht, als mit Pos das gesamte Output zu durchsuchen.
Danke für dein Beispiel!

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Der Output beträgt höchstens zwei Zeilen, dank des -C
Du kannst die Sache noch weiter einschränken:
ps -T -Cksmserver --no-heading

Das gibt überhaupt nur was zurück, wenn ksmserver läuft auf deinem Terminal.

Aber dein Geschwindigkeitsproblem sehe ich nicht. Das macht man doch nur beim Programmstart einmal.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Naja ich versteh ihn schon es ist ne Lösung aber sicher genau so toll wie Zitronensaft pressen indem man die dinger mit Wucht aus dem Fenster wirft.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Naja ich versteh ihn schon es ist ne Lösung aber sicher genau so toll wie Zitronensaft pressen indem man die dinger mit Wucht aus dem Fenster wirft.
Haste ne bessere Lösung? Immer her damit!

Aber unter Linux ist das Ausführen von Shell Kommandos ziemlich üblich.
Wo soll denn da ein Problem sein?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das man erst nen fremden prozess starten muss statt einfach ne api funktion zu nehmen. Und dessen Ausgabe parst statt die Informationen direkt strukturiert zu bekommen.
Ich kenn jetzt aber auf die schnelle die api funktionen nicht die man dazu nutzen kann :) vieleicht einfach mal schaun wie ps das macht ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Das man erst nen fremden prozess starten muss statt einfach ne api funktion zu nehmen. Und dessen Ausgabe parst statt die Informationen direkt strukturiert zu bekommen.
Unter Linux ist die Shell das API ;-)
Ich kenn jetzt aber auf die schnelle die api funktionen nicht die man dazu nutzen kann :) vieleicht einfach mal schaun wie ps das macht ?!
Viel Spass beim lesen des ps C Codes. ;-)
Ich bin im Gegenteil der Meinung, man sollte die Shell Sachen benutzen.
Immerhin haben die ein einigermassen stabiles "API" (sprich Kommandoparameter). Wenn du das auf tieferem Level lösen willst, wirst du um ein anpassen deines Codes für ändernde/verschiedene Linux-versionen kaum herumkommen.

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

Sicherlich kann man sich durch /proc parsen

http://www.pronix.de/pronix-113.html" onclick="window.open(this.href);return false;

aber da ist ps in diesem Fall um einiges komfortabler.

Hroudtwolf
Beiträge: 14
Registriert: Sa 26. Jan 2008, 17:36
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Hroudtwolf »

Solange GNOME oder XFCE läuft solltest du das anhand der Umgebungsvariablen "gdmsession" erfahren können.
Da könnte man nun ganz dreckig nach dem Ausschlussverfahren aggieren.
Ist "gdmsession=GNOME" läuft GNOME, ist "gdmsession=xfce" läuft XFCE und wenn nichts von beidem zutrifft läuft KDE (oder was anderes).

MfG

Wolf

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Bei mir hat GDMSESSION den Wert "default"...

Antworten