Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

LumiView

Pythonic webview desktop app framework — lightweight, out-of-the-box, async-first.

PyPI Python versions License: MPL-2.0

中文


⚠️ Early Development Stage — APIs May Change

LumiView is currently in pre-alpha. The API is functional but not yet stable — method names, parameter structures, and import paths may change between dev releases. We use dev releases to gather early feedback while retaining the flexibility to adjust the API.

Early adopters welcome! Try building an app with it and tell us what works well and what doesn't. Your feedback will directly shape the final stable API. When upgrading, please check the changelog and be prepared to adjust your code.


What is LumiView?

LumiView is an app development framework focused on system webviews. At the core layer, it wraps tao and wry (via wryview); at the top layer, it provides a clean, out-of-the-box, async-first Python API.

Architecture

flowchart TB
    subgraph py["Python Layer"]
        direction LR
        App ~~~ Window ~~~ Bridge ~~~ Task["Task[T]"] ~~~ Serve
    end

    subgraph rust["Rust Layer (PyO3)"]
        TaoWindow ~~~ EventLoop
    end

    subgraph plat["Platform WebView"]
        direction LR
        Win["Windows: WebView2"] ~~~ Mac["macOS: WKWebView"] ~~~ Linux["Linux: WebKitGTK"]
    end

    py --> rust --> plat

Threading model: Main thread (event loop + native ops) → Async thread (asyncio + user coroutines) → Thread pool (synchronous code).

Installation

pip install --pre lumiview

Quick Start

from lumiview import App, Window

app = App(name="HelloLumiView")

async def main():
    win = await Window.create(
        title="Hello LumiView!",
        url="https://example.com",
        width=900, height=640,
        devtools=True,
    )
    title = await win.eval_js("document.title")
    print(f"Page title: {title}")

app.run(main)

Key Features

  • 🧵 Unified async/sync — All cross-thread / async operations return Task. await, .result(), or .on_done() — same API, your choice.
  • 🌉 JS ↔ Python Bridge — Expose Python functions to JS via window.lumiview.invoke(). No HTTP server, no manual serialization required.
  • 🪟 Native window effects — Acrylic, Mica, Vibrancy via window-vibrancy.
  • 🎨 Custom titlebar — Declarative data-lumiview-drag-region drag areas + built-in lumiview.window.* JS API (minimize / maximize / close).
  • 📁 Static serving & WSGI & ASGI — Directly load local files, proxy to WSGI apps (Flask, Django, etc.), or run FastAPI/Starlette apps without external servers.

For runnable code, see the examples/ directory.

Examples

Example Description
hello_world.py Minimal app — create window, load URL (async)
hello_world_sync.py Same as above, using .result() — pure synchronous style
bridge_demo.py JS ↔ Python IPC — sync/async commands, error handling
multi_window.py Multi-window + shared WebContext
custom_titlebar.py Frameless window + native effects + drag regions
events.py App/Window hook events + JS event emission
fastapi_demo.py FastAPI running via source=ASGI(...)

Development Status

  • Window management (TaoWindow + Window)
  • WebView embedding (wryview)
  • JS ↔ Python Bridge (invoke/listen IPC)
  • Hook event system (AppHookEvent / WindowHookEvent)
  • Unified async/sync Task interface
  • Static file serving + WSGI proxy
  • ASGI adapter (FastAPI, Starlette, etc.)
  • Native window effects (Acrylic / Mica / Vibrancy)
  • Custom titlebar
  • API stabilization (may 0.2.x)
  • Complete documentation site

Contributing

This is an early-stage project — your feedback is crucial.

Please read CONTRIBUTING.md before submitting PRs — the API is still in flux and significant changes require prior discussion.

License

Copyright (c) 2026 Xiaosu.

Distributed under the terms of the Mozilla Public License Version 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lumiview-0.1.0.dev1.tar.gz (85.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lumiview-0.1.0.dev1-cp310-abi3-win_amd64.whl (456.9 kB view details)

Uploaded CPython 3.10+Windows x86-64

lumiview-0.1.0.dev1-cp310-abi3-manylinux_2_38_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.38+ x86-64

lumiview-0.1.0.dev1-cp310-abi3-macosx_11_0_arm64.whl (596.2 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

lumiview-0.1.0.dev1-cp310-abi3-macosx_10_12_x86_64.whl (623.0 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file lumiview-0.1.0.dev1.tar.gz.

File metadata

  • Download URL: lumiview-0.1.0.dev1.tar.gz
  • Upload date:
  • Size: 85.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for lumiview-0.1.0.dev1.tar.gz
Algorithm Hash digest
SHA256 a8f3d65a0b5eafe10547c0c39bf88ecab870e1f7823a2e1c12775ff8b37eaa35
MD5 37ff0fd8319d6c6171dd55705cbc079c
BLAKE2b-256 03e2a4fb9f316a0938210555dc80c4935e416937cf2be2f482b29877802fe110

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev1.tar.gz:

Publisher: publish-to-pypi.yml on xiaosuawa/LumiView

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lumiview-0.1.0.dev1-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 becfbc17b983b08fbf3e98907e0ed95d2fccbedd60a2b0194d2358236d8fa894
MD5 52cddf32882717c3f79adc860d8ede4c
BLAKE2b-256 f4b47fdb12215a8120a3beb8ce563f6cf7af072ff0233a59d44a56663ceb3b57

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev1-cp310-abi3-win_amd64.whl:

Publisher: publish-to-pypi.yml on xiaosuawa/LumiView

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lumiview-0.1.0.dev1-cp310-abi3-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev1-cp310-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 24d1e3cd6278ad966c994d102671d7eb29dc93e27ce60da84401e54485693d74
MD5 e6c5c1a424bdf23634f9f2297b474379
BLAKE2b-256 726d383942ee2b88306b4612a593a04d4756a7aead6b2405c7b909959f1de2d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev1-cp310-abi3-manylinux_2_38_x86_64.whl:

Publisher: publish-to-pypi.yml on xiaosuawa/LumiView

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lumiview-0.1.0.dev1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98e1aa2cc02347add25def7ef0dfbca9485039611d77b131ca0ac2b54e69cb0a
MD5 69c22400c5e52f6dc7fb8149791b04ad
BLAKE2b-256 e8d5812f0067e77dbae94b884fe4aee030ecf0c0e87982c0896f9a92de1e7a59

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: publish-to-pypi.yml on xiaosuawa/LumiView

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lumiview-0.1.0.dev1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 db2e292b5b368b692d8a8f4d91d372f13a8f154f2f5ef80e0af4158c9b505f3a
MD5 b555c9811a882c4138223455f2cc1621
BLAKE2b-256 9ceb377e467f74f02b4a4198f7dbc706613d20b886099351e6d5cd463489657a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev1-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: publish-to-pypi.yml on xiaosuawa/LumiView

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page