()
| 478 | |
| 479 | |
| 480 | def register_standard_browsers(): |
| 481 | global _tryorder |
| 482 | _tryorder = [] |
| 483 | |
| 484 | if sys.platform == 'darwin': |
| 485 | register("MacOSX", None, MacOSXOSAScript('default')) |
| 486 | register("chrome", None, MacOSXOSAScript('chrome')) |
| 487 | register("firefox", None, MacOSXOSAScript('firefox')) |
| 488 | register("safari", None, MacOSXOSAScript('safari')) |
| 489 | # OS X can use below Unix support (but we prefer using the OS X |
| 490 | # specific stuff) |
| 491 | |
| 492 | if sys.platform == "ios": |
| 493 | register("iosbrowser", None, IOSBrowser(), preferred=True) |
| 494 | |
| 495 | if sys.platform == "serenityos": |
| 496 | # SerenityOS webbrowser, simply called "Browser". |
| 497 | register("Browser", None, BackgroundBrowser("Browser")) |
| 498 | |
| 499 | if sys.platform[:3] == "win": |
| 500 | # First try to use the default Windows browser |
| 501 | register("windows-default", WindowsDefault) |
| 502 | |
| 503 | # Detect some common Windows browsers, fallback to Microsoft Edge |
| 504 | # location in 64-bit Windows |
| 505 | edge64 = os.path.join(os.environ.get("PROGRAMFILES(x86)", "C:\\Program Files (x86)"), |
| 506 | "Microsoft\\Edge\\Application\\msedge.exe") |
| 507 | # location in 32-bit Windows |
| 508 | edge32 = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"), |
| 509 | "Microsoft\\Edge\\Application\\msedge.exe") |
| 510 | for browser in ("firefox", "seamonkey", "mozilla", "chrome", |
| 511 | "opera", edge64, edge32): |
| 512 | if shutil.which(browser): |
| 513 | register(browser, None, BackgroundBrowser(browser)) |
| 514 | if shutil.which("MicrosoftEdge.exe"): |
| 515 | register("microsoft-edge", None, Edge("MicrosoftEdge.exe")) |
| 516 | else: |
| 517 | # Prefer X browsers if present |
| 518 | # |
| 519 | # NOTE: Do not check for X11 browser on macOS, |
| 520 | # XQuartz installation sets a DISPLAY environment variable and will |
| 521 | # autostart when someone tries to access the display. Mac users in |
| 522 | # general don't need an X11 browser. |
| 523 | if sys.platform != "darwin" and (os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY")): |
| 524 | try: |
| 525 | cmd = "xdg-settings get default-web-browser".split() |
| 526 | raw_result = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) |
| 527 | result = raw_result.decode().strip() |
| 528 | except (FileNotFoundError, subprocess.CalledProcessError, |
| 529 | PermissionError, NotADirectoryError): |
| 530 | pass |
| 531 | else: |
| 532 | global _os_preferred_browser |
| 533 | _os_preferred_browser = result |
| 534 | |
| 535 | register_X_browsers() |
| 536 | |
| 537 | # Also try console browsers |
no test coverage detected