Burn to the Brim (BTTB) is a modern C++20 desktop application designed to optimally fit files and folders onto target storage mediums (such as CDs, DVDs, or Custom sizes).
This is a complete port of the classic Delphi application to C++20 supporting:
- Linux: Natively compiled GTK 4 desktop application running on Ubuntu 24.04+.
- Windows: Native, lightweight Win32 SDK GUI desktop application running natively on Windows with zero external DLL dependencies.
It solves the subset-sum / bin packing problem instantly using an advanced recursive backtracking solver, matching files efficiently, and providing file organization and ISO creation capabilities.
- Backtracking Bin Packing Solver: Employs the highly optimized subset-sum algorithm from the original BTTB version, executing in milliseconds with a fluid non-blocking background thread.
- Directory Split Constraints: Control directory structures by configuring a
splitDepthwaterlevel (atomic vs recursive scanning). - Modern Rule Groupings: Group files/directories together on the same medium using standard wildcards (globs) or powerful regular expressions (
std::regex). - File Organization: Copy or move matched selections directly to target organizing folders automatically.
- ISO Creation Integration: Generate ISO 9660 / Joliet / Rock Ridge images natively via standard command line utilities (
genisoimage/mkisofs) with real-time log capturing. - Vibrant User Interfaces:
- Linux (GTK 4): Standard GNOME Adwaita aesthetic featuring a HeaderBar, scrolling side results tree, interactive progress tracking, and detailed colored log viewer.
- Windows (Win32 Native): Ultra-lightweight (~160KB standalone binary), statically linked, utilizing standard native Windows SDK controls, comctl32 progress elements, and Windows Shell folder selectors.
Simply extract the release package bttb-cpp-3.2.0-Win64-Native-GUI.zip and run:
bttb_win32.exe: Double-click to launch the native Windows GUI application instantly!
To use the Create ISO Image feature, a command-line ISO generation utility (genisoimage.exe or mkisofs.exe) must be installed on your Windows system and added to your environment PATH.
Here are the simplest ways to install it:
-
Method 1: Using Scoop (Recommended - Easiest & Automatic PATH)
- Open PowerShell and run this command to install Scoop (if not installed):
irm get.scoop.sh | iex - Install
cdrtools(which includesmkisofs):scoop install cdrtools
- Restart Burn to the Brim and create your ISO!
- Open PowerShell and run this command to install Scoop (if not installed):
-
Method 2: Using Chocolatey (Automatic PATH)
- Open an Administrator PowerShell and run:
choco install cdrtools
- Restart Burn to the Brim and create your ISO!
- Open an Administrator PowerShell and run:
-
Method 3: Using Cygwin
- Run the Cygwin
setup-x86_64.exeinstaller. - In the Package Selection screen, search for and select the
cdrkit(containsgenisoimage) orcdrtools(containsmkisofs) package. - Add
C:\cygwin64\binto your Windows System environment variablePATH. - Restart Burn to the Brim.
- Run the Cygwin
-
Method 4: Using MSYS2
- Open your MSYS2 UCRT64 terminal and install cdrtools:
pacman -S mingw-w64-ucrt-x86_64-cdrtools
- Add
C:\msys64\ucrt64\binto your Windows System environment variablePATH. - Restart Burn to the Brim.
- Open your MSYS2 UCRT64 terminal and install cdrtools:
sudo apt update
sudo apt install -y libgtk-4-dev build-essential cmake pkg-config genisoimageCompile the application from the root of the project folder:
# Create and navigate to the build folder
mkdir -p build
cd build
# Configure and compile
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)This compiles:
bttb: The GTK 4 desktop GUI application.test_solver: An offline programmatic unit test suite.
# Launch the desktop app
./build/bttb
# Run the unit tests
./build/test_solverTo build the native GTK 4 Windows GUI from source:
- Open the MSYS2 UCRT64 terminal.
- Update system and install the compiler, CMake, and GTK 4:
pacman -Syu pacman -S mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gtk4
- Navigate to the project root directory and build:
mkdir build && cd build cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. mingw32-make -j$(nproc)
To cross-compile the Windows binaries, build the .msi installers, and generate the Linux .deb packages on an Ubuntu development machine:
Install the required build tools, cross-compilers, and packaging utilities:
sudo apt update
sudo apt install -y \
build-essential \
cmake \
pkg-config \
libgtk-4-dev \
genisoimage \
gcc-mingw-w64-x86-64 \
g++-mingw-w64-x86-64 \
msitoolsNavigate to the project root directory and run the packaging script:
python scratch/package_release.pyThis script automates the entire packaging pipeline:
- Linux Compilation: Compiles the native GTK 4 application and generates the
.debpackage via CMake. - Windows Cross-Compilation: Uses MinGW-w64 to build the native 64-bit Windows GUI executables (
bttb_win32.exeandbttb_win32_compat.exe) with exploit mitigations and strips symbols. - Release ZIPs: Packages all portable ZIP archives for Linux and Windows releases.
- MSI Installer Creation: Converts the plain-text
LICENSEfile into a formattedLicense.rtfand runswixlto compile the enterprise-grade.msiinstallers in thebuild/directory:bttb-cpp-4.4.0-Win64-Installer.msi(Native AVX2 release)bttb-cpp-4.4.0-Win64-Compat-Installer.msi(Compatibility SSSE3 release)
- Unified Source Archive: Generates the unified source code ZIP.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License (GPLv2). See the accompanying LICENSE file for the full terms.