Skip to main content

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, and bun
  • Static build configuration for overlay packaging
  • .ovl archive generation from frontend build output

Requirements

  • Python 3.10 or newer
  • uv for local development
  • One supported JavaScript package manager:
    • npm
    • pnpm
    • yarn
    • bun

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:

  1. Reads ovl_config.toml
  2. Runs the configured frontend build command
  3. Copies the static frontend output and overlay config into a temporary package
  4. Creates a .ovl archive 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 name
  • entry_dir: Directory inside the package that contains the frontend files
  • entry_file: HTML file used as the overlay entry point

Window settings

  • width and height: Initial overlay size
  • x and y: Initial overlay position
  • movable: Whether the overlay can be moved
  • move_element: Optional selector or element identifier used for dragging

Build settings

  • framework: Frontend framework selected during setup
  • package_manager: Package manager used for build commands
  • frontend_output: Static frontend build directory
  • build_dist: Directory where .ovl packages 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.txt is excluded from packaged frontend output.
  • Existing overlay build output is ignored while copying frontend files, which prevents previously generated .ovl packages from being nested in new builds.
  • The build command expects ovl_config.toml to be present in the current working directory.

Project details


Download files

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

Source Distribution

ovllib_dev-0.1.3.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

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

ovllib_dev-0.1.3-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

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

Hashes for ovllib_dev-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d09ba3779015a7f1231d7d08cb820539dc0891249497fbbd42fb1c586f47ba71
MD5 3a9d0e3cd35adbd8b0f39c1d4f29c1c9
BLAKE2b-256 c28b83b7a8eaa96cf2eeba5ee1695740a2bfda4b6c071fa66272dd963e2a6499

See more details on using hashes here.

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

Hashes for ovllib_dev-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 27ae36bc0eeb2d74bdf8adb5d8c50fcef2bc4627f9206c62ae69ba004711c445
MD5 d69f98dec110a8717e481470ea31aac8
BLAKE2b-256 32a4285bf0ae1fa20db98d0bddeb4be270fb892122c8f6779ea8b1d5ed206bd1

See more details on using hashes here.

Supported by

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