ASAPCabinetFE
 
Loading...
Searching...
No Matches
ASAPCabinetFE

GitHub stars GitHub forks C++ Standard CMake Latest Compile Latest Release GitHub commits since latest release License Documentation GitHub repo size GitHub Downloads (all assets, all releases)

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 Debian)

sudo apt-get update
sudo apt-get install git findutils -y
👫 Make sure you have git and xargs available (Arch Linux 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 Debian)

cat apt-packages.txt | xargs sudo apt-get install -y
👪 Install Dependencies (Arch Linux 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!