Skip to main content

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: The Window instance.
  • 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)

Source distribution for shellac-webview 1.7.1
File Size Uploaded
shellac_webview-1.7.1.tar.gz 13.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shellac-webview 1.7.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.7.1 This release

2 release files

1.7.0

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page