When checking if the registering browser is the "OS preferred browser", do not use a substring search - that makes no sense: one can have a preferred browser that looks like a super-string of a known browser, e.g. "firefox-nightly" vs "firefox".
https://github.com/python/cpython/issues/108172 explains in more detail, and lays out a potential better future enhancement for this case of just using xdg-open. We'll go with this for now.
---------
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
# Preferred browsers go to the front of the list.
# Need to match to the default browser returned by xdg-settings, which
# may be of the form e.g. "firefox.desktop".
- if preferred or (_os_preferred_browser and name in _os_preferred_browser):
+ if preferred or (_os_preferred_browser and f'{name}.desktop' == _os_preferred_browser):
_tryorder.insert(0, name)
else:
_tryorder.append(name)
--- /dev/null
+``webbrowser`` honors OS preferred browser on Linux when its desktop entry name contains the text of a known browser name.