Make desktop overlays using existing web-techs
Project description
ovllib_dev
ovllib_dev is a small CLI for creating desktop overlay projects with modern web
tooling. It can scaffold a frontend project, generate an overlay configuration
file, and package the built static site into a .ovl archive.
Features
- Interactive project setup
- Support for React, Vue, Solid, SvelteKit, and vanilla Vite projects
- TypeScript and JavaScript project templates
- Package manager support for
npm,pnpm,yarn, andbun - Static build configuration for overlay packaging
.ovlarchive generation from frontend build output
Requirements
- Python 3.10 or newer
uvfor local development- One supported JavaScript package manager:
npmpnpmyarnbun
The selected package manager must be installed before running project setup or build commands.
Installation
pip install ovllib_dev
ovllib_dev --version
Usage
Create a new overlay project
ovllib_dev init
The setup flow asks for:
- Project name
- Package manager
- Frontend framework
- Frontend language
After confirmation, ovllib_dev creates the frontend project and writes an
ovl_config.toml file into the generated project directory.
Build an overlay package
From inside a generated overlay project, run:
uv run python /path/to/ovllib_dev/main.py build
The build command:
- Reads
ovl_config.toml - Runs the configured frontend build command
- Copies the static frontend output and overlay config into a temporary package
- Creates a
.ovlarchive in the configured build output directory
By default, packaged overlays are written to:
build/ovl/<project-name>.ovl
Configuration
Generated projects include an ovl_config.toml file like this:
# Auto-generated by ovl setup
[project]
name = "my-overlay"
entry_dir = "web"
entry_file = "index.html"
[window]
width = 600
height = 400
x = 40
y = 40
movable = true
move_element = ""
[build]
framework = "react"
package_manager = "npm"
frontend_output = "build"
build_dist = "build/ovl"
Project settings
name: Project and output package nameentry_dir: Directory inside the package that contains the frontend filesentry_file: HTML file used as the overlay entry point
Window settings
widthandheight: Initial overlay sizexandy: Initial overlay positionmovable: Whether the overlay can be movedmove_element: Optional selector or element identifier used for dragging
Build settings
framework: Frontend framework selected during setuppackage_manager: Package manager used for build commandsfrontend_output: Static frontend build directorybuild_dist: Directory where.ovlpackages are written
Supported frontend stacks
| Framework | TypeScript | JavaScript |
|---|---|---|
| React | Yes | Yes |
| Vue | Yes | Yes |
| Solid | Yes | Yes |
| SvelteKit | Yes | Yes |
| Vanilla | Yes | Yes |
Vite-based projects are configured to emit static files into build.
SvelteKit projects are configured with @sveltejs/adapter-static and
prerendering enabled.
Development
Run the CLI locally:
uv run python main.py init
uv run python main.py build
Check Python syntax:
uv run python -m py_compile main.py build.py init.py
Project structure
.
├── build.py # Packages a built frontend into a .ovl archive
├── init.py # Interactive project scaffolding
├── main.py # CLI entry point
├── pyproject.toml # Python project metadata and dependencies
├── uv.lock # Locked Python dependencies
└── README.md
Notes
robots.txtis excluded from packaged frontend output.- Existing overlay build output is ignored while copying frontend files, which
prevents previously generated
.ovlpackages from being nested in new builds. - The
buildcommand expectsovl_config.tomlto be present in the current working directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ovllib_dev-0.1.3.tar.gz.
File metadata
- Download URL: ovllib_dev-0.1.3.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d09ba3779015a7f1231d7d08cb820539dc0891249497fbbd42fb1c586f47ba71
|
|
| MD5 |
3a9d0e3cd35adbd8b0f39c1d4f29c1c9
|
|
| BLAKE2b-256 |
c28b83b7a8eaa96cf2eeba5ee1695740a2bfda4b6c071fa66272dd963e2a6499
|
File details
Details for the file ovllib_dev-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ovllib_dev-0.1.3-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27ae36bc0eeb2d74bdf8adb5d8c50fcef2bc4627f9206c62ae69ba004711c445
|
|
| MD5 |
d69f98dec110a8717e481470ea31aac8
|
|
| BLAKE2b-256 |
32a4285bf0ae1fa20db98d0bddeb4be270fb892122c8f6779ea8b1d5ed206bd1
|