Skip to content

User Guide

Pablo Martínez López edited this page Oct 21, 2026 · 29 revisions

User Guide

English · Español

Proxy Builder turns a pasted Magic: The Gathering deck list into a print-ready PDF of proxy cards. This page walks through every user-facing feature end to end, how to install the app on each OS, and what the Settings dialog controls. Screenshots are taken from the English UI.

Everything heavy (Scryfall lookups, downloads, image processing, PDF, statistics) runs in Rust on your machine; the interface only draws state (see Architecture). The only network traffic is to Scryfall and a closed list of other sources (see Scryfall Integration and External Sources).

Proxy Builder with a deck loaded

Contents

Installation

Installers for each version are attached to the repository's Releases page. They are produced by the release workflow (.github/workflows/release.yml) on a GitHub runner per platform; src-tauri/tauri.conf.json has bundle.targets: "all", so Tauri builds every format native to the platform it runs on. See Releases and Auto-Updates.

OS Installers (what the updater recognises) Notes
Linux (x86_64) .deb, .rpm, AppImage Built on Ubuntu 22.04 with WebKitGTK 4.1. Installing an update from a .deb/.rpm asks for your password (via pkexec).
Windows (x86_64) NSIS setup (.exe), MSI The updater runs the installer in passive mode (plugins.updater.windows.installMode).
macOS .app bundle (and the DMG Tauri produces), for Apple Silicon (aarch64-apple-darwin) and Intel (x86_64-apple-darwin) Two separate builds, one per architecture.

Gotchas that matter to a user:

  • The installers are not code-signed for the OS. Windows SmartScreen shows "unknown publisher" (More info, then Run anyway); on macOS, Gatekeeper asks you to open the app with right click, then Open, the first time. (They are signed for the in-app updater; that is a different signature.)
  • Self-update exists from version 2.4.0. Older versions must be replaced by hand once. After that the app checks on start and every 6 hours, downloads quietly and offers to restart.
  • The window starts hidden and appears when the page has loaded, so you do not see a white flash.
  • The default UI language is English. Settings offers 15: Spanish, English, French, German, Italian, Portuguese (Brazil), Romanian, Polish, Dutch, Russian, Ukrainian, Japanese, Korean, Simplified and Traditional Chinese (the choice is remembered). A string not yet translated into your language shows in English.

Building from source is covered in Development Setup.

The main window

The top bar has three tabs and a few buttons:

Part What it is
Deck tab The working view: three resizable panels (widths are remembered). Left: the card list (features/decklist). Centre: the sheets preview (features/preview). Right: export settings (features/export).
Design tab The card editor's "Design" view for creating your own version of a card (features/disenar).
Library tab All your saved decks (features/library).
Deck name Editable in place (Enter confirms, Escape cancels).
Save indicator Decks save automatically while you work (features/shell/save-indicator.tsx).
Update button Appears only when a new version has been downloaded and is waiting for a restart.
Settings (gear) Opens the Settings dialog. A small dot on it shows an update downloading (amber) or ready (accent colour).

The layout is defined in src/features/shell/app-shell.tsx (AppShell). See Settings and Shell and Frontend Architecture.

From list to paper

  1. Paste the list in the left panel, in whatever form you have it: 4 Lightning Bolt, 1 Sol Ring (CMM) 410. Moxfield, Arena and MTGO formats work, and so does a list copied as text from Archidekt (with its SIDEBOARD or #SIDEBOARD header). You can instead import an Archidekt deck by URL, with or without its sideboard. Parsing is done in Rust (proxy-core::decklist); see Decklist Parsing.
  2. Press "Cargar lista" (Load list). The app resolves each card on Scryfall, picks a printing, downloads the images and, if the option is on, automatically adds the tokens the deck creates. Progress is shown and the job can be cancelled. See Decklist Panel.
  3. Check the sheets. The preview and the PDF come from the same page calculation (PagePlan, in millimetres), so what you see is what is printed. See Layout Engine and Live Preview.
  4. Export the PDF, print at 100 %, cut and play. See Exporting a PDF.

The deck's sheets, exactly as they will come out on paper

Warnings are honest and per slot: card not found, low-resolution image, card not yet scanned by Scryfall. The sections of the pasted list (for example Sideboard) are kept: cards in the Sideboard section arrive already marked as sideboard, and Maybeboard (if you include it) as optional (see Card marks).

Card language

Pick the language you want printings in. If a card does not exist in that language, it stays in English and the slot says so. "Reaplicar idioma" (Reapply language) re-picks the language for every card that is not pinned.

Automatic tokens

Tokens, emblems and copies your cards create are appended at the end. "Detectar fichas" (Detect tokens) in the list panel looks for the ones an existing deck lacks, including for linked custom cards (features/decklist/fichas-dialog.tsx). Tokens that Scryfall does not have (for example Kelp or some Oozes) come from the Cockatrice token catalogue: they show up when linking, in "Añadir carta" (Add card) and while resolving the list. See External Sources.

Finding and changing cards

Change the printing. Every card has all its editions one click away, in any language, optionally only high-resolution ones. You can change one copy or all copies at once (features/variants, see Add Card and Variants).

Choosing a card's printing

Search and add cards by name (with autocomplete) or with Scryfall syntax: t:dragon c:r r:m finds red mythic dragons. Double-click a result to add it.

Searching with Scryfall syntax

Browse whole sets and load the cards you pick (or the entire set), replacing the list or appending to it (features/set-browser, see Set Browser).

The set browser

Names in other languages: cards written by a Spanish (or other language) name that Scryfall does not have printed that way are also found. Without the optional names index (Settings) the app asks an online service, more slowly; with it, the lookup is local.

Your own images and linking proxies

  • Upload custom cards (alters, scans, cards you made) with the file picker, or drag them onto the preview: dropped over a card they replace it, outside they are appended.
  • Back: choose one for the whole deck or a different one per card. The app ships a generic back of its own.

Linking a custom image to its real card

A custom image is just an image: the app does not know which card it is. Linking it to its Scryfall card leaves the image untouched but makes the card count in the statistics, prices and legality, and the card info shows its real name and edition. Linking is stored as CardSource::Custom { scryfallId?, externa? } (see Deck Model).

Unlinked custom proxies

To recognise them the app can run OCR locally over the whole card: the title, the type line and the bottom text (where many proxies carry the original name). It matches what it reads against the Scryfall catalogue in any language and proposes a card with a confidence level: exact, probable, or no proposal. It also reads the set, number and language printed at the bottom, so the image's language is recorded. The OCR models are downloaded the first time they are needed and are kept in the app's data folder. See Card Identification and OCR.

Three ways to link:

  • One card: right click, "Vincular con una carta…" (Link to a card…). The search starts from the file name; "Detectar con OCR" (Detect with OCR) reads the card.

    Linking one card with OCR

  • Selected cards: select several with Ctrl or Shift, right click, "Vincular las seleccionadas…" (Link selected…). The dialog chooses between the selection and the whole deck, and between reading only the missing ones or all of them again.

    Linking the selected cards from the menu

  • The whole deck: the "Vincular con una carta" button in the left panel reads every custom image in one go, with a progress bar and remaining time. You can stop halfway and review. Each proposal can be changed in its dropdown or unticked before pressing "Vincular".

    Linking the whole deck at once

The result is the same images with their real card behind them:

Linked proxies

Working on the sheets

Each card's menu

  • Reorder: drag cards, or use "Mover antes / después / a la posición…" (Move before / after / to position…). Select several with Ctrl or Shift and act on all of them.
  • Pin a card to its slot so nothing moves it.
  • Auto sort groups copies, removes gaps and respects pinned cards.
  • Card info shows the name and edition of each slot; "Ver reversos" (Show backs) shows the other side of the sheet.
  • Undo / redo: Ctrl+Z and Ctrl+Shift+Z (the last hundred changes).
  • Zoom: Ctrl + wheel. Sheets that are scrolled out of view unmount their images, so decks of hundreds of cards stay smooth.

Name and edition of each card

Card marks

The card menu's "Marca" (Mark) submenu tags a card as a design variant (another version of a card already in the deck, to pick later), optional, or sideboard (violet badge). Marked cards are printed, but do not count for the deck size, copy limit, statistics, or the exported list (sideboard cards go to the sideboard section). Of the variants of one card, one still counts if it is not marked. This is how a Commander deck with variants still adds up to 100. Source: DeckCard.marca and proxy_core::model::cuentan (see Deck Model).

Retouching a card

"Editar carta" (Edit card) offers rotation, zoom, framing and eleven adjustments: brightness, exposure, contrast, saturation, warmth, intensity, sharpness, clarity, noise reduction, vignette and fade. The view updates instantly, and the preview is the same render that goes into the PDF.

Editing a card

Then decide where the change goes:

  • Apply: only this card.
  • Apply also to its copies: every card using the same image, with rotation, framing and adjustments (handy for four copies, or all basic lands with the same art).
  • Apply to all cards: the colour adjustments only, to the whole deck (rotation and framing stay on the card).

The four Islands retouched at once

See Card Editor Dialog and Imaging and PDF.

Exporting a PDF

The right panel holds all print settings. The "Exportar PDF" button is split: the main part exports; the three-dots menu next to it copies the deck list for Moxfield, Arena, MTGO or plain text, saves it as an MTGO .txt, or saves the deck with its images as .pbdeck.

A sheet from the exported PDF, with cut guides

Setting Options
Quality 300, 600 or 900 DPI; JPEG (adjustable quality) or PNG
Paper A3, A4, A5, Letter, Legal, Tabloid, photo paper (4x6, 5x7, 8x10, 8x12 in); portrait or landscape
Card size Standard Magic (63 x 88 mm) or poker (63.5 x 88.9 mm); margin and spacing
Bleed Repeats the border or mirrors it; also on backs
Cut guides Colour, thickness and length
Darken edges Fixes light borders of old scans (contrast, solid black or threshold); leaves white-border and full-art cards alone
Double-sided One side, duplex on the long edge or on the short edge
Split PDF Every N sheets; the app warns first when the file would be huge and suggests lowering quality
Presets Save all print settings under a name (for example a printer model) and reuse them in any deck

Factory defaults: 2 mm spacing, 0 bleed, cut guides off, and "Rellenar las esquinas" (fill corners) off, so transparent corners come out as paper colour.

Other behaviour:

  • Exporting shows a progress bar and can be cancelled at any time.
  • Duplex alignment: the calibration sheet and "Alinear filas" (Align rows) correct your printer's offset row by row, measured with a ruler (features/export/alinear-filas.tsx).
  • Double-faced cards print with their real back (duplex) or, for single-sided printers, as interleaved pairs (both faces in consecutive slots, to go in the same sleeve). Large cards (planes, schemes, Vanguard) go on their own sheets at the end, at their real size.
  • Image framing stretches the picture to the exact card slot (a slight deformation is accepted) and only crops when the proportions differ by more than 15 %.

Exporting

Interleaved double-faced pairs and cut guides

See Export, Imaging and PDF and Layout Engine.

Statistics

A tabbed dialog, computed entirely in Rust (proxy-core::stats) from Scryfall data and prices:

  • Summary: card count, recommended lands, average cost, estimated price, probability of a good opening hand.
  • Curve and colours: mana curve by type, colours, colour identity, tokens used.
  • Functions: ramp, card draw, removal, sweepers, counterspells, tutors, tokens, deduced from each card's rules text, with a button to select them in the deck.
  • Probabilities: hypergeometric draw calculator, lands in the opening hand, probability of hitting each land drop going first or second.
  • Prices: euros (Cardmarket) or dollars (TCGplayer) for the chosen printing, by type, most to least expensive. Non-English printings use the English printing's price, since Scryfall gives none.
  • Legality by format and an estimated Commander bracket; the format is detected or chosen by hand.

Only cards that count (see Card marks) are included. Linked custom cards participate through their link. See Statistics.

Statistics summary

Probability calculator

Each card's functions

Deck prices

The deck library

All saved decks with their cover. You can duplicate, rename, and export as .pbdeck (a zip with all images, see Deck Package Format) to move a deck to another computer. "Liberar espacio" (Free up space) deletes images no deck uses any more (BlobStore::gc in src-tauri/src/store/blobs.rs: only images older than 24 h, and it refuses with a "busy" error while a long job is active).

  • Tags with a name and colour; apply to one or many decks; filter by any or all.
  • Favourites pinned at the top, per-deck notes, and a cover chosen from its cards.
  • Search by deck name, contained cards, notes or tags. Filters: colour identity (includes, exactly, at most), class (Commander, constructed, limited), formats it is legal in, card language, designed cards or custom images present. If a deck is really in another language but its cards are linked to English printings, set its language by hand from its menu.
  • Sort by modified, opened or created date, name, cards, price, average cost or colours; group by tag, colours, class or language (grouped by tag, a multi-tag deck appears under each).
  • Two views: grid (three sizes) and list (colours, class and bracket, cards and tokens, average cost, price, language, custom images, dates).
  • Multi-select (Ctrl+click, Shift+click, Ctrl+A) to tag, favourite or delete together.

The library

The library as a list, grouped by tag

See Deck Library.

The card editor (Design tab)

The Design tab (and "Diseñar proxy" in each card's menu) creates your own version of a card with a new frame and translated text. The result prints from its design at export resolution.

  • Text from the real card in the deck's design language: any of the same 15 languages, chosen in the export panel ("Language of designed cards") or above the card preview. Name, type line and rules come from the official printing in that language; Romanian, Polish, Dutch and Ukrainian have no printed cards, so their rules stay in the English Oracle (with a warning) while the fixed words of the frame are translated. Switching to a new language fetches it for the cards already designed (a themed name you typed is kept). For cards with no printing in that language there is a suggested translation built from official phrases.
  • Japanese, Korean and Chinese need extra fonts (Noto Sans, about 10–18 MB each). They are downloaded the first time you pick one of those design languages; until then the card shows the warning "The {idioma} fonts are missing…" with a "Download the fonts" button.
  • Art from Scryfall, uploaded, pasted or cropped from another card, with zoom, framing and rotation (dragging is instant: the art is moved on screen while Rust renders the exact card afterwards).
  • Frames and styles from a frame pack, with colour, legendary crown and rules box automatic or manual. Besides the house pack there are the "Original" image frames (Card Conjurer M15 for the borderless, extended and classic styles, all with the same marble bars and parchment rules box), downloaded on first use rather than shipped. If an update needs new frame images, the app fetches them on its own at start.
  • Free fonts downloadable from inside the app (classical/medieval/fantasy for titles, very legible ones for rules, plus a pixel font), and per-collection control of how much the title and type line are condensed.
  • Downloadable frame packs; the first is Balatro (pixel art, seven styles: Joker, Planeswalker, Spectral, Tarot, Planet, Voucher, Land) with ready-made backs, tokens and lands to add to the deck. See Frame Packs.
  • Collections carry a set symbol and numbering so the whole deck looks like one edition.
  • Almost every Magic layout: planeswalkers, sagas, classes, cases, levels, adventures, split, flip, double-faced, battles, meld, dungeons, large cards.
  • Design the whole deck at once (one draft per card, to review) and export PNGs at 300/600/900 DPI in the languages you tick (the deck's design language by default), each into its own folder named by its code (es/, en/, fr/…). Languages the cards do not have yet are fetched first.

The card editor

The same card in English

See Designer Overview, Designer UI, Designer Engine.

Settings

The gear opens a dialog (src/features/settings/settings-dialog.tsx, SettingsDialog) with four cards, top to bottom:

Section Component What it does
Language SettingsDialog A drop-down with the 15 interface languages, each with its flag and its own name (SelectorIdioma). Remembered in the browser storage key proxybuilder.lang (language-provider.tsx). Default English. It changes only the interface, not the language of printings or of designed cards.
Updates settings/actualizaciones.tsx (Actualizaciones) "Buscar ahora" (check now); a switch to look for and download new versions automatically (on by default; ui-store preference actualizarSola); shows notes, progress, and "Reiniciar y actualizar". On a copy that did not come from an installer (for example pnpm tauri dev) it says updates are only available in the installed app. See Releases and Auto-Updates.
Names in other languages settings/nombres-idiomas.tsx (NombresIdiomas) Downloads (the size is shown on the button) an MTGJSON-derived index of card names in every language into a local SQLite database, so foreign-language names resolve offline. Can be updated or removed.
Appearance settings/appearance.tsx (Appearance) Light/dark/system; interface size; smooth scrolling; surface style (Flat, Zeus embossed 3D, Hera floating glass) with optional filigree; background (plain or gradient) for the Flat style; card material (solid, glass, matte with grain); effects (blur, grain, shadow strength, whether side panels are included); colour theme (more than forty built in).

"Más temas…" (More themes…) in Appearance opens settings/temas-tweakcn.tsx: paste a link from the tweakcn community (tweakcn.com/r/themes/<id> or a theme id) and Rust (src-tauri/src/temas.rs) downloads it, converts it to CSS, and downloads its Google Fonts to the app data folder. Installed themes are appended to the theme list at startup. See Themes and Skins.

Settings

The library also exposes cache cleaning (thumbnail/derived cache): clearing it never loses deck images (see Storage and Blobs).

Where your data lives

The app uses the OS-standard per-app folders for the identifier com.estigio.proxybuilder (tauri.conf.json identifier):

Folder Contents Safe to delete?
App data dir library.db (SQLite: decks, tags, presets, settings), blobs/ (deck images by SHA-256), fonts (including the downloaded Japanese/Korean/Chinese ones), packs, installed themes, OCR models No: decks depend on blobs/
App cache dir renders/ (thumbnails and derivatives), Scryfall name catalogue Yes: it is rebuilt
App log dir proxy-builder.log (every network request is logged, which lets you verify a saved deck downloads nothing) Yes

Decks are local and private. Moving a deck between computers: export .pbdeck from the library or the export menu, import it on the other machine. See Storage and Blobs.

Keyboard shortcuts and mouse

Found in the code (features/preview/preview-pane.tsx, features/shell/use-deck-inicial.ts, features/library/library-screen.tsx, features/disenar/disenar-screen.tsx):

Where Keys
Deck sheets Ctrl+Z undo, Ctrl+Shift+Z redo, Ctrl+A select all, Ctrl+D duplicate selection, Delete remove selection, Escape clear selection, Ctrl+wheel zoom
Library Ctrl+F focus search, Ctrl+A select all, Delete delete selection, Escape clear search or selection
Design tab Left/Right arrows move between cards
Deck name Enter confirms, Escape reverts

On macOS the Command key acts as Ctrl (the code checks metaKey). Interface text is not selectable except in input fields and copy boxes.

Troubleshooting

  • A card says "not found": check the name; try the card search ("Añadir carta") or a different language setting. The slot keeps a warning until fixed.
  • Update says it is unsupported: you are running a build that did not come from an installer (dev build), or from a bare binary.
  • Update asks for a password on Linux: expected for .deb/.rpm (installed with pkexec).
  • "Hay un trabajo en marcha" (a job is running): installing an update or freeing space is refused while a long job (export, resolving, OCR) runs; wait or cancel it.
  • Dialog animations invisible in a VM or on a GPU-less screen: run with WEBKIT_DISABLE_COMPOSITING_MODE=1 WEBKIT_DISABLE_DMABUF_RENDERER=1 (see Development Setup).
  • Log file: proxy-builder.log in the app log dir lists what the app did and each request it made.

See also

Documentation · Documentación

Language: English · Español

Use and build · Uso y desarrollo

Architecture · Arquitectura

Data · Datos

Getting cards · Conseguir cartas

Layout, images, PDF · Maquetación, imagen y PDF

Card designer · Diseñador de cartas

Game table · Mesa de juego

Frontend · Frontend

Reference · Referencia

Clone this wiki locally