Default configuration¶
Relative paths:
Relative path (path which doesn’t start by a /) can be used. In this
case, the path is considered starting from the configuration file location.
List of elements:
Option with mention list of quoted ... indicated means that a list of 2 or
more elements can be provided. A list starts and finishes with parenthesis
(...). Each element is separated by a comma ,.
[GENERAL]
# User interface language: 'br', 'de', 'dk', 'en', 'es', 'fr', 'hu', 'it', 'nl', 'no', 'pt' or 'se'
language = en
# Path to save pictures (list of quoted paths accepted)
directory = ~/Pictures/pibooth
# Start pibooth at Raspberry Pi startup
autostart = False
# How long to wait in second before start pibooth at Raspberry Pi startup
autostart_delay = 0
# In debug mode, exceptions will stop pibooth, logs are more verbose, image placeholders at screen
debug = False
# Path to custom plugin(s) not installed with pip (list of quoted paths accepted)
plugins =
# Plugin names to be disabled after startup (list of quoted names accepted)
plugins_disabled =
# Enable a virtual keyboard in the settings interface
vkeyboard = False
[WINDOW]
# The (width, height) of the display window or 'fullscreen'
size = (800, 480)
# Background RGB color or image path
background = (0, 0, 0)
# Font name or file path used for app texts
font = Amatic-Bold
# Text RGB color
text_color = (255, 255, 255)
# Blinking background when a capture is taken
flash = True
# Animate the last taken picture by displaying captures one by one
animate = False
# How long is displayed the capture in seconds before switching to the next one
animate_delay = 0.2
# On 'wait' state: how long is displayed the final picture in seconds before being hidden (-1 if never hidden)
wait_picture_delay = -1
# On 'wait' state: display the last picture saved on disk when the application starts
wait_picture_reload = False
# How long is displayed the 'chosen' state: (0 if never shown)
chosen_delay = 4
# On 'finish' state: how long is displayed the final picture in seconds (0 if never shown)
finish_picture_delay = 0
# Show arrows to indicate physical buttons: 'bottom', 'top', 'hidden' or 'touchscreen'
arrows = bottom
# Apply horizontal offset to arrows position
arrows_x_offset = 0
# How long is the preview in seconds (0 if never shown)
preview_delay = 3
# Show a countdown timer during the preview
preview_countdown = True
[PICTURE]
# Orientation of the final picture: 'auto', 'portrait' or 'landscape'
orientation = auto
# Show backgrounds in layout choice thumbnails
captures_preview_backgrounds = False
# Possible choice(s) of captures numbers (numbers between 1 to 4)
captures = (1, 2, 3, 4)
# Effect applied to the captures (list of quoted names accepted)
captures_effects = none
# Crop each capture border in order to fit the paper size
captures_cropping = False
# Thick (in pixels) between captures and picture borders/texts
margin_thick = 100
# Main text displayed
footer_text1 = Footer 1
# Secondary text displayed
footer_text2 = Footer 2
# RGB colors used for footer texts (list of tuples accepted)
text_colors = (0, 0, 0)
# Fonts name or file path used for footer texts (list of quoted names accepted)
text_fonts = ('Amatic-Bold', 'AmaticSC-Regular')
# Alignments used for footer texts: 'left', 'center' or 'right' (list of quoted names accepted)
text_alignments = center
# Overlay path (PNG file) with same aspect ratio than final picture (list of quoted paths accepted)
overlays =
# Background RGB color or image path (list of tuples or quoted paths accepted)
backgrounds = (255, 255, 255)
[CAMERA]
# Adjust ISO for lighting issues, can be different for preview and capture (list of integers accepted)
iso = 100
# Flip horizontally the capture
flip = False
# Rotation of the camera: 0, 90, 180 or 270, can be different for preview and capture (list of integers accepted)
rotation = 0
# Resolution for camera captures (preview will have same aspect ratio)
resolution = (1934, 2464)
# Autofocus of the camera (when it has a motorized lens): 'continuous', 'capture' or 'off'
autofocus = continuous
# Focus distance in diopters (1/meters, 0 = infinity) when autofocus is 'off'
lens_position = 0.0
# Delete captures from camera internal memory (when applicable)
delete_internal_memory = False
[PRINTER]
# Name of the printer defined in CUPS (or use the 'default' one)
printer_name = default
# Print options passed to the printer, shall be a valid Python dictionary
printer_options = {}
# How long is the print view in seconds (0 to skip it)
printer_delay = 10
# Number of pages automatically sent to the printer (or use 'max' to reach max duplicate)
auto_print = 0
# Maximum number of printed pages before warning on paper/ink levels (-1 = infinite)
max_pages = -1
# Maximum number of duplicate pages sent to the printer (avoid paper waste)
max_duplicates = 3
[CONTROLS]
# How long to press a single hardware button in seconds
debounce_delay = 0.3
# How long to press multiple hardware buttons in seconds
multi_press_delay = 0.5
# Physical GPIO IN pin to take a capture sequence
capture_btn_pin = 11
# Physical GPIO OUT pin to light a LED when capture button is pressed
capture_led_pin = 7
# Physical GPIO IN pin to print a picture
print_btn_pin = 13
# Physical GPIO OUT pin to light a LED when print button is pressed
print_led_pin = 15
Customizing per layout¶
When multiple capture layouts are enabled (e.g. captures = (4, 3, 2, 1)),
you can provide a different background, overlay, effect and text color for each
layout. The order matches the captures tuple.
Orientation behavior:
With orientation = auto, pibooth automatically picks the best orientation
based on the number of captures:
Captures |
Final image orientation |
|---|---|
1 photo |
Same as camera (typically portrait) |
4 photos |
Same as camera (typically portrait) |
2 photos |
Inverted (landscape if camera is portrait) |
3 photos |
Inverted (landscape if camera is portrait) |
Example: different background and overlay per layout
[PICTURE]
captures = (4, 3, 2, 1)
orientation = auto
# One background per layout (in same order as captures)
# Portrait layouts: 2400x3600px, Landscape layouts: 3600x2400px
backgrounds = ('bg_4photos.jpg', 'bg_3photos.jpg', 'bg_2photos.jpg', 'bg_1photo.jpg')
# Overlays (PNG with alpha channel), empty string to skip
overlays = ('overlay_4.png', '', '', 'overlay_1.png')
# Different effects per capture
captures_effects = ('none', 'blur', 'none', 'sharpen')
# Different text colors per layout
text_colors = ((255, 255, 255), (0, 0, 0), (0, 0, 0), (255, 255, 255))
You can also mix image paths with RGB color tuples for backgrounds:
# Photo 4: custom image, Photo 3: white, Photo 2: image, Photo 1: black
backgrounds = ('bg_4photos.jpg', (255, 255, 255), 'bg_2photos.jpg', (0, 0, 0))
Preparing overlay files:
Format: PNG 32-bit with alpha channel (RGBA)
Transparent zones (alpha = 0) let the photos show through
Decorative elements (frames, logos) should be opaque
Match the final image dimensions for best quality: portrait = 2400x3600px, landscape = 3600x2400px (at default 600 DPI, 4x6 paper)
Keep file size under 5 MB for Raspberry Pi performance
Preparing background files:
Format: JPG (no transparency needed), quality 85-90%
Same dimensions as overlay files
Will be cropped to fit if aspect ratio differs