MagicMirror module that displays images from a Google Drive folder using rclone.
No API keys. No Google developer setup. Simple browser-based authentication.
- Displays images from a Google Drive folder
- Uses rclone with simple browser authentication (no API keys required)
- Automatic background syncing (no cron jobs)
- Local image playback for smooth performance
- Linear or random playback modes
- Tap or click to pause and resume slideshow
- Swipe left or right to navigate images
- Designed for non-technical users
- Configurable navigation arrows
- Configurable image layout (portrait or landscape)
- Adjustable image scaling (% based sizing)
Navigate to your MagicMirror modules folder:
cd ~/MagicMirror/modulesClone the repository:
git clone https://github.com/Dresch360/MMM-DriveImages.gitMake the setup script executable:
chmod +x MMM-DriveImages/connectAdd this to your config.js:
{
module: "MMM-DriveImages",
position: "fullscreen_above",
config: {
driveRemote: "drive:mirror-images", // Google Drive folder (via rclone)
imagePath: "/home/pi/MagicMirror/modules/MMM-DriveImages/public/images", // Local image storage path
syncInterval: 2 * 60 * 1000, // Time between Google Drive syncs (ms)
syncOnStart: true, // Sync immediately when MagicMirror starts
syncTimeout: 120000, // Max time allowed for each sync (ms)
slideshowInterval: 10000, // Time each image is displayed (ms)
animationSpeed: 1000, // Transition/update speed (ms)
playMode: "linear", //"linear" or "random"
touchControls: true, // enable tap + swipe controls
showArrows: true, // click left/right arrows for previous or next image
arrowOpacity: 0.3, // controls arrow visibility (0.0 to 1.0)
arrowFontSize: 40, // controls arrow size in pixels
objectFit: "", // Optional override: "cover" or "contain" (leave blank to use screenMode)
screenMode: "portrait", // "portrait" = full image (contain), "landscape" = fill screen (cover)
imageScale: 100 // Image size as % (100 = full, 80 = smaller, 120 = zoom)
}
},| Option | Description | Default |
|---|---|---|
driveRemote |
Google Drive folder to sync from | "drive:mirror-images" |
syncInterval |
How often to sync with Google Drive (ms) | 2 * 60 * 1000 |
slideshowInterval |
Time between image changes (ms) | 10000 |
syncOnStart |
Run a sync immediately on startup | true |
animationSpeed |
Transition speed between images (ms) | 1000 |
playMode |
Playback order for images | "linear" |
touchControls |
Enable tap to pause and swipe navigation | true |
screenMode |
Screen orientation (controls image fit) | "portrait" |
showArrows |
Show or hide left/right navigation arrows | true |
arrowOpacity |
Controls arrow visibility (0.0 to 1.0) | 0.3 |
arrowFontSize |
Controls arrow size in pixels | 40 |
imageScale |
Image size as a percentage of available space | 100 |
linear= plays images in orderrandom= randomizes the next image
-
Minimize MagicMirror Press:
Ctrl + m -
Open Terminal
-
Run:
~/MagicMirror/modules/MMM-DriveImages/connect
- Follow prompts:
- Type
yto authenticate - A browser window will open. Sign into your Google account
- Return to Terminal
- Type
nfor Shared Drive
MagicMirror will restart automatically.
- Open the Google Drive app
- Open the folder:
mirror-imagesor you can rename to an existing image folder in the config (seedriveRemoteoption above) - Tap
+→ Upload - Press and hold one image, then select multiple
- Tap Select → Upload
Images will appear automatically in ~2 minutes.
- Go to https://drive.google.com
- Open the folder:
mirror-images - Drag and drop your images
- The Google Drive folder
mirror-imagesis created automatically during setup Folder name must be exactly:mirror-images(all lowercase)- Once setup completes, you can use any existing Google Drive folder you like by naming it in the config (see
driveRemoteoption in config above) - Supported formats: JPG, PNG, GIF, WEBP
- Updates happen automatically (~2 minutes)
- No setup required after initial connection
- If no images appear, upload images to the
mirror-imagesfolder
To remove images and disconnect Google Drive:
rm -rf ~/MagicMirror/modules/MMM-DriveImages/public/images/*
rm -f ~/.config/rclone/rclone.conf
pm2 restart MagicMirrorMIT License
