Build Electron-like apps without Electron
Project description
native-web-app
A drop-in replacement for Python's webbrowser.open()
that opens a native browser window without browser controls. Build Electron-style apps without shipping Electron!
import native_web_app
url = "http://localhost:8000/"
try:
native_web_app.open(url)
except Exception:
print(f"No web browser found. Please open a browser and point it to {url}.")
Demo
There is an example app in the repository.
API Documentation
This module exposes a single open
function:
def open(url: str, try_app_mode: bool = True) -> None:
"""
Open a URL in a modern browser.
In contrast to webbrowser.open, this method gracefully degrades
to a no-op on headless servers, where webbrowser.open would otherwise open lynx.
Args:
url:
The URL to open, e.g. http://localhost:1234.
try_app_mode:
If True, try to open the URL in "app mode", i.e. without browser controls.
This allows for Electron-like apps without having to deal with Electron.
If no suitable browser is found, it gracefully falls back to a regular browser instance.
Raises:
RuntimeError, if no suitable browser is found.
OSError, if the browser executable could not be executed.
For robustness, implementors should catch any Exception and take that as a signal that opening the URL failed.
"""
Compatibility
OS | Browser | Status (✅ app mode, ☑️ regular browser) |
---|---|---|
Windows 10 (2004) | Google Chrome 84 | ✅ |
Windows 10 (2004) | Microsoft Edge 84 | ✅ |
Windows 10 (2004) | Windows Subsystem for Linux | ☑️ |
Windows 10 (2004) | Default Browser | ☑️ |
Ubuntu 20.04 | Google Chrome 84 | ✅ |
Ubuntu 20.04 | Default Browser | ☑️ |
macOS Catalina | Google Chrome 84 | ✅ |
macOS Catalina | Default Browser | ☑️ |
Firefox implemented app mode ("site-specific browser functionality") in 2020,
but enabled it only for https://
URLs. This means it does not work with http://localhost:1234
or file://
URLs.
This makes it unsuitable for inclusion in native_web_app.
Changelog
This project follows semantic versioning.
native_web_app 1.0.2 (2020-08-12)
- Add support for Python 3.5 and 3.6.
native_web_app 1.0.1 (2020-08-12)
- Enforce browsers to start in background. This fixes compatibility with Microsoft Edge on Windows 10.
- Extend documentation on compatibility.
native_web_app 1.0.0 (2020-08-11)
- Initial Release
FAQ
How do I detect when the browser window is closed?
Monitoring the spawned browser process does not work reliably across platforms. We recommend you use JavaScript to notify your backend:
window.addEventListener('unload', function() {
navigator.sendBeacon("/shutdown");
}, false);
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for native_web_app-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2259aae94852dabbaaf99ba884983518d44dfb9b669fefa16fa89dc18a61f1a8 |
|
MD5 | 911aef7e8ae2b7e3f2a3add94cd19cb3 |
|
BLAKE2b-256 | a2fbd213b13689929d857605df15f1eee712e1f80f1d5639ceeba1a2f87a971b |