auf gconf & KDE zugreifen
auf gconf & KDE zugreifen
hallo,
ich möchte ein paar kleinere Dinge abhängig von der Umgebung ausführen.
Einfachstes Beispiel, ermitteln und starten des Standardbrowsers.
Unter Windows nimmt man die logischerweise die Registry.
Unter Linux steigt der Aufwand aber etwas, so bringen KDE und Gnome ihre eigenen Entsprechungen mit.
Also meine Frage,
1. Wie kann ich feststellen, ob meine Anwenung gerade unter KDE oder Gnome läuft.
2. Wie kann ich dann auf die jeweiligen Systemkonfigurationen zugreifen zum Auslesen von Informationen.
Eventuell auch zum Speichern eigener Daten bzw. manipulieren bestehender.
3. Für nicht KDE/Gnome - Desktops würde ich zusetzlich den User es selbst konfigurieren lassen.
ich möchte ein paar kleinere Dinge abhängig von der Umgebung ausführen.
Einfachstes Beispiel, ermitteln und starten des Standardbrowsers.
Unter Windows nimmt man die logischerweise die Registry.
Unter Linux steigt der Aufwand aber etwas, so bringen KDE und Gnome ihre eigenen Entsprechungen mit.
Also meine Frage,
1. Wie kann ich feststellen, ob meine Anwenung gerade unter KDE oder Gnome läuft.
2. Wie kann ich dann auf die jeweiligen Systemkonfigurationen zugreifen zum Auslesen von Informationen.
Eventuell auch zum Speichern eigener Daten bzw. manipulieren bestehender.
3. Für nicht KDE/Gnome - Desktops würde ich zusetzlich den User es selbst konfigurieren lassen.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: auf gconf & KDE zugreifen
Herzlich Willkommen im Forum.
Wenn es nur um den Browser und so geht, schau dir mal die Utils.pas an:
http://www.lazarusforum.de/viewtopic.php?f=29&t=262" onclick="window.open(this.href);return false;
Da ist ne Plattformübergreifende Browserfunktion drin, die in den meisten Fällen arbeiten sollte.
Ob da auch was zur Desktopumgebung selbst drin ist, weiß ich gerade nicht.
Ansonsten musst du viel manuell mchen bzw. externe Programme über TProcess starten und die Ausgabe auswerten.
Siehe auch:
http://www.lazarusforum.de/viewtopic.php?f=16&t=1351" onclick="window.open(this.href);return false;
Wenn es nur um den Browser und so geht, schau dir mal die Utils.pas an:
http://www.lazarusforum.de/viewtopic.php?f=29&t=262" onclick="window.open(this.href);return false;
Da ist ne Plattformübergreifende Browserfunktion drin, die in den meisten Fällen arbeiten sollte.
Ob da auch was zur Desktopumgebung selbst drin ist, weiß ich gerade nicht.
Ansonsten musst du viel manuell mchen bzw. externe Programme über TProcess starten und die Ausgabe auswerten.
Siehe auch:
http://www.lazarusforum.de/viewtopic.php?f=16&t=1351" onclick="window.open(this.href);return false;
Johannes
Re: auf gconf & KDE zugreifen
Das Aufrufen des Browsers ist nur ein kleiner Teil, eines Hilfesystem, was ich mir erdacht habe.
Die utils ist sehr interessant. Muss ich mir mal genauer anschauen.
->OpenBrowser()
wie ich mir die anschaue, macht die fast das, was ich will.
statt eine API ruft diese die entsprechenden Programme auf der Konsole auf.
zur Not hätte ich noch den Umweg über Python.
Eleganter wäre natürlich eine Unit für gconf (gleiches für KDE), welche die entsprechenden C-Header nach Pascal holt.
Nehme nur an, da ist noch nichts fertiges da.
Die utils ist sehr interessant. Muss ich mir mal genauer anschauen.
->OpenBrowser()
wie ich mir die anschaue, macht die fast das, was ich will.
statt eine API ruft diese die entsprechenden Programme auf der Konsole auf.
zur Not hätte ich noch den Umweg über Python.
Eleganter wäre natürlich eine Unit für gconf (gleiches für KDE), welche die entsprechenden C-Header nach Pascal holt.
Nehme nur an, da ist noch nichts fertiges da.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: auf gconf & KDE zugreifen
Mir ist zumindest nichts dergleichen was als Pascalunit vorliegt bekannt.
Das ganze wird ja auch noch umfrangreicher, KDE4 und KDE3 ist ja ein gewaltiger Unterschied. Und wenn ich mal ketzerisch fragen darf (weiß ja nicht, was du genau machen willst), was ist mit anderen Umgebungen, die nicht Gnome oder KDE heißen?
Ich fürchte fast, das beste ist das Aufrufen über die Konsole (bspw. gconftool für alles mit gconf) und parsen des Outputs, damit kommst du wahrscheinlich am besten an deine benötigten Angaben, bzw. kannst auch einfach Werte setzen. Der Aufruf sollte sich ja recht einfach gestalten mittels Lazarus.
Das ganze wird ja auch noch umfrangreicher, KDE4 und KDE3 ist ja ein gewaltiger Unterschied. Und wenn ich mal ketzerisch fragen darf (weiß ja nicht, was du genau machen willst), was ist mit anderen Umgebungen, die nicht Gnome oder KDE heißen?

Ich fürchte fast, das beste ist das Aufrufen über die Konsole (bspw. gconftool für alles mit gconf) und parsen des Outputs, damit kommst du wahrscheinlich am besten an deine benötigten Angaben, bzw. kannst auch einfach Werte setzen. Der Aufruf sollte sich ja recht einfach gestalten mittels Lazarus.
Johannes
Re: auf gconf & KDE zugreifen
War da nicht noch was mit xdg-mime query default text/html ?
Re: auf gconf & KDE zugreifen
du hast sicher recht, damit. Jede Umgebung bietet ihr eigenes, alles supporten geht nicht.monta hat geschrieben:Mir ist zumindest nichts dergleichen was als Pascalunit vorliegt bekannt.
Das ganze wird ja auch noch umfrangreicher, KDE4 und KDE3 ist ja ein gewaltiger Unterschied. Und wenn ich mal ketzerisch fragen darf (weiß ja nicht, was du genau machen willst), was ist mit anderen Umgebungen, die nicht Gnome oder KDE heißen?
Ich fürchte fast, das beste ist das Aufrufen über die Konsole (bspw. gconftool für alles mit gconf) und parsen des Outputs, damit kommst du wahrscheinlich am besten an deine benötigten Angaben, bzw. kannst auch einfach Werte setzen. Der Aufruf sollte sich ja recht einfach gestalten mittels Lazarus.
Fall A)
Ich gehe davon aus, es gibt
a ) reine KDE-Anwendungen
b) reine Gnome-Anwendungen
Beide bieten eine Art "Registry", entsprechende KDE/Gnome-Programme nutzen diese auch.
An der Stelle Wäre es sinnvoll, dasss eine Anwendung auch beides Nutzen könnte.
findet man weder das eine, noch das andere vor wird eine eigene CONF erstellt,
für die nötigen Anforderungen wird der Benutzer direkt gefragt.
Ich hasse es, wenn ich bei jedem Programm alle Daten neu eingeben muss, die sowieso bereits hinterlegt sind.
Will der Anwender etwas Abweichendes, kann er es selbst einrichten.
Nutzt ein Anwender etwas anderes als KDE oder Gnome, ist er in der Regel ein erfahrenerer User,
der kann sich entsprechend die Einstellungen ebenfalls selbst machen.
Fall B)
Mir gefallen einige manchmal gefallen mir einige Konfigurationstools nicht. Mal zu überladen, mal nicht tiefgreifend genug. Dann wäre es für mich ganz natürlich direkt in die "Konfiguration" zu schreiben nutzen.
Über Konsolenprogramme ist zwar nett. Manchmal kommen Distributoren auf die Idee, diese mit ihren eigenen zu ersetzen, die Libs aber sind weiterhin verfügbar.
Re: auf gconf & KDE zugreifen
Hast du meinen xdg Hinweis oben gelesen?
Das müsste eig. für alle gehen: xdg-open index.html
http://portland.freedesktop.org/xdg-uti ... -open.html" onclick="window.open(this.href);return false;
http://portland.freedesktop.org/wiki/XdgUtils" onclick="window.open(this.href);return false;
Das müsste eig. für alle gehen: xdg-open index.html
http://portland.freedesktop.org/xdg-uti ... -open.html" onclick="window.open(this.href);return false;
http://portland.freedesktop.org/wiki/XdgUtils" onclick="window.open(this.href);return false;
Re: auf gconf & KDE zugreifen
danke, werd ich mir noch mal genauer anschauentheo hat geschrieben:Hast du meinen xdg Hinweis oben gelesen?
Das müsste eig. für alle gehen: xdg-open index.html
http://portland.freedesktop.org/xdg-uti ... -open.html" onclick="window.open(this.href);return false;
Was bisher läuft:
Code: Alles auswählen
procedure TFormHelpViewer.RunBrowser(URI:String;MyAppName:String);
var
MyProcess:TProcess;
begin
if MyAppName ='' then
MyAppName:=GetBrowser();
if MyAppName = '' then
ShowMessage('No Browser found! Please set Environmentvariable Browser');
MyProcess := TProcess.Create(nil);
{$IFDEF WINDOWS}
if FileExistsUTF8(MyAppName) then
begin
{$ENDIF}
// Run Browser with URI
MyProcess.CommandLine:=MyAppName + ' ' + PAnsiChar(trim(URI));
MyProcess.Execute;
{$IFDEF WINDOWS}
end
else ShowMessage('Browser " ' + MyAppName + ' " Not Found!');
{$ENDIF}
MyProcess.Free;
end;
function TFormHelpViewer.GetBrowser(): string;
var
MyAppName:String;
{$IFDEF WINDOWS}
Reg:TRegistry;
Result:String;
RegKey:String;
ReadKey:Boolean;
{$ENDIF}
begin
{$IFDEF MAC}
ShowMessage('Not implemented yet for Mac!');
exit;
{$ENDIF}
{$IFDEF WINDOWS}
ReadKey:= TRUE;
if MyAppName <> '' then
begin
if FileExistsUTF8(MyAppName) then ReadKey := FALSE;
end;
if ReadKey then
begin
//http://www.delphipraxis.net/topic149116_mehrere+instanzen+des+standardbrowsers+aufrufen.html&highlight=standardbrowser
RegKey:='\http\shell\open\command';
Reg:=TRegistry.Create(KEY_READ);
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if Reg.OpenKeyReadOnly(RegKey) then
Result:=Reg.ReadString('');
if Result[1]='"' then begin
delete(Result,1,1);
Result:=copy(Result,1,pos('"',Result)-1);
end;
finally
Reg.Free;
MyAppName := PAnsiChar(Result); // GET Browser APP
end;
end;
{$ENDIF}
{$IFNDEF WINDOWS}
// von Utils.pas > openBrowser()
// lazarusforum.de
//MyAppName := ExecProcessEx('gconftool-2 --get /desktop/gnome/url-handlers/http/command');
//if (MyAppName = '') or (pos('errors',MyAppName) > 0) then
// MyAppName := GetEnvironmentVariable('BROWSER');
//if (MyAppName = '') then
// MyAppName := 'kfmclient openURL %s';
//MyAppName:=StringReplace(MyAppName,'%s','',[rfReplaceAll]);
// End Utils.pas
{$ENDIF}
{$IFDEF LINUX}
If (MyAppName='') then
MyAppName:= 'xdg-open';
{$ENDIF}
result:= MyAppName;
end;
Zuletzt geändert von wolfdec am Di 3. Feb 2009, 17:28, insgesamt 3-mal geändert.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: auf gconf & KDE zugreifen
Ich würde empfehlen, das als Setting im eigenen Programm zu verwalten. So handhabt es u.a. auch Netbeans. Selbst Pidgin bietet so eine Einstellung (nutzt aber durchaus als Standardeinstellung gconf ... logisch, als GTK/Gnome Programm).
Also am besten überlass es dem User, was er denn nun möchte (Default/gconf, Custom, und vlt. noch paar Presets wie Firefox, Mozilla/Seamonkey und Opera).
Also am besten überlass es dem User, was er denn nun möchte (Default/gconf, Custom, und vlt. noch paar Presets wie Firefox, Mozilla/Seamonkey und Opera).
Re: auf gconf & KDE zugreifen
Deshalb kann man der RunBrowser() die URL und auch den Browser übergeben. Da kommt noch eine Prozedur davor, die schaut ob in der Konfigruationsdatei, etwas gesetzt ist. Wird0 RunBrowser() eine Anwendung übergeben, wird diese genutzt, sonst schaut holt diese sich über GetBrowser() den aktuellen Browser.Hitman hat geschrieben:Ich würde empfehlen, das als Setting im eigenen Programm zu verwalten. So handhabt es u.a. auch Netbeans. Selbst Pidgin bietet so eine Einstellung (nutzt aber durchaus als Standardeinstellung gconf ... logisch, als GTK/Gnome Programm).
Also am besten überlass es dem User, was er denn nun möchte (Default/gconf, Custom, und vlt. noch paar Presets wie Firefox, Mozilla/Seamonkey und Opera).
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: auf gconf & KDE zugreifen
Vielleicht hilft daswolfdec hat geschrieben: 1. Wie kann ich feststellen, ob meine Anwendung gerade unter KDE oder Gnome läuft?
Edit:Die Inspiration kam von hier
http://bbs.archlinux.org/viewtopic.php?id=24208&p=1" onclick="window.open(this.href);return false;
- Dateianhänge
-
sysinfo.tar.gz
- (3.32 KiB) 104-mal heruntergeladen
Re: auf gconf & KDE zugreifen
@creed steiger: Schöne Sache, zeigt nur leider z.T. auch wieder wie kurzlebig solche Bemühungen sind.
Die Hauptdaten DE / WM / Kernel stimmen noch, aber der Rest geht bei meinem "Setup" bereits in die Hose.
bei readkde
config := tinifile.Create(getenvironmentvariable('HOME') + '/.kde4/share/config/kdeglobals');
bei kdeversion
kvers.CommandLine := 'kde4-config --version';
Beachte "kde4".
Bei einem Setup wie meinem (KDE3 und KDE4 parallel) müsste man noch KDE_SESSION_VERSION=4 oder 3 in die Rechnung einbeziehen.
Die Hauptdaten DE / WM / Kernel stimmen noch, aber der Rest geht bei meinem "Setup" bereits in die Hose.
bei readkde
config := tinifile.Create(getenvironmentvariable('HOME') + '/.kde4/share/config/kdeglobals');
bei kdeversion
kvers.CommandLine := 'kde4-config --version';
Beachte "kde4".
Bei einem Setup wie meinem (KDE3 und KDE4 parallel) müsste man noch KDE_SESSION_VERSION=4 oder 3 in die Rechnung einbeziehen.
-
- 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:
Re: auf gconf & KDE zugreifen
Wiso erweiterst du nicht einfach die utils um die entsprechenden neuen Konfigurationen de du noch gefunden hast ? Eigene Suppe kochen is wohl immer leckerer. deswegen gibts auch so viel Software die mit YA*** anfängt, und dadurch wird pen Source eigentlich erst richtig sinnfrei.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: auf gconf & KDE zugreifen
Ehrlich gesagt hab ichs mit KDE4 nicht getestet(nicht installiert).theo hat geschrieben:
Bei einem Setup wie meinem (KDE3 und KDE4 parallel) müsste man noch KDE_SESSION_VERSION=4 oder 3 in die Rechnung einbeziehen.
Könntest du mal
kde${KDE_SESSION_VERSION}-config --version
bei dir probieren.
Unter KDE3 funktioniert es korrekt.
Re: auf gconf & KDE zugreifen
Code: Alles auswählen
theo@linux-1mxm:~> kde${KDE_SESSION_VERSION}-config --version
Qt: 4.4.3
KDE: 4.1.3 (KDE 4.1.3) "release 4.9"
kde4-config: 1.0