summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2007-03-16 07:55:09 (GMT)
committerGeorg Brandl <georg@python.org>2007-03-16 07:55:09 (GMT)
commit8f06d02935939629209b303a8ec54cf2db0cc302 (patch)
tree7b677430a880b447cb7a3615cdd82b7b34ddcbe5
parent77c67bd5858ec0878f3cab93eb4b1ae53186688d (diff)
downloadcpython-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.py44
-rw-r--r--Misc/NEWS5
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
diff --git a/Misc/NEWS b/Misc/NEWS
index b539218..dd89d31 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.