Shellac Webview
A Selenium wrapper for building desktop applications using web technologies. It uses FastAPI for backend communication and Selenium for browser automation.
Installation
pip install shellac-webview
Basic Usage
from shellac import Window
win = Window()
@win.bind
def my_function(event):
return "Data from Python"
html = """
<button onclick="run()">Run</button>
<script>
async function run() {
const result = await webui.call("my_function");
console.log(result);
}
</script>
"""
win.show(html)
win.wait()
Binding
You can bind functions in python to be called from js using webui.call("func_name")
Function Binding
You can bind a specific function to a name.
def my_function(event):
return f"Hello, {event.data[0]}!"
win.bind("greet", my_function)
JS Usage:
const response = await webui.call("greet", "Alice");
console.log(response); // "Hello, Alice!"
Decorator Binding
Use the @bind decorator for a cleaner syntax.
@win.bind
def calculate(event):
return event.data[0] * 2
JS Usage: webui.call("calculate", 21);
Class/Namespace Binding
You can bind an entire class or instance. All public methods (not starting with _) will be available in JavaScript.
@win.bind("db")
class Database:
def get_user(self, event):
return {"id": event.data[0], "name": "John Doe"}
or with
win.bind("db", Database())
JS Usage:
const user = await webui.call("db.get_user", 1);
Class Mapping
If you bind a class without a prefix, its methods are mapped to the top-level.
class API:
def status(self, event):
return "Online"
win.bind(API)
JS Usage: webui.call("status");
The Event Object
Every bound Python function receives an Event object as its first argument.
event.window: TheWindowinstance.event.data: A list of arguments passed from JavaScript.event.element: The name of the function called.
Window Configuration
You can configure the window size and behavior before calling show().
win = Window()
win.config.width = 1200
win.config.height = 900
win.config.hide_controls = True # Hides address bar/tabs (App Mode)
win.config.kiosk = False # Fullscreen mode
Browser Selection
By default, the library looks for Chrome, Edge, or Firefox. You can force a specific browser:
from webui import Browser
win.show("index.html", browser=Browser.Firefox)
Available options: Chrome, Firefox, Edge, Chromium, Brave, Vivaldi.
Other functions
Once the window is running, you can navigate to new pages or execute JavaScript from Python.
# Navigate to a new URL
win.navigate("https://google.com")
# Execute JS directly
win.run_js("alert('Hello from Python!')")
# Change title
win.set_title("New Title")
Metadata
Release files for shellac-webview 1.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shellac_webview-1.7.1.tar.gz | 13.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shellac_webview-1.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.9 kB
Release files / shellac_webview-1.7.1.tar.gz
| Download URL | shellac_webview-1.7.1.tar.gz |
|---|---|
| Size | 13.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb79af23a2b1624623c36fc0105c3cccf1c7c4755e351c7197da905137f8e36e
|
|
BLAKE2b-256 checksum How to use checksums |
b90b0c8f59ddc5a8418bee23add19580caed7a3eca1090216b95d891d2ee9caf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / shellac_webview-1.7.1-py3-none-any.whl
| Download URL | shellac_webview-1.7.1-py3-none-any.whl |
|---|---|
| Size | 13.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1599d96522e56570be052e569ef3fcc0617422610db4f7a12c93335b9eab506b
|
|
BLAKE2b-256 checksum How to use checksums |
19b8309c2c4a6f23d4bc6a43b493ec34f29babb461e3512713ebebde416d13a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log