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.0 (2020-08-11)
- Initial Release
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.
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
File details
Details for the file native_web_app-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: native_web_app-1.0.1-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8051ea8066895bcd4f5222a6d82b1ad9f68305550a3978690c9ad1619b18492f |
|
MD5 | e55d8b348bd3c91a993b3aa1e1df5a9e |
|
BLAKE2b-256 | d435e70fa45146b2fadc8d41c218d4c9687cb9b72b0102399fd200b04cba1b70 |