Skip to content

superhac/vpinfe

Repository files navigation

VPinFE

VpinFE_V1-MF-withCredit

A frontend for vpinball with the following features:

  • Works on Linux, Windows, Mac, and ARM (Windows must use Standalone dir structure)
  • Multiscreen - Supports up to 3 screens (Backglass, DMD, and Table)
  • Fully remote cabinet management
  • Keyboard & Controller Input support
  • Table and Media Manager (Auto download art via VPinMediaDB)
  • Build custom table collections (VPS ID-based and filter-based)
  • Automatic vpx patching for Linux & Mac
  • Fully customizable UI theming using HTML, JS and CSS
  • JSON-based table metadata with VPX file parsing and feature detection
  • DOF Support using libdof-python
  • Real DMD Support using libdmdutils-python ZeDMD, Pixelcade and PIN2DMD.
  • Mobile transfer support for VPinball on Android and iOS (Web Send & VPXZ Download)
  • VPinballX.ini config editor with backup/restore for multi-config enviroments
  • Importing roms, pupacks, altcolor, and altsound.
  • Optional online ratings, scoring and play tracking via VPin Play. The GitHub Project

Support/Feedback

Join us on VPC discord channel @ vpinfe

Acknowledgements

  • A special thanks to @jsm174 for making VPX available to all these other platforms. He's also a great mentor. I learned a tremendous amount working with him on the vpx project and he is the epitome of the VPinball community.
  • @MajorFrenchy is another great example of what the VPinball community is all about. He jumped in right away and provided invaluable testing and feedback. And we can't forget his great video on using VPinFE on the MAC! He also made the VPinFE logo and splash video! Thank you, thank you!!!
  • Huge thanks to @Gonzonia for all his work on the Mac app bundle. This simply wouldn’t have happened without his knowledge and contributions.
  • A big high five to @evilwraith for making the ARM build!
  • A big thank you to all the hard work and dedication the VPS Team: (@Dux, @Fraesh and @Studlygoorite) has put into creating this great table finding resource! And they made it "open" so others can leverage it as they want.
  • A big thank you to Pinball Primer for creating and sharing such a great rules and tutorial resource for the pinball community.

See it in action

themes managerui

Youtube Playlist https://www.youtube.com/playlist?list=PLMRebAANedgX9YDbl0gte_ZgoYU9VQF8j

Installing (First time Setup)

The install is the same for all platforms you need to download the right release for it. Currently there are two different builds available for each platform:

  • A slim build (has slim in its name) is for people who already have chrome installed locally on there machine. (Recommend bundle)
  • A fat build (no slim in its name and larger binary) that bundles chromium with VPinfe

The latest version can be downloaded from Releases.

Running

Linux (X64 & ARM)

Download the latest release and unzip it and then run:

cd vpinfe
./vpinfe

MAC

This is unsigned APP bundle so you need to do a few things to get VPinFE running. @MajorFrenchy has put together an excellent video on setting this up for the MAC here. He also has a written tutorial available at his site @ Major Frenchy's VPinFE on MacOS. If you are a MAC user this is best route to take. Watch the video and/or read the tutorial, and you'll be running quick.

Windows

The windows package has a vpinfe.bat file for launching it. Unless your in a terminal always use the batch file or you will end up window focus issues when using VPinFE. Either double click on it to launch or from the CLI:

cd vpinfe
vpinfe.bat

Setup your configuration

When you run VPinFE the first time it load into the ManagerUI. You need setup the minimum settings to get things to work.

The frist is the "display" panel. Its recommend you just start with one screen as its auto-configured.

2-settings-panel

Next you must configure these three essential settings in the [Settings] section:

1-settings-panel
  1. vpxbinpath - Full path to your VPinball executable (e.g., /home/user/vpinball/build/VPinballX_BGFX)
  2. tablerootdir - Root directory where all your tables are located (e.g., /home/user/tables/)
  3. vpxinipath - Path to your VPinballX.ini file (e.g., ~/.vpinball/VPinballX.ini)

Once these are configured you can exit the ManagerUI by clicking the shutdown button in the UI (upper left area). Anytime you want to return to the ManagerUI look in the console for its webserver address. Its a line that looks like this:

NiceGUI ready to go on http://localhost:8001, and http://192.168.1.228:8001

Put that URL in a browser and your in the ManagerUI.

Enabling the shutdown feature

If you plan on using the Shutdown or Reboot option in the frontend or the remote page, some Linux systems need an explicit polkit rule so the VPinFE user can power off or reboot the machine without an interactive prompt.

Linux

Create /etc/polkit-1/rules.d/49-allow-poweroff.rules:

polkit.addRule(function(action, subject) {
    if (
        (
            action.id == "org.freedesktop.login1.power-off" ||
            action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
            action.id == "org.freedesktop.login1.power-off-ignore-inhibit" ||
            action.id == "org.freedesktop.login1.reboot" ||
            action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
            action.id == "org.freedesktop.login1.reboot-ignore-inhibit"
        ) &&
        subject.user == "superhac"
    ) {
        return polkit.Result.YES;
    }
});

Then restart polkit:

sudo systemctl restart polkit

On Kubuntu/KDE you may see journal lines about /run/polkit-1/rules.d or /usr/local/share/polkit-1/rules.d not existing right after the restart. Those are normal informational messages, not a shutdown failure by themselves.

Setup your tables

Now that your vpinfe.ini file has the basics you need build the metadata. Your table folder names and layouts should follow the VPinball table organization standard.

Example of how your table directory should look:

superhac@linpin:~/tables$ ls -las
total 28
4 drwxrwxr-x  7 superhac superhac 4096 Feb 21 12:03  .
4 drwxr-x--- 23 superhac superhac 4096 Feb 21 14:49  ..
4 drwxrwxr-x  2 superhac superhac 4096 Feb 21 12:03 '24 (Stern 2009)'
4 drwxrwxr-x  2 superhac superhac 4096 Feb 21 12:09 'AC-DC LUCI Premium VR (Stern 2013)'
4 drwxrwxr-x  3 superhac superhac 4096 Feb 21 15:08 'American Graffiti (Original 2024)'
4 drwxrwxr-x  2 superhac superhac 4096 Feb 21 12:49 'Andromeda (Game Plan 1985)'
4 drwxrwxr-x  2 superhac superhac 4096 Feb 21 12:51 'Back To The Future - The Pinball (Data East 1990)'

Example of whats inside a table folder:

superhac@testrig:~/test/dof$ tree ~/tables/Hurricane\ \(Williams\ 1991\)/
/home/superhac/tables/Hurricane (Williams 1991)/
├── Hurricane Balutito MOD V2.directb2s
├── Hurricane Balutito MOD V2.vpx
├── Hurricane (Williams 1991).info
├── medias
│   ├── audio.mp3
│   ├── bg.png
│   ├── cab.png
│   ├── dmd.png
│   ├── flyer.png
│   ├── realdmd.png
│   ├── table.mp4
│   ├── table.png
│   └── wheel.png
└── pinmame
    ├── cfg
    │   ├── default.cfg
    │   └── hurr_l2.cfg
    ├── ini
    │   └── hurr_l2.ini
    ├── nvram
    │   └── hurr_l2.nv
    └── roms
        └── hurr_l2.zip

VPinFE will try to automatch your tables to VPSID's, but in the event it can't you will have to match it manually. Any table that is not matched shows up as a "UNMATCHED TABLE" in the UI:

unmatched

Click on the unmatched tables button and walkthtough the dialogs. Once comleted the table will show in your tables list.

ManagerUI Guide

When VPinFE starts for the first time it opens the ManagerUI on the Configuration page. On later runs it remembers the last page you had open. The ManagerUI header also includes:

  • Restart VPinFE to restart the frontend process
  • Quit VPinFE to close the app
  • Version and update status with direct install support when the running build supports in-app updates

The main navigation includes:

  • Tables
  • Collections
  • Media
  • Themes
  • Mobile Uploader
  • System
  • Configuration
  • Remote Control opens in a separate tab at /remote

Configuration page

The Configuration page edits vpinfe.ini. Changes are only written when you click Save Changes.

Settings section

Core startup and launch behavior:

  • VPX Executable Path: main VPinball executable or app bundle used to launch tables
  • VPX Launch Environment: optional environment variable overrides added only to VPX launches. Accepts KEY=value pairs, multiple lines, or semicolon-separated entries
  • Global ini Override: adds -ini <path> to all VPX launches
  • Global tableini Override Enabled: enables masked per-table -tableini launching
  • Global tableini Override Mask: builds {TableName}.{mask}.ini beside the .vpx and uses it only when the file exists
  • Tables Directory: root folder scanned for tables, metadata, media, mobile transfer, and VPinPlay sync
  • VPX Ini Path: path to your VPinballX ini file
  • Active Theme: currently selected frontend theme
  • Startup Collection: collection opened when VPinFE starts
  • Auto Update Media On Startup: enables startup media refresh behavior
  • Enable splashscreen: shows the frontend splash screen during startup
  • Mute Frontend Audio: mutes frontend audio playback
  • Hide Quit from MainMenu: hides the Quit item from the frontend main menu; saved as Settings.MMhideQuitButton in vpinfe.ini

The page also shows a VPinball Launch Command w/Options preview so you can verify the exact launch command and launch environment before saving.

Displays section

Screen assignment and playfield layout:

  • Playfield Monitor ID
  • Backglass Monitor ID
  • DMD Monitor ID
  • Backglass Window Override (x,y,width,height): optional explicit bounds passed to themes
  • DMD Window Override (x,y,width,height): optional explicit bounds passed to themes
  • Playfield Orientation (Landscape/Portrait)
  • Playfield Rotation (0/90/270)
  • Cabinet Mode

The right side of the page lists detected displays so you can map IDs correctly. On macOS it also shows NSScreen coordinates used for window placement.

Input section

Gamepad button mappings stored in vpinfe.ini:

  • Left
  • Right
  • Up
  • Down
  • Select
  • Menu
  • Back
  • Tutorial
  • Exit
  • Collection Menu

Keyboard mappings are also stored in the same [Input] section using matching key* entries:

  • keyleft
  • keyright
  • keyup
  • keydown
  • keyselect
  • keymenu
  • keyback
  • keytutorial
  • keyexit
  • keycollectionmenu

These keyboard values apply only to the VPinFE frontend. They do not affect the Remote Control page. Each entry accepts a comma-separated list of browser key values or key codes such as ArrowLeft,ShiftLeft or Escape,q.

You normally set these from ./vpinfe --gamepadtest, but the values are visible and editable here.

Logger section

Logging behavior:

  • Log Verbosity: debug/info/warning/error/critical
  • Console Logging: enables console log output

The Logs page also opens the current vpinfe.log and vpinball.log. VPinFE writes its own logs to the standard config directory and starts a fresh log file on each launch. The VPinball Log card can enable Settings.vpxlogdeleteonstart, which deletes vpinball.log before each frontend table launch. VPinFE resolves that log path from Settings.vpxinipath by using the directory that contains VPinballX.ini.

Media section

Default metadata/media behavior:

  • Table Type: preferred media type family when downloading media
  • Default Table Resolution
  • Default Table Video Resolution
  • Default Missing Media Image
  • Thumbnail Cache Max (MB): cap for generated media thumbnails used by ManagerUI

Network section

Local service ports:

  • Theme Server Port: media/theme asset server
  • Manager UI Port: NiceGUI management interface

Mobile section

Saved defaults for the Mobile Uploader page:

  • Mobile Device IP
  • Mobile Device Port
  • Mobile Chunk Size
  • Enable Rename Mask To Default INI
  • Rename Mask To Default INI Mask

When the rename-mask option is enabled for Web Send, VPinFE can send {VPX_FILENAME}.{MASK}.ini to the mobile device as {VPX_FILENAME}.ini.

DOF section

Frontend DOF integration:

  • Enable DOF: starts the bundled DOF runner for frontend events
  • DOF Config Tool API Key: used by the online config sync helper

The page also includes:

  • DOF Event Test: starts and stops a test event token like E900 or S27
  • Online Config Tool: runs the bundled ledcontrol_pull.py helper using your API key, with an optional force update

libdmdutil section

Real DMD output integration:

  • libdmdutil Service: enables the bundled libdmdutil controller
  • ZeDMDDevice: explicit ZeDMD device path
  • ZeDMDWiFiAddr: ZeDMD network address
  • PIN2DMD
  • PixelcadeDevice

VPinFE currently uses the service enable flag plus the ZeDMD device/Wi-Fi settings directly. If both ZeDMD fields are blank, libdmdutil falls back to its own auto-detection behavior.

VPinPlay section

Experimental online metadata sync:

  • API Endpoint: VPinPlay service base URL
  • User ID
  • Initials: uppercased in the UI and limited to 3 characters
  • Machine ID: auto-generated if missing and read-only in the UI
  • Sync on Exit: sends installed table metadata during shutdown when all required values are present

The page also provides:

  • VPinPlay Home and Your Stats links
  • Sync Installed Tables button that posts installed table metadata to the configured VPinPlay endpoint

Tables page

The Tables page scans your tables root for folders that contain both a .vpx file and a matching .info file. It provides:

  • Search by table name
  • Filters for manufacturer, year, theme, type, and PUP Pack presence
  • Multi-select with Select Page
  • Batch Add to Collection
  • Links to IPDB and VPS
  • A PP pill that opens the Pinball Primer tutorial when the table has a PinballPrimerTut link
  • Badges for rating, collection membership, and per-table overrides

Header actions:

  • Scan Tables opens the Build Metadata workflow
  • Apply Patches runs standalone VPX patching across supported tables
  • Unmatched Tables opens folders that have a .vpx but no .info
  • Import Table imports a new table package into your tables root

Build Metadata options:

  • Update All Tables reparses tables even if .info already exists
  • Download Media downloads media from VPinMediaDB while building metadata

When a matching https://pinballprimer.github.io/ tutorial exists in VPSdb, VPinFE also writes Info.PinballPrimerTut into the table's .info file during metadata generation.

Clicking a table opens a detail dialog with:

  • Table information from .info
  • Detected feature flags such as nFozzy, Fleep, SSF, LUT, ScoreBit, FastFlips, and Flex
  • Addon detection for PupVideos, Serum, VNI, and AltSound
  • Editable Rating
  • Collection membership management
  • Per-table overrides:
    • Alt Title
    • Alt VPS ID
    • Alt Launcher
    • FrontendDOFEvent
    • Delete NVRAM on close
  • Addon upload tools:
    • PUP packs as .zip
    • Serum .cRZ
    • VNI .vni and .pal
    • AltSound files
  • Rebuild Meta for that single table

The Unmatched Tables dialog lets you:

  • Search VPS by name
  • Associate a table folder with a VPS entry
  • Optionally rename the folder to Table Name (Manufacturer Year)
  • Either download media from VPinMediaDB or claim your existing local media as user-owned

The Import Table dialog lets you:

  • Choose a VPS entry first
  • Upload a required .vpx
  • Optionally upload .directb2s, ROM .zip, PUP pack .zip, and music .zip
  • Create the table folder, generate metadata, copy/extract uploaded files, and download media

Pinball Primer tutorial overlay

VPinFE includes a built-in Pinball Primer tutorial overlay for tables that have Info.PinballPrimerTut in their .info metadata.

  • Press t on the keyboard to open or close the tutorial overlay
  • The keyboard defaults come from [Input] key* mappings in vpinfe.ini
  • You can also map a controller button to Tutorial / joytutorial
  • The overlay uses the built-in #overlay-root system, so it does not require any theme changes
  • Tutorials are loaded through a local Pinball Primer proxy so they can be displayed inside VPinFE reliably

Tutorial overlay controls:

  • Up or Left scroll up
  • Down or Right scroll down
  • Back closes the overlay
  • t closes the overlay

Collections page

The Collections page manages both collection types used by VPinFE:

  • Table collections: explicit VPS ID lists
  • Filter collections: dynamic collections based on metadata filters

Supported collection filters:

  • Starting letter
  • Theme
  • Table type
  • Manufacturer
  • Year
  • Rating
  • Rating or higher
  • Sort by alpha, newest, last run, start count, or runtime
  • Order by descending or ascending

From this page you can:

  • Create, edit, rename, and delete collections
  • Search installed tables and add them to a table collection
  • Edit filter rules for filter collections
  • See collection contents directly in the list

Media page

The Media page scans each table folder and shows which standard media assets are present. Supported media keys are:

  • BG
  • DMD
  • Table
  • FSS
  • Wheel
  • Cab
  • Flyer
  • Real DMD
  • Real DMD Color
  • Table Video
  • BG Video
  • DMD Video
  • Audio

Features on this page:

  • Search by table name
  • Filters for manufacturer, year, theme, and type
  • Missing-media filters per media type
  • Generated image thumbnails with on-demand caching
  • Click any media cell to replace that asset for the selected table

Replacement behavior:

  • New files are written to the table's medias/ folder using the standard VPinFE filename
  • The table's .info media entry is updated as user media
  • The cached media listing refreshes immediately

Themes page

The Themes page loads the remote theme registry and compares it to locally installed themes. It shows:

  • Preview image
  • Theme name, author, description, version, and supported screen count
  • Theme type: desktop, cab, or both
  • Whether the theme is built-in, installed, active, or has an update available
  • Optional change log text when a new version exists

Actions:

  • Refresh Registry
  • Install
  • Update
  • Set as Active which writes Settings.theme and restarts VPinFE
  • Delete for non-default themes

Mobile Uploader page

The Mobile Uploader page has two tabs.

Web Send

Uses the built-in web server in the mobile VPX app on Android/iOS. VPinFE can:

  • Save the target device IP/port/chunk size in vpinfe.ini
  • Check the device and compare which table folders are already installed
  • Filter to Show Installed Only
  • Send a single table or Send Selected for multiple tables
  • Delete a table from the mobile device
  • Request a mobile-side table refresh after uploads or deletes

Send options:

  • Exclude {VPX_FILENAME}.ini files prevents sending table-specific default ini files
  • Enable Rename Mask To Default INI can copy {VPX_FILENAME}.{MASK}.ini to the mobile device as {VPX_FILENAME}.ini

VPXZ Download

Creates a .vpxz archive from an installed table folder and downloads it from the ManagerUI.

System page

The System page shows live host metrics and build information:

  • CPU utilization
  • Memory utilization
  • Free disk space for the monitored tables/config volume
  • Hostname and OS details
  • Build flavor and release target
  • Frontend browser name, version, and path
  • Last refresh timestamp

On Linux, it also supports optional GPU Monitoring using nvtop. When enabled it shows:

  • GPU utilization
  • Device name
  • Temperature
  • Power draw
  • GPU and memory clocks
  • Fan speed
  • Per-device metrics when multiple GPUs are present

Remote Control page

The Remote Control page is available from the left nav and directly at /remote. It uses the configured VPX and PinMAME key mappings through the internal key simulator.

Modes:

  • VPX Maintenance
    • Reset
    • Quit
    • Volume up/down
    • Toggle stereo
    • In-game UI navigation
    • Debugger
    • Debug balls
    • Performance overlay
  • VPX Game
    • Start
    • Pause
    • Quit
    • Show Rules
    • Extra Ball
    • Lockbar / Fire
    • Credit 1-4
    • Launch Table picker with collection filter and search
  • PinMAME
    • Coin Door
    • Up/Down
    • Enter/Cancel
    • Service 1-8
  • VPinFE
    • Restart VPinFE
    • Reboot system
    • Shutdown system

Remote table launch behavior:

  • Uses Settings.vpxbinpath unless the table has a per-table Alt Launcher
  • Applies Settings.globalinioverride and masked -tableini overrides when configured
  • Applies Settings.vpxlaunchenv environment overrides
  • Stops DOF and libdmdutil before launching
  • Restarts DOF after the launched process exits

The page also includes a Virtual Keyboard dialog for sending manual key presses.

Wayland / Hyprland remote setup

On X11, the remote page can inject keys using the existing keyboard backend. On Wayland compositors such as Hyprland, synthetic key input usually requires ydotool.

VPinFE will automatically detect Wayland and switch the remote key simulator to ydotool when it is available. For a cabinet-style setup, the most reliable approach is to run ydotoold as a system service with a shared socket path.

  1. Install ydotool.
  2. Create /etc/systemd/system/ydotoold.service with:
[Unit]
Description=ydotool daemon
After=systemd-udevd.service
Wants=systemd-udevd.service

[Service]
Type=simple
ExecStart=/usr/bin/ydotoold --socket-path=/run/ydotool/socket --socket-own=0:0 --socket-perm=0666
Restart=always
RestartSec=1
RuntimeDirectory=ydotool

[Install]
WantedBy=multi-user.target
  1. Reload systemd and start the service:
sudo systemctl daemon-reload
sudo systemctl enable --now ydotoold.service
sudo systemctl status ydotoold.service

Notes:

  • The input group is not required for the user running VPinFE when ydotoold is running as root and owns /dev/uinput.
  • 0666 on the socket is convenient for a dedicated pinball cabinet, but it allows any local process to inject input through ydotool.
  • If you prefer tighter security, reduce the socket permissions and grant access only to the user or group that launches VPinFE.
  • VPinFE looks for YDOTOOL_SOCKET first, then checks /run/user/<uid>/.ydotool_socket, /run/ydotool/socket, and /tmp/.ydotool_socket.

Kubuntu / KDE Wayland note

On some Kubuntu / KDE Wayland systems, ydotoold may work more reliably when bound directly to /tmp/.ydotool_socket. If ydotoold starts but ydotool key ... still fails until you point it at /tmp/.ydotool_socket, use this service instead:

[Unit]
Description=ydotool daemon
After=systemd-udevd.service
Wants=systemd-udevd.service

[Service]
Type=simple
ExecStart=/usr/bin/ydotoold --socket-path=/tmp/.ydotool_socket --socket-own=0:0 --socket-perm=0666
ExecStartPost=/usr/bin/chmod 666 /tmp/.ydotool_socket
Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target

After changing the unit, reload and restart it:

sudo systemctl daemon-reload
sudo systemctl restart ydotoold.service
sudo journalctl -u ydotoold.service -b

You can then verify the socket manually with:

YDOTOOL_SOCKET=/tmp/.ydotool_socket ydotool key 28:1 28:0

Default Keyboard Controls

Action Key
Left or Up Shift left
Right or Down Shift Right
Menu m
Collections Menu c
Select Enter
Quit q or ESCAPE

Setup Gamepad (optional)

VPinFE includes an interactive gamepad configuration tool that makes mapping your controller buttons easy. Run the gamepad test with:

./vpinfe --gamepadtest
image

The gamepad configuration interface provides:

Button Tester - Real-time visual feedback showing which buttons are being pressed on your gamepad (numbered 0-16)

Interactive Button Mapping - Click on any mapping card (Left, Right, Up, Down, Select, Menu, Back, Tutorial, Exit, Collection Menu), then press the corresponding gamepad button to assign it. The mapping is automatically saved to your vpinfe.ini file.

Visual Workflow:

  1. Click a mapping card (e.g., "Left") - it will highlight with an orange pulsing glow
  2. Press the desired button on your gamepad
  3. A green success message confirms the mapping
  4. The button number is saved to vpinfe.ini immediately

Press ESC to exit the gamepad configuration tool when you're done mapping your buttons.

DOF and libdmdutil

VPinFE includes two bundled integrations in its release distributions:

  • DOF for cabinet output events such as feedback devices and toys
  • libdmdutil for sending the table's real DMD image to supported external DMD hardware

They are fetched during the GitHub build workflow and packaged into the distributed app under third-party/dof and third-party/libdmdutil. You can leave either integration disabled in vpinfe.ini, but the supporting files are included with the release builds.

DOF setup

Release builds already include the DOF files in third-party/dof. If you are running from source or want to refresh the bundled files locally, use:

./scripts/fetch_dof_bundle.sh

You can also point VPinFE at a custom DOF bundle location by setting VPINFE_DOF_DIR.

Enable DOF in the ManagerUI under the DOF section, or in vpinfe.ini:

[DOF]
enabledof = true
dofconfigtoolapikey =

Notes:

  • VPinFE starts the DOF runner automatically when enabledof = true.
  • The ManagerUI includes a DOF Event Test panel where you can send event tokens like E900 or S27.
  • If you use the VPUniverse online config tool, put your API key in dofconfigtoolapikey and use the Update DOF via Online Config Tool button. That uses the bundled ledcontrol_pull.py helper from the DOF package.

libdmdutil setup

Release builds already include the libdmdutil files in third-party/libdmdutil. If you are running from source or want to refresh the bundled files locally, use:

./scripts/fetch_libdmdutil_bundle.sh

You can also override the lookup path with VPINFE_LIBDMDUTIL_DIR.

Enable it in the ManagerUI under the libdmdutil section, or in vpinfe.ini:

[libdmdutil]
enabled = true
pin2dmdenabled = false
pixelcadedevice =
zedmddevice =
zedmdwifiaddr =

Notes:

  • VPinFE loads libdmdutil_wrapper.py from the bundled package when enabled = true.
  • If zedmddevice is set, VPinFE connects to that device path first.
  • If zedmddevice is blank and zedmdwifiaddr is set, VPinFE connects over Wi-Fi instead.
  • If both are blank, libdmdutil falls back to its default auto-detection behavior.
  • pin2dmdenabled and pixelcadedevice are preserved in vpinfe.ini for libdmdutil-related configuration, even though VPinFE currently only uses the ZeDMD device and Wi-Fi address fields directly.

Addtional Information and Context

VPinfe CLI Options

options:
  -h, --help            show this help message and exit
  --listres             ID and list your screens
  --listmissing         List the tables from VPSdb
  --listunknown         List the tables we can't match in VPSdb
  --configfile CONFIGFILE
                        Configure the location of your vpinfe.ini file. Default is cwd.
  --buildmeta           Builds the meta.ini file in each table dir
  --vpxpatch            Using vpx-standalone-scripts will attempt to load patches automatically
  --gamepadtest         Testing and mapping your gamepad via js api
  --headless            Run web servers/services only, skip the Chromium frontend
  --claim-user-media    Bulk mark existing media files as user-sourced so they won't be overwritten by vpinmediadb
  --no-media            When building meta.ini files don't download the images at the same time.
  --update-all          When building meta.ini reparse all tables to recreate the meta.ini file.
  --user-media          With --buildmeta: skip vpinmediadb downloads and claim existing local media as user-sourced
  --table TABLE         Specify a single table folder name to process with --buildmeta or --claim-user-media

Server Listeners

There are three server listeners started on your machine:

Service Bound Address/Port Description
HTTP 127.0.0.1:RANDOM Frontend web asset server (themes/UI content)
HTTP 127.0.0.1:8000 Python HTTPServer. Serves tables media assets (configurable)
HTTP 0.0.0.0:8001 NiceGui sever. Handles the UI for configuration and management (configurable)

The only service that externally accessable from your machine its UI for managing it. This is setup like this so people with cabinets can administer it remotely.

External Web Endpoints:

  • Table/VPX Configuration and Management: http://{YOUR-IP}:8001
  • Remote Control: http://{YOUR-IP}:8001/remote
  • Mobile Uploader: http://{YOUR-IP}:8001/mobile

VPINPlay (Experimental)

VPinFE includes an experimental VPINPlay integration for syncing your installed table metadata and usage stats to the VPinPlay service.

  • Main site: vpinplay.com
  • API default: https://api.vpinplay.com:8888
  • ManagerUI config page: vpinplay section in VPinFE Configuration

Making a Theme

See Theme Doc

Addtional Details

Technical Details

About

A vpinball frontend for Linux, Mac, and Windows

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors