Skip to content

Examples

This document provides practical examples for common AppImage Updater usage patterns.

For complete CLI command documentation including all options and syntax, see the Usage Guide.

Basic Application Setup

# Add FreeCAD (CAD software)
appimage-updater add FreeCAD https://github.com/FreeCAD/FreeCAD ~/Applications/FreeCAD

# Add OrcaSlicer (3D printing slicer)
appimage-updater add OrcaSlicer https://github.com/SoftFever/OrcaSlicer ~/Applications/OrcaSlicer

# Add BambuStudio (3D printing slicer - ZIP format)
appimage-updater add BambuStudio https://github.com/bambulab/BambuStudio ~/Applications/BambuStudio

# Add Krita (digital painting)
appimage-updater add Krita https://github.com/KDE/krita ~/Applications/Krita

# Add Kdenlive (video editor)
appimage-updater add Kdenlive https://github.com/KDE/kdenlive ~/Applications/Kdenlive

Development and Nightly Builds

# Add development version with prerelease tracking
appimage-updater add --prerelease \
  VSCode-Insiders https://github.com/microsoft/vscode ~/Dev/VSCode-Insiders

# Add nightly build with prerelease tracking
appimage-updater add --prerelease \
  Blender-Nightly https://github.com/blender/blender ~/Applications/Blender-Nightly

ZIP File Examples

Some applications distribute AppImages inside ZIP files. AppImage Updater automatically handles ZIP extraction:

# BambuStudio releases AppImages in ZIP files
appimage-updater add BambuStudio https://github.com/bambulab/BambuStudio ~/Applications/BambuStudio

# Manual pattern for ZIP + AppImage support
appimage-updater add --pattern "(?i)Bambu_?Studio_.*\.(zip|AppImage)(\.(|current|old))?$" \
  BambuStudio https://github.com/bambulab/BambuStudio ~/Applications/BambuStudio

# ZIP file with rotation support
appimage-updater add --rotation --symlink ~/bin/bambustudio.AppImage \
  --pattern "(?i)Bambu_?Studio_.*\.(zip|AppImage)(\.(|current|old))?$" \
  BambuStudio https://github.com/bambulab/BambuStudio ~/Applications/BambuStudio

# Generic app that might release in either ZIP or AppImage format
appimage-updater add --pattern "(?i)MyApp.*\.(zip|AppImage)$" \
  MyApp https://github.com/user/myapp ~/Applications/MyApp

File Rotation Examples

# Add with file rotation and symlink management
appimage-updater add --rotation --symlink ~/bin/freecad.AppImage --retain 5 \
  FreeCAD https://github.com/FreeCAD/FreeCAD ~/Applications/FreeCAD

# Add development app with prerelease and rotation
appimage-updater add --prerelease --rotation \
  --symlink ~/bin/myapp.AppImage --retain 10 \
  MyDevApp https://github.com/me/myapp ~/Dev/MyApp

Configuration Examples

Single File Configuration

~/.config/appimage-updater/config.json:

{
  "global_config": {
    "concurrent_downloads": 5,
    "timeout": 60,
    "retry_attempts": 3
  },
  "applications": [
    {
      "name": "FreeCAD_weekly",
      "source_type": "github",
      "url": "https://github.com/FreeCAD/FreeCAD",
      "download_dir": "/home/user/Applications/FreeCAD",
      "pattern": "FreeCAD_weekly.*Linux-x86_64.*\\.AppImage(\\\\..*)?$",
      "enabled": true,
      "prerelease": true,
      "checksum": {
        "enabled": true,
        "algorithm": "sha256",
        "pattern": "{filename}-SHA256.txt",
        "required": false
      },
      "rotation_enabled": true,
      "symlink_path": "/home/user/bin/freecad.AppImage",
      "retain_count": 3
    },
    {
      "name": "BambuStudio",
      "source_type": "github",
      "url": "https://github.com/bambulab/BambuStudio",
      "download_dir": "/home/user/Applications/BambuStudio",
      "pattern": "(?i)Bambu_?Studio_.*\\.(zip|AppImage)(\\.(|current|old))?$",
      "enabled": true,
      "prerelease": false,
      "checksum": {
        "enabled": false,
        "algorithm": "sha256",
        "required": false
      },
      "rotation_enabled": true,
      "symlink_path": "/home/user/bin/bambustudio.AppImage",
      "retain_count": 2
    },
    {
      "name": "OrcaSlicer",
      "source_type": "github", 
      "url": "https://github.com/SoftFever/OrcaSlicer",
      "download_dir": "/home/user/Applications/OrcaSlicer",
      "pattern": "OrcaSlicer_Linux_AppImage_Ubuntu2404_.*\\.AppImage(\\\\..*)?$",
      "enabled": true,
      "prerelease": false,
      "checksum": {
        "enabled": true,
        "algorithm": "sha256",
        "pattern": "{filename}.sha256",
        "required": true
      },
      "rotation_enabled": false
    }
  ]
}

Directory-Based Configuration

~/.config/appimage-updater/global.json:

{
  "global_config": {
    "concurrent_downloads": 3,
    "timeout": 30,
    "retry_attempts": 3,
    "log_level": "INFO"
  }
}

~/.config/appimage-updater/graphics.json:

{
  "applications": [
    {
      "name": "Krita",
      "source_type": "github",
      "url": "https://github.com/KDE/krita",
      "download_dir": "/home/user/Applications/Krita",
      "pattern": "krita.*linux.*\\.AppImage(\\\\..*)?$",
      "enabled": true,
      "prerelease": false
    },
    {
      "name": "GIMP",
      "source_type": "github",
      "url": "https://github.com/GNOME/gimp",
      "download_dir": "/home/user/Applications/GIMP",
      "pattern": "GIMP.*linux.*\\.AppImage(\\\\..*)?$",
      "enabled": true,
      "prerelease": false
    }
  ]
}

Automation Examples

Cron Job Setup

# Edit crontab
crontab -e

# Add daily check at 9 AM
0 9 * * * /usr/local/bin/appimage-updater check

# Add weekly check on Sunday at 10 AM  
0 10 * * 0 /usr/local/bin/appimage-updater check

# Check every 6 hours
0 */6 * * * /usr/local/bin/appimage-updater check

Systemd Timer

Create /etc/systemd/system/appimage-updater.service:

[Unit]
Description=AppImage Updater Service
After=network-online.target

[Service]
Type=oneshot
User=%i
ExecStart=/usr/local/bin/appimage-updater check
StandardOutput=journal
StandardError=journal

Create /etc/systemd/system/appimage-updater.timer:

[Unit]
Description=Run AppImage Updater daily
Requires=appimage-updater.service

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Enable and start:

sudo systemctl enable appimage-updater.timer
sudo systemctl start appimage-updater.timer

Shell Script with Notifications

~/bin/appimage-update.sh:

#!/bin/bash

LOG_FILE="/tmp/appimage-updater.log"
ERROR_FILE="/tmp/appimage-updater.error"

# Run updater with logging
appimage-updater check > "$LOG_FILE" 2> "$ERROR_FILE"
EXIT_CODE=$?

# Send notification based on result
if [ $EXIT_CODE -eq 0 ]; then
    UPDATES=$(grep -c "Update Ready" "$LOG_FILE" || echo "0")
    if [ "$UPDATES" -gt 0 ]; then
        notify-send "AppImage Updates" "$UPDATES updates downloaded successfully"
    else
        notify-send "AppImage Updates" "All applications are up to date"
    fi
else
    ERROR_MSG=$(head -n 5 "$ERROR_FILE")
    notify-send "AppImage Updates Failed" "$ERROR_MSG"
fi

# Clean up
rm -f "$LOG_FILE" "$ERROR_FILE"

Advanced Pattern Examples

Complex File Patterns

# FreeCAD weekly builds with specific architecture
appimage-updater edit FreeCAD --pattern "FreeCAD_weekly.*Linux-x86_64.*\\.AppImage(\\\\..*)?$"

# OrcaSlicer with Ubuntu version specificity
appimage-updater edit OrcaSlicer --pattern "OrcaSlicer_Linux_AppImage_Ubuntu2404_.*\\.AppImage(\\\\..*)?$"

# Generic pattern for any Linux AppImage
appimage-updater edit GenericApp --pattern ".*[Ll]inux.*\\.AppImage(\\\\..*)?$"

# Version-specific pattern
appimage-updater edit VersionedApp --pattern "MyApp[-_]v?[0-9]+\\.[0-9]+\\.[0-9]+.*\\.AppImage(\\\\..*)?$"

Checksum Patterns

# SHA256 with filename prefix
appimage-updater edit MyApp --checksum-pattern "{filename}-SHA256.txt"

# SHA256 with .sha256 extension
appimage-updater edit MyApp --checksum-pattern "{filename}.sha256"

# Generic checksum file
appimage-updater edit MyApp --checksum-pattern "checksums.txt"

# MD5 checksum
appimage-updater edit MyApp --checksum-algorithm md5 --checksum-pattern "{filename}.md5"

Bulk Management Examples

Managing Multiple Applications

# List all applications
appimage-updater list

# Check status for all graphics applications
for app in Krita GIMP Inkscape Blender; do
    appimage-updater show "$app"
done

# Enable rotation for development applications
for app in VSCode-Insiders Atom-Nightly; do
    appimage-updater edit "$app" --rotation --symlink "/home/user/bin/${app,,}.AppImage"
done

# Disable applications temporarily
for app in OldApp DeprecatedApp; do
    appimage-updater edit "$app" --disable
done

Batch Configuration

#!/bin/bash
# setup-graphics-apps.sh

APPS=(
    "Krita https://github.com/KDE/krita"
    "GIMP https://github.com/GNOME/gimp"
    "Inkscape https://github.com/inkscape/inkscape"
    "Blender https://github.com/blender/blender"
)

BASE_DIR="$HOME/Applications"

for app_info in "${APPS[@]}"; do
    read -r app_name app_url <<< "$app_info"

    echo "Setting up $app_name..."
    appimage-updater add \
        --checksum \
        "$app_name" "$app_url" "$BASE_DIR/$app_name"
done

echo "Graphics applications setup complete!"

Integration Examples

Desktop Integration

Create .desktop files that use symlinked AppImages:

~/.local/share/applications/freecad.desktop:

[Desktop Entry]
Name=FreeCAD
Comment=Feature based parametric modeler
Exec=/home/user/bin/freecad.AppImage %f
Icon=freecad
Terminal=false
Type=Application
Categories=Graphics;Science;Engineering;
MimeType=application/x-extension-fcstd;

PATH Integration

Add symlink directory to PATH in ~/.bashrc:

# Add AppImage symlinks to PATH
export PATH="$HOME/bin:$PATH"

IDE Integration

Configure your IDE to use symlinked AppImages:

// VS Code settings.json
{
    "freecad.executable": "/home/user/bin/freecad.AppImage",
    "blender.executable": "/home/user/bin/blender.AppImage"
}

Monitoring Examples

Log Analysis

# View recent activity
tail -f ~/.local/share/appimage-updater/appimage-updater.log

# Check for errors
grep ERROR ~/.local/share/appimage-updater/appimage-updater.log

# Check specific application
grep "FreeCAD" ~/.local/share/appimage-updater/appimage-updater.log

Status Monitoring

# Check status of all applications
appimage-updater check --dry-run

# Generate status report
appimage-updater list > status-report.txt
appimage-updater check --dry-run >> status-report.txt

These examples should help you get started with various AppImage Updater configurations and workflows!