MomentoBooth is a cross-platform open source photo booth software. Capture your events in an easy and fun way!
Check the online documentation at https://momentobooth.github.io/momentobooth/.
- Single capture
- Multi-capture
Shoot 4 photos and then select the ones you like to for a collage of 1, 2, 3, or 4 photos - User friendly touch-centered interface
- Photo printing
Lots of settings included to size and position your print well - Photo sharing using
ffsend
QR code - Theming with collage template images (background and foreground)
- Webcam live view and capture support
- Use HDMI capture dongles that act as a webcam
- Use any cameras that support live view over USB through libgphoto2
- Camera capture support
- With Sony Imaging Edge Remote using AutoIt
- Capture using a camera that supports capture over USB through libgphoto2
- Statistics
- Clear settings panel
- Gallery with created images
- Re-print or -share
- Manual collage creation for untethered handheld shooting
- Beautiful animations
- Linux Flatpak distribution (x86_64 and arm64)
- Windows arm64 distribution (waiting for public GitHub Actions runners)
- Languages: Dart, Rust, C++ (Windows, Linux), Swift (macOS)
- Dart/Rust glue: flutter_rust_bridge
- UI: Flutter
- Webcam: Nokhwa
- Printing: Printing
- Logging: Talker
- Data classes: Freezed
- Firefox Send client: ffsend-api
- JPEG decoding: zune-jpeg, encoding: jpeg-encoder
On Windows:
-
Visual Studio 2022 Build Tools
- Optional: A full Visual Studio 2022 install
- Make sure to select "Desktop development with C++" on the Workloads tab when installing
-
Rust
- Install using
rustup
is recommended, to keep all components up to date - Make sure to install/configure with default options (MSVC host, target and toolchain)
- Install using
-
MSYS2
- Install using the instructions on the MSYS2 website
- Install the following packages:
mingw-w64-clang-x86_64-pkgconf mingw-w64-clang-x86_64-libgphoto2 mingw-w64-clang-x86_64-gexiv2 mingw-w64-clang-x86_64-curl-winssl mingw-w64-clang-x86_64-nghttp2 mingw-w64-clang-x86_64-nghttp3
- Make sure
{MSYS_INSTALL_PATH}\clang64\bin
is in your PATH (before other folders that also providepkg-config
/pkgconf
) - As of now MSVC is not able to find the
lib[name].dll.a
libraries for linking, as such we have to make copies of thelib[name].dll.a
files and rename them to[name].lib
:
cd $MSYS_INSTALL_PATH\clang64\lib cp libgexiv2.dll.a gexiv2.lib cp libexiv2.dll.a exiv2.lib cp libgio-2.0.dll.a gio-2.0.lib cp libglib-2.0.dll.a glib-2.0.lib cp libgobject-2.0.dll.a gobject-2.0.lib cp libgphoto2.dll.a gphoto2.lib cp libgphoto2_port.dll.a gphoto2_port.lib cp libintl.dll.a intl.lib
On macOS:
- Xcode
- Install using App Store is recommended, to keep it up to date
- Rust (
aarch64-apple-darwin
andx86_64-apple-darwin
targets)- Install using
rustup
is recommended, to keep all components up to date
- Install using
On Linux:
- This list of packages from the Flutter website
- The install command provided by the Flutter website may only work on Ubuntu, please check your distro website for the corresponding package names
- Additional packages: llvm, libssl-dev, libdigest-sha-perl, libcurl4-openssl-dev
- Rust (
x86_64-unknown-linux-gnu
oraarch64-unknown-linux-gnu
depending on your architecture)- Install using
rustup
is recommended, to keep all components up to date
- Install using
All platforms:
flutter_rust_bridge_codegen
- Install using Cargo:
cargo install flutter_rust_bridge_codegen --version 2.9.0
- Install using Cargo:
- Flutter SDK 3.29.0+
- Be sure that the
flutter
command is available globally asflutter_rust_bridge_codegen
needs it
This is especially important when using Flutter SDK managers likeasdf
orfvm
- Be sure that the
- Optional: For building the documentation mdBook and some extensions for mdBook are needed
- Install using Cargo:
cargo install mdbook mdbook-mermaid mdbook-admonish
- Install using Cargo:
- Be sure to read the docs for troubleshooting and workarounds
For all languages, frameworks and tools, we support the latest versions.
Please note: This method expects global fvm to be available and just.
- Run
just
from the root folder of the repository - Run
flutter run
or use your IDE to run the application
Instructions:
Please note: Run all commands from the root folder of the repository, unless mentioned otherwise.
- Run
flutter gen-l10n
- Run
flutter_rust_bridge_codegen generate
:- Note: Make sure to re-run this command if you changed anything in the Rust subproject
- Run
flutter run
or use your IDE to run the application- Note: This will automatically build the Rust subproject before building the Flutter project, so no need to worry about that!
- If you have changed any code in the Dart or Rust project that could change the generated bridging code, you should re-run the
flutter_rust_bridge_codegen generate
orjust gen-bridge
command- You can also run
flutter_rust_bridge_codegen generate --watch
orjust watch-bridge
to automatically regenerate the bridging code when you save a file
- You can also run
- If you have changed any code related to JSON or TOML serialization, or MobX, you should re-run the
dart run build_runner build --delete-conflicting-outputs
orjust gen-code
command- You can also run
dart run build_runner watch --delete-conflicting-outputs
orjust watch-code
to automatically regenerate the code when you save a file
- You can also run
- If you have changed any code related to the localization, you should re-run the
flutter gen-l10n
ofjust gen-l10n
command
Adding a new screen using the VS Code extension Template:
- Make sure to have the Template extension installed
- Right click the
views
folder in VS Code Explorer - Click Template: Create New (with rename), pick the
view
template - Pick a name, enter it in
{snake_case}_screen
format (e.g.settings_screen
oremail_photo_screen
), press Enter - Your new view should be available!