2.8 KiB
Photon Uploader (Apple Silicon)
A lightweight macOS menu bar app that watches a folder for new image files and automatically uploads them to your Photon SSH Container via SCP. After a successful upload, the URL is copied to your clipboard and a system notification is sent.
Requirements
- Homebrew
fswatch—brew install fswatchopenssl—brew install openssl
Configuration
Copy photon.conf to ~/Documents/Photon/photon.conf and fill in your values:
# Directories
DIR_TO_MONITOR="/Users/Jordan/Documents/Photon/tmp" # Folder to watch for new files
DIR_TO_MOVE="/Users/Jordan/Documents/Photon/upload" # Staging area during upload
DIR_ARCHIVE="/Users/Jordan/Documents/Photon/archive" # Where files go after upload (if archiving)
# Server
SERVER="photon.example.com"
USER="photon"
PORT="2222"
REMOTE_DIR="/path/on/server/"
PHOTON_DOMAIN="photon.example.com"
BASE_URL="https://photon.example.com/share"
# SSH key
SSH_KEY_PATH="$HOME/.ssh/id_rsa"
# File handling
SUPPORTED_EXTENSIONS="jpg,jpeg,png,gif,webp,bmp,tiff"
CLEANUP_AFTER_UPLOAD=true
ENABLE_NOTIFICATIONS=true
# Performance
MAX_CONCURRENT_UPLOADS=3
UPLOAD_TIMEOUT=30
Building
./build.sh
This compiles both Swift binaries, assembles the app bundle, and installs the result to ~/Applications/Photon Uploader.app.
Regenerating the app icon
./create_icon.sh
Requires magick (brew install imagemagick). Generates Resources/AppIcon.icns from the source artwork and then runs build.sh.
Usage
Launch Photon Uploader from ~/Applications. It will start automatically monitoring DIR_TO_MONITOR. Drop any supported image file into that folder and it will be:
- Renamed to a random filename
- Uploaded to Photon via SCP
- URL copied to your clipboard
- Thumbnail generation triggered on the server
- Archived or removed locally (depending on
CLEANUP_AFTER_UPLOAD)
Use the menu bar icon to Open Log (~/Documents/Photon/photon-upload.log) or Quit.
Project structure
photon-uploader/
├── build/
│ ├── Info.plist App bundle metadata.
│ ├── PhotonUploader/
│ │ └── main.swift Menu bar app source.
│ │
│ ├── PhotonNotify/
│ │ ├── main.swift Notification helper source.
│ │ └── info.plist Helper bundle metadata.
│ │
│ ├── Resources/
│ │ ├── AppIcon.icns App icon.
│ │ ├── MenuBarIcon.png Menu bar icon (1x).
│ │ └── MenuBarIcon@2x.png Menu bar icon (2x).
│ └── upload.sh Upload daemon script.
│
├── build.sh Build and install script.
└── photon.conf Example configuration
