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.dev0.tar.gz (85.3 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.dev0-cp310-abi3-win_amd64.whl (458.1 kB view details)

Uploaded CPython 3.10+Windows x86-64

lumiview-0.1.0.dev0-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.dev0-cp310-abi3-macosx_11_0_arm64.whl (598.5 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

lumiview-0.1.0.dev0-cp310-abi3-macosx_10_12_x86_64.whl (624.3 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: lumiview-0.1.0.dev0.tar.gz
  • Upload date:
  • Size: 85.3 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.dev0.tar.gz
Algorithm Hash digest
SHA256 c194a3d8d3dfc65f6b331b669a9f624fae7a24f25e7507df12ec8c0408469589
MD5 47ce73e4ed4bc2ec5d42bbb59e336071
BLAKE2b-256 82cee9f13bb25a5ba5d704072081658500411aa67992b8c14a14e543b47cc874

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev0.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.dev0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 118b313656a8f8d5a3b08b0f7a775f3c6f7732f8994daf599fcc45fa4e2a0e2c
MD5 53ce7e8ba5aaf5ecba485b98129edd42
BLAKE2b-256 133093e3470e678d4597879695703e5553867a8b6ba152371f30370a0cb7debc

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev0-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.dev0-cp310-abi3-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev0-cp310-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 c0c49433e8cf0f41da69d7482063e170f335b40bf6257ff9a4258a90e99e6ced
MD5 da93b9c964181e3879637f5d347e491e
BLAKE2b-256 0533f82b3766b94e19727a5d1577904c43d510dc3ed14d91e4ea0cd072ba5a78

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev0-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.dev0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be48eb2fd3dc41120fa0856cc1df2181c412ee704836c4981dfcdb2e8862c16e
MD5 b4992588ab68e905c9322134d2bfd349
BLAKE2b-256 dfbfe4f5fcd52c5ed89318e1bd1fda66bf8d6e80d461be353e0a3989147250ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev0-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.dev0-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4d597b8ddd98eb3e7ca4251d53c049988b1dddfbca8831c32401a1f84027cfac
MD5 8b6b1f52f5d33f519c846719bdc76328
BLAKE2b-256 d3a77e8e4eff74e391238644455139d3e840035758f5baa0a9860d189026aff4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev0-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