GUI desktop application for Vexy Lines style transfer
Project description
vexy-lines-run
Desktop GUI for Vexy Lines style transfer — load images, .lines files, or video, pick a style, export.
Built with CustomTkinter. Runs on macOS, Windows, and Linux wherever Tk is available.
Install
pip install vexy-lines-run
All dependencies (CustomTkinter, tkinterdnd2, PyAV, OpenCV, resvg, svglab, CTkMenuBarPlus) are installed automatically.
Launch
vexy-lines-run
Or:
python -m vexy_lines_run
From Python:
from vexy_lines_run import launch
launch()
Features
Three input tabs
- Lines — load
.linesfiles; export embedded previews or apply a new style - Images — load PNG, JPG, WEBP, and other rasters; style applied via the MCP API
- Video — load MP4, MOV, MKV, or similar; per-frame style transfer with audio passthrough
Style picker
Select a primary style from any .lines file. Optionally select an end style — the two are interpolated linearly across the input sequence. Both show inline thumbnail previews.
Export formats
| Format | Notes |
|---|---|
| SVG | Vector output from the style engine |
| PNG / JPG | Raster, with optional 2× upscale |
| MP4 | Re-encoded video with styled frames, optional audio |
| LINES | Copy .lines files directly (Lines tab only) |
Drag-and-drop onto any input list (via tkinterdnd2)
Background processing — export runs on a daemon thread; the progress bar updates live and the UI stays responsive
Architecture
app.py App(CTk) — window, three tabs, style pickers, export bar
processing.py process_export() — background thread dispatcher for lines/images/video
video.py probe() — PyAV-based video metadata and per-frame processing
widgets.py CTkRangeSlider — dual-handle range slider for video frame selection
Style transfer calls into vexy-lines-apy (MCPClient, apply_style, interpolate_style). Video uses PyAV for mux/demux and OpenCV for frame extraction.
Job folders (crash-safe exports)
All exports create a persistent job folder alongside the output directory. Every intermediate artifact — .lines documents, .svg exports, rasterized frames — is saved there. If the app quits or the process is interrupted mid-export, re-running the export resumes from where it left off.
The GUI never deletes job folders automatically. Use the CLI with --force to start fresh or --cleanup to remove the folder after completion.
Full documentation
Read the docs for the complete GUI guide, API reference, and more examples.
License
MIT
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 vexy_lines_run-1.0.45.tar.gz.
File metadata
- Download URL: vexy_lines_run-1.0.45.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","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 |
e34a0066dde68a5f7a11451fd7df0bf98e0b19ff6b9e239d1189003a17bcd1f2
|
|
| MD5 |
63fdd56ede756060022559c45c32f3a6
|
|
| BLAKE2b-256 |
ac577090b8175704603839f2a2b045c8cd92d4975caecc9d8a9352bb9480264a
|
File details
Details for the file vexy_lines_run-1.0.45-py3-none-any.whl.
File metadata
- Download URL: vexy_lines_run-1.0.45-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","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 |
5ee268d778a2f144cd40ee33d9e715862b9de8ec468ec4e817933ac6fb5f44c9
|
|
| MD5 |
abc80d1d760d4f74d7c379a2cad8c599
|
|
| BLAKE2b-256 |
ce84528e4003361d1408c5910ddde0e4cfef5bd51d7e8e0474bd3479d85201ce
|