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).

Documentation

Installation

pip install --pre lumiview

Quick Start

from lumiview import App, Window, WindowOptions

app = App(name="HelloLumiView")

async def main():
    win = await Window.create(WindowOptions(
        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).
  • 📋 Native menus — Per-item on_activate callbacks + global MenuItemActivatedEvent; macOS default app menu installed automatically, window menu bars on Windows.
  • 🎛️ System tray — Cross-platform tray icons with context menus and click events; close-to-tray pattern.
  • 📁 Static serving & WSGI & ASGI — Directly load local files, proxy to WSGI apps (Flask, Django, etc.), or run FastAPI/Starlette apps without external servers.

Logging

LumiView logs to the lumiview logger tree using the standard logging configuration. To see internal diagnostics, raise the level of the lumiview logger:

import logging

logging.getLogger("lumiview").setLevel(logging.INFO)   # lifecycle events
logging.getLogger("lumiview").setLevel(logging.DEBUG)  # + scheduling / dispatch

When reporting a bug, please include the DEBUG log output from your repro — it covers window / tray lifecycle and event dispatch, which usually pinpoints the issue. See CONTRIBUTING.md.

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(...)
django_demo.py Django running via source=WSGI(...) — template rendering, form POST, JSON APIs
menu.py Native menus — accelerators, on_activate callbacks, macOS app menu / Windows window menu bar
tray.py System tray — close-to-tray pattern, tray context menu

Development Status

  • Window management (TaoWindow + Window)
  • WebView embedding (wryview)
  • JS ↔ Python Bridge (invoke/listen IPC)
  • Event class system (WindowEvent / AppEvent)
  • Unified async/sync Task interface
  • Static file serving + WSGI proxy
  • ASGI adapter (FastAPI, Starlette, etc.)
  • Native window effects (Acrylic / Mica / Vibrancy)
  • Custom titlebar
  • Native menus (muda)
  • System tray (tray-icon)
  • API stabilization (maybe 0.2.x)
  • Complete documentation site

Contributing

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

Due to limited personal time, some features may not be completed promptly — PRs and other contributions are warmly welcomed.

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.dev5.tar.gz (148.8 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.dev5-cp310-abi3-win_amd64.whl (650.8 kB view details)

Uploaded CPython 3.10+Windows x86-64

lumiview-0.1.0.dev5-cp310-abi3-win32.whl (600.7 kB view details)

Uploaded CPython 3.10+Windows x86

lumiview-0.1.0.dev5-cp310-abi3-manylinux_2_34_x86_64.whl (854.8 kB view details)

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

lumiview-0.1.0.dev5-cp310-abi3-macosx_11_0_arm64.whl (864.6 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

lumiview-0.1.0.dev5-cp310-abi3-macosx_10_12_x86_64.whl (906.9 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: lumiview-0.1.0.dev5.tar.gz
  • Upload date:
  • Size: 148.8 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.dev5.tar.gz
Algorithm Hash digest
SHA256 477f470d57e00485880002e9734d8ffd4323424529171f9c20b2b18b6b123bcb
MD5 567cfa60c362c420f45e943bcce562bd
BLAKE2b-256 1efd0020f749366c25cbefc26dd7f7682265a616b5cfa473cb0ab58029bbab7d

See more details on using hashes here.

Provenance

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

Publisher: build.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.dev5-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1c61e7941ffeaa3556b79b70de651a3be21df79d73bd298517e75c5844c2fa50
MD5 68c97bb2333b1058dc21d7c818391612
BLAKE2b-256 15e71411bb52f7a9199f42851be9c13328e784c94df04e6deeccdfbf12b63c9b

See more details on using hashes here.

Provenance

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

Publisher: build.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.dev5-cp310-abi3-win32.whl.

File metadata

  • Download URL: lumiview-0.1.0.dev5-cp310-abi3-win32.whl
  • Upload date:
  • Size: 600.7 kB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for lumiview-0.1.0.dev5-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 2db2043ffd31b9bb890150a20985b82e201e7c09480c33df92a44d59c0ff3d88
MD5 a44a2e87e438a290be20815f724b8f7c
BLAKE2b-256 ce870eaf2d03aef642578570b07e5d40a81f845a1072721e03035cb1f6c0caaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev5-cp310-abi3-win32.whl:

Publisher: build.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.dev5-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev5-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1de85253509046c3bd8d068b134c726e3d40a6ff9aae16dfd307e86c6541382e
MD5 1052195cc23683b7c3b7a71aa70c391c
BLAKE2b-256 ff3fee5bd4eda8683a1ae1c1ed31caec91fbb1a6a54b860b3c848e5fbd9f5db4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumiview-0.1.0.dev5-cp310-abi3-manylinux_2_34_x86_64.whl:

Publisher: build.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.dev5-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev5-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9d9757dffbc96dd76d78abe8be9c1d8117010890f22e7f04cbf734c4c3209e3
MD5 cd7b3ad37c7786ad21c6d49cccbe31bf
BLAKE2b-256 d37c0d8b6f39445bf18fd6b8663e8a30a7f4478cf59f8ee83c27b5d7c20f6569

See more details on using hashes here.

Provenance

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

Publisher: build.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.dev5-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lumiview-0.1.0.dev5-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 23fdfbc5b9a47717abd45f2b71e3678dabdd9ecbc130ac7b4c3f1c864645986f
MD5 08157875374d4961e2a88cdbb09295b7
BLAKE2b-256 f7293d50510460446f3a8d11d054191d1664f90d276c776a59ab6fe6e16809ef

See more details on using hashes here.

Provenance

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

Publisher: build.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