Skip to main content

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 .lines files; 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. Matching image-filter chains on fills are preserved and interpolated as part of the style.

AI Rename Layers & Fills

Lines ▸ AI Rename Layers & Fills… renames a .lines document's generic captions (Layer, Blended, Linear) to describe what each fill actually draws, then names each layer from its fills — only the captions change. After a confirmation and a Save dialog, each fill is rendered in Vexy Lines and described by a vision model on a background thread (progress shows in the title bar); the renamed copy defaults to <stem>-renamed.lines. Needs the [ai] extra (pip install "vexy-lines-run[ai]"), the Vexy Lines app, and an OpenAI-compatible /v1 LLM endpoint — set it in Lines ▸ AI Rename Settings… or via VEXY_LINES_LLM_API_URL, VEXY_LINES_LLM_API_KEY, VEXY_LINES_LLM_MODEL_VISION, and VEXY_LINES_VLM_MODEL. See the full guide.

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


Download files

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

Source Distribution

vexy_lines_run-1.0.50.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

vexy_lines_run-1.0.50-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

Details for the file vexy_lines_run-1.0.50.tar.gz.

File metadata

  • Download URL: vexy_lines_run-1.0.50.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","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

Hashes for vexy_lines_run-1.0.50.tar.gz
Algorithm Hash digest
SHA256 3974dfe4cf497f74586df083cd4deb9d08d916494d4e68e13e10c046e1fa1c45
MD5 ebe7885ff69a74d61d3011e6e71d888f
BLAKE2b-256 82b38d52fe93bf4fb6d2dd42466a80d6a1f5cce54f728d1a9cf5c9c3df2bcf37

See more details on using hashes here.

File details

Details for the file vexy_lines_run-1.0.50-py3-none-any.whl.

File metadata

  • Download URL: vexy_lines_run-1.0.50-py3-none-any.whl
  • Upload date:
  • Size: 37.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","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

Hashes for vexy_lines_run-1.0.50-py3-none-any.whl
Algorithm Hash digest
SHA256 d2b8bca08a1a3ecbed4bc2af0e586e87374ce7559333efb661c44698036e8881
MD5 033acefe11fd8022031fd5ec95ff7744
BLAKE2b-256 0bb489edfe1b3e8bb36ed892e7d6930ff835ce1d69ff66ac33ba010034a26842

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