As Simple As Possible Cabinet Front-End
A multi-monitor VPinballX front-end for your Linux virtual pinball cabinet.
Yes! You can use on single monitor 🙃
<video src="https://github.com/user-attachments/assets/019e4170-94f2-464c-9209-4754ba87a029" width="400" >
"As Simple As Possible".
[!TIP] :godmode: Grab precompiled builds from Releases or Actions page for the fastest start. Please refer to the User's Manual
</blockquote>
TL:DR <img src="https://cdn.simpleicons.org/debian/CE0056" alt="Debian" width="15"/> Debian
Copy/Paste like a vibe coder.
sudo apt-get install git findutils -y -qq
git clone --depth 1 https://github.com/surtarso/ASAPCabinetFE.git ASAPCabinetFE-src
cd ASAPCabinetFE-src
git lfs install && git lfs pull
cat apt-packages.txt | xargs sudo apt-get install -y
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j$(nproc)
cmake --install .
cd ~/ASAPCabinetFE
./ASAPCabinetFE
TL:DR <img src="https://cdn.simpleicons.org/archlinux/1793D1" alt="Arch Linux" width="15"/> Arch (experimental)
Use Ffmpeg as backend, reloading some configs may cause hangs.
sudo pacman -Syu --noconfirm git findutils
git clone --depth 1 https://github.com/surtarso/ASAPCabinetFE.git ASAPCabinetFE-src
cd ASAPCabinetFE-src
git lfs install && git lfs pull
cat pacman-packages.txt | xargs sudo pacman -S --needed --noconfirm
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j$(nproc)
cmake --install .
cd ~/ASAPCabinetFE
./ASAPCabinetFE
Features
ASAPCabinetFE transforms your virtual pinball cabinet into an immersive experience. It might be the frontend you’ve been waiting for, and here is why:
- Full screen multi monitor display of table playfield, backglass, topper and DMD.
- Tailored to mimic Visual Pinball X cabinet setup for seamless transitions.
- Use
VPinballX.ini for size and position auto-configuration.
- Use VPin to retrieve table file metadata.
- Match metadata with VPSDb API.
- Browse VPSDb to find and download new tables.
- Create custom table overrides for media or metadata.
- Automatically apply or update table patches from vpx-standalone-scripts.
- Download media from the Vpin Media Database.
- Sort tables by title, type, manufacturer, year or author.
- Navigate tables with titles and/or wheels and marquees.
- Support for ambience, per-table music and launch sounds.
- Extended settings for many display configuration arrangements.
- Keybind friendly and joystick support.
- Extremely lightweight and fully customizable.
- No need to download artpacks, generate your own. (See tools)
- Fully compatible with VPX Standalone v10.8.0 and v10.8.1
- Just what it takes to make your cabinet look good!
**_ASAPCab_ isn’t just a frontend**—it’s your gateway to a complete virtual pinball experience for Linux. Join us and make it yours!
How it works
- Scans recursively for
.vpx files.
- Optionally scan file metadata or use your existing
vpxtool_index.json.
- Creates up to four windows for playfield, backglass, topper and DMD.
- Loads default or custom media for each table.
- Launches tables with desired VPX executable.
>[!NOTE] >Check the User's Manual for more details.
Compiling and Running
👫 Make sure you have git and xargs available (
Debian)
sudo apt-get update
sudo apt-get install git findutils -y
👫 Make sure you have git and xargs available (
Arch)
sudo pacman -Syu git findutils --noconfirm
💏 Clone the Repository
git clone --depth 1 https://github.com/surtarso/ASAPCabinetFE.git ASAPCabinetFE-src
cd ASAPCabinetFE-src
git lfs install
git lfs pull
👪 Install Dependencies (
Debian)
cat apt-packages.txt | xargs sudo apt-get install -y
👪 Install Dependencies (
Arch)
cat pacman-packages.txt | xargs sudo pacman -S --needed --noconfirm
🐞 Build and Run (Debug)
For debugging, build with the Debug configuration to include symbols and run directly from the build folder.
cmake -DCMAKE_BUILD_TYPE=Debug -B build -S .
cmake --build build -j$(nproc)
cd build
./ASAPCabinetFE
🕹️ Build and Install (Release)
cmake -DCMAKE_BUILD_TYPE=Release -B build -S .
cmake --build build -j$(nproc)
cmake --install build
Run and configure your paths:
cd ~/ASAPCabinetFE
./ASAPCabinetFE
Built something cool? Share it with us in the Discussions!
🚨 For Hyprland users 🚨
>[!WARNING] >Window positioning won't work in Hyprland
>Use hyprctl clients to check exact titles or classes.
You can add window rules like this
# ----------- ASAPCabinetFE | VPinballX
# Playfield
windowrulev2 = workspace 4, title:^(Playfield|Visual Pinball Player)$
windowrulev2 = monitor:DP-1, title:^(Playfield|Visual Pinball Player)$
windowrulev2 = fullscreen, title:^(Playfield|Visual Pinball Player)$
# Backglass
windowrulev2 = workspace 3, title:^(Backglass|Visual Pinball - Backglass)$
windowrulev2 = monitor:HDMI-A-1, title:^(Backglass|Visual Pinball - Backglass)$
windowrulev2 = move 45% 3%, title:^(Backglass|Visual Pinball - Backglass)$
# DMD/Score
windowrulev2 = workspace 3, title:^(DMD|Visual Pinball - Score)$
windowrulev2 = monitor:HDMI-A-1, title:^(DMD|Visual Pinball - Score)$
windowrulev2 = move 45% 75%, title:^(DMD|Visual Pinball - Score)$
Default Keymap
Customize these keybinds to fit your cabinet’s controls—because every setup is unique.
| Action | Key | Description |
| Scroll Table (One) | Left/Right Shift | Move to the previous/next table. |
| Scroll Table (Tens) | Left/Right Ctrl | Move 10 tables backward/forward. |
| Scroll by Letter | z and / | Scroll tables alphabetically (prev/next). |
| Scroll Random | r | Move to a random table. |
| Launch Table | Enter | Launch the selected table with VPinballX |
| Launch SShot mode | s | Launch the table in screenshot mode. |
| Config Panel | c | Toggle config panel. |
| Save window pos. | left doubleclick | Saves current window positions in config. |
| Metadata Editor | m | Toggle Metadata Editor in current table. |
| VPSdb Catalog | n | Toggle VPSdb catalog for browsing tables. |
| Quit | q | Exit the application. |
Generator Tools
[!IMPORTANT] Make sure your paths are properly configured before generating media.
1. Use the screenshot tool to take planned screenshots
Start the table in "Screenshot Mode" (default: s) and follow the on-screen instructions.
2. Use the generator to record your screen and create media (PNGs or MP4s) for the frontend, saved to paths specified in settings.json.
./generate_media.sh --help
3. Use the missing media tool to find those sneaky tables without art.
./missing_media.sh --help
>[!WARNING] >Use –vpx-version depending on your setup, ex: ./generate_media.sh --vpx-version 10.8.1 -d -f
Planned Features:
We’re dreaming big! Help us bring these features to life:
- Multi-launchers.
- In-game video recording.
- Attract Mode.
- Integration of VPXGUITools for table management.
Contribute
Contributions are very welcome! Check the [TODO](TODO) list, open issues or pull requests to help improve this app—every bit helps. You can find the documentation here or by typing doxygen on the project root, and opening docs/index.html.
Acknowledgments
Footnote
If you need help installing and configuring Visual Pinball X check out my wiki page, also check out VPXGUITools to help ease the process of settings tables up.
Join the Discussions page for questions and ideas!