diff options
author | Georg Brandl <georg@python.org> | 2007-03-16 07:55:09 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2007-03-16 07:55:09 (GMT) |
commit | 8f06d02935939629209b303a8ec54cf2db0cc302 (patch) | |
tree | 7b677430a880b447cb7a3615cdd82b7b34ddcbe5 | |
parent | 77c67bd5858ec0878f3cab93eb4b1ae53186688d (diff) | |
download | cpython-8f06d02935939629209b303a8ec54cf2db0cc302.zip cpython-8f06d02935939629209b303a8ec54cf2db0cc302.tar.gz cpython-8f06d02935939629209b303a8ec54cf2db0cc302.tar.bz2 |
Bug #1681228: the webbrowser module now correctly uses the default
GNOME or KDE browser, depending on whether there is a session of one
of those present. Also, it tries the Windows default browser before
trying Mozilla variants.
(backport)
-rw-r--r-- | Lib/webbrowser.py | 44 | ||||
-rw-r--r-- | Misc/NEWS | 5 |
2 files changed, 31 insertions, 18 deletions
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index 3735587..180803c 100644 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -437,19 +437,16 @@ class Grail(BaseBrowser): # a console terminal or an X display to run. def register_X_browsers(): - # The default Gnome browser - if _iscommand("gconftool-2"): - # get the web browser string from gconftool - gc = 'gconftool-2 -g /desktop/gnome/url-handlers/http/command 2>/dev/null' - out = os.popen(gc) - commd = out.read().strip() - retncode = out.close() - - # if successful, register it - if retncode is None and commd: - register("gnome", None, BackgroundBrowser(commd.split())) - - # First, the Mozilla/Netscape browsers + + # The default GNOME browser + if "GNOME_DESKTOP_SESSION_ID" in os.environ and _iscommand("gnome-open"): + register("gnome-open", None, BackgroundBrowser("gnome-open")) + + # The default KDE browser + if "KDE_FULL_SESSION" in os.environ and _iscommand("kfmclient"): + register("kfmclient", Konqueror, Konqueror("kfmclient")) + + # The Mozilla/Netscape browsers for browser in ("mozilla-firefox", "firefox", "mozilla-firebird", "firebird", "seamonkey", "mozilla", "netscape"): @@ -508,17 +505,28 @@ if os.environ.get("TERM"): if sys.platform[:3] == "win": class WindowsDefault(BaseBrowser): def open(self, url, new=0, autoraise=1): - os.startfile(url) - return True # Oh, my... + try: + os.startfile(url) + except WindowsError: + # [Error 22] No application is associated with the specified + # file for this operation: '<URL>' + return False + else: + return True _tryorder = [] _browsers = {} - # Prefer mozilla/netscape/opera if present + + # First try to use the default Windows browser + register("windows-default", WindowsDefault) + + # Detect some common Windows browsers, fallback to IE + iexplore = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"), + "Internet Explorer\\IEXPLORE.EXE") for browser in ("firefox", "firebird", "seamonkey", "mozilla", - "netscape", "opera"): + "netscape", "opera", iexplore): if _iscommand(browser): register(browser, None, BackgroundBrowser(browser)) - register("windows-default", WindowsDefault) # # Platform support for MacOS @@ -179,6 +179,11 @@ Core and builtins Library ------- +- Bug #1681228: the webbrowser module now correctly uses the default + GNOME or KDE browser, depending on whether there is a session of one + of those present. Also, it tries the Windows default browser before + trying Mozilla variants. + - Patch #1681153: the wave module now closes a file object it opened if initialization failed. |