Installation¶
What you need¶
- Python 3.11+ (3.12 recommended)
- Tk/Tcl: ships with most Python installs. On Linux, install
python3-tkfrom your package manager. - Vexy Lines desktop app: the style engine runs as an MCP server inside the app on
localhost:47384. Without it, the GUI launches but can only extract previews from.linesfiles and copy.linesfiles. Anything involving style transfer requires the app running.
Quick start¶
macOS¶
Open Terminal, paste, press Enter:
curl -LsSf https://astral.sh/uv/install.sh | sh && "$HOME/.local/bin/uvx" --python 3.12 vexy-lines-run@latest
Windows¶
Open Command Prompt, paste, press Enter:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex; $env:Path = \"$HOME\.local\bin;$HOME\AppData\Roaming\uv;$env:Path\"; uvx --python 3.12 vexy-lines-run@latest"
These one-liners install uv (a fast Python package manager) and run vexy-lines-run in an isolated environment. Nothing is permanently installed on your system. uvx manages it.
Install with pip¶
pip install vexy-lines-run
With uv (faster):
uv add vexy-lines-run
What's included¶
The base install includes all functionality (video processing, drag-and-drop, and native menus). No optional extras or feature flags needed.
Runtime dependencies¶
These install automatically with the package:
| Package | Purpose |
|---|---|
vexy-lines-apy |
MCP client and style engine bindings |
vexy-lines-py |
.lines file parser (transitive, via vexy-lines-apy) |
customtkinter |
Modern Tk widgets with dark mode |
CTkMenuBarPlus |
Enhanced menu bar with cascading dropdown menus |
Pillow |
Image loading, thumbnails, format conversion |
loguru |
Debug logging (not shown to users) |
tkinterdnd2 |
Drag-and-drop file support |
opencv-python-headless |
Video frame reading and writing |
svglab or resvg-py |
SVG-to-raster conversion for video/image export |
System dependencies for video¶
Video processing also depends on system binaries (not Python packages):
| Binary | Required for | How to install |
|---|---|---|
ffmpeg |
Audio merging in MP4 exports | brew install ffmpeg (macOS), apt install ffmpeg (Debian/Ubuntu), ffmpeg.org (Windows) |
ffprobe |
Audio stream detection | Ships with ffmpeg |
Without ffmpeg, video export still works, but without audio passthrough.
Launch¶
Three ways:
# Installed console script
vexy-lines-run
# Module entry point
python -m vexy_lines_run
# From Python
from vexy_lines_run import launch
launch()
All three do the same thing: create an App instance in dark mode and call mainloop().
Verify¶
From Python:
from vexy_lines_run import App
print("vexy-lines-run is ready")
Platform notes¶
macOS¶
Works out of the box. Tk ships with the Python.org and Homebrew installers.
Windows¶
Works out of the box. Tk ships with the python.org installer.
Linux¶
Tk might not be bundled with your system Python. Install it:
# Debian/Ubuntu
sudo apt install python3-tk
# Fedora
sudo dnf install python3-tkinter
# Arch
sudo pacman -S tk
Drag-and-drop depends on the Tcl/Tk DnD extension. On some minimal Linux installs, the underlying tkdnd library may be missing even if tkinterdnd2 is installed. The app works without it: you use the buttons and menus instead.
Development install¶
git clone https://github.com/vexyart/vexy-lines.git
cd vexy-lines/vexy-lines-run
uv venv --python 3.12
uv pip install -e ".[dev]"
Run tests:
uvx hatch test
The test suite mocks the MCP client and macOS APIs, so tests run on any platform without the Vexy Lines app.