Hallo,
ich möchte mit einem Skript den Standardbrowser des Benutzers auslesen. Der Grund ist ein etwas älteres Programm, das den Standardbrowser über die Umgebungsvariable WEBBROWSER bestimmt und, wenn diese nicht gesetzt ist, auf netscape zurückfällt. netscape benutzt kein Mensch mehr und WEBBROWSER ist bei kaum jemandem gesetzt, deswegen muss eine Lösung her.
Ich habe mir das so vorgestellt, dass das Skript
- die Umgebungsvariable WEBBROWSER unangetastet lässt, wenn sie gesetzt ist,
- den KDE-Standardbrowser ausliest, wenn gerade eine KDE-Sitzung läuft,
- den GNOME-Standardbrowser ausliest, wenn gerade eine GNOME-Sitzung läuft,
- den GNOME-Standardbrowser bevorzugt, wenn einer der beiden Auslesvorgänge erfolgreich ist, aber nicht bestimmt werden kann, ob KDE oder GNOME läuft,
- auf mozilla zurückfällt, wenn keiner der Auslesvorgänge erfolgreich ist.
Das Ganze soll nach Möglichkeit distributionsunabhängig sein, also ohne hartkodierte SuSE-spezifische /opt-Pfade auskommen. Folgendes habe ich mir bisher ausgedacht:
Das Problem ist, dass ich trotz Bemühung nicht so recht weiterkomme und nicht mal weiß, ob es überhaupt ein brauchbarer Ansatz ist. Die problematischen Stellen sind markiert, weiß jemand weiter?
ich möchte mit einem Skript den Standardbrowser des Benutzers auslesen. Der Grund ist ein etwas älteres Programm, das den Standardbrowser über die Umgebungsvariable WEBBROWSER bestimmt und, wenn diese nicht gesetzt ist, auf netscape zurückfällt. netscape benutzt kein Mensch mehr und WEBBROWSER ist bei kaum jemandem gesetzt, deswegen muss eine Lösung her.
Ich habe mir das so vorgestellt, dass das Skript
- die Umgebungsvariable WEBBROWSER unangetastet lässt, wenn sie gesetzt ist,
- den KDE-Standardbrowser ausliest, wenn gerade eine KDE-Sitzung läuft,
- den GNOME-Standardbrowser ausliest, wenn gerade eine GNOME-Sitzung läuft,
- den GNOME-Standardbrowser bevorzugt, wenn einer der beiden Auslesvorgänge erfolgreich ist, aber nicht bestimmt werden kann, ob KDE oder GNOME läuft,
- auf mozilla zurückfällt, wenn keiner der Auslesvorgänge erfolgreich ist.
Das Ganze soll nach Möglichkeit distributionsunabhängig sein, also ohne hartkodierte SuSE-spezifische /opt-Pfade auskommen. Folgendes habe ich mir bisher ausgedacht:
Code:
#!/bin/sh
# Hier soll der Benutzer im Notfall den Ausweichbrowser festlegen können
# WEBBROWSER_DEFAULT=netscape
WEBBROWSER_DEFAULT=mozilla
# WEBBROWSER_DEFAULT=firefox
# WEBBROWSER_DEFAULT=galeon
# WEBBROWSER_DEFAULT=epiphany
# WEBBROWSER_DEFAULT=konqueror
# WEBBROWSER_DEFAULT=opera
# WEBBROWSER auf WEBBROWSER_DEFAULT setzen, falls noch nicht gesetzt
if [ $WEBBROWSER ] ; then
true
else
WEBBROWSER=$WEBBROWSER_DEFAULT
fi
# Falls möglich, das gerade gesetzte durch etwas besseres überschreiben
# Statt [ $KDE ] muss hier eine Prüfung rein, ob KDE läuft
if [ $KDE ] ; then
# PROBLEM: Was passiert, wenn das Programm kde-config fehlt?
# PROBLEM: Was passiert, wenn der Pfad des Benutzers in der Ausgabe von kde-config nicht zuerst kommt?
# PROBLEM: Was passiert, wenn der Benutzer nie einen Standardbrowser gesetzt hat?
# PROBLEM: Was passiert, wenn BrowserApplication auch in einer Kommentarzeile vorkommt?
WEBBROWSER=$(grep BrowserApplication $(kde-config --path config | sed 's|:.*||')/kdeglobals | sed 's|.*=[[:blank:]]*||')
else
# PROBLEM: Was passiert, wenn das Programm gconftool-2 fehlt?
# PROBLEM: Was passiert, wenn der Pfad zum Browser Leerzeichen enthält?
WEBBROWSER=$(gconftool-2 -g /desktop/gnome/url-handlers/http/command | sed 's| .*||')
fi
export WEBBROWSER
exec xnview "$@"