Flicker
Professional cross-platform desktop application for fast screenshot capture and file uploads to Emberly cloud storage.
Flicker is a modern, feature-rich desktop uploader for Windows, macOS, and Linux. Designed as the native companion to Emberly, it provides instant screenshot capture, system-wide hotkeys, and seamless uploads with a beautiful, customizable interface.
Getting Flicker
Build from source and get started.
User Guide
Learn all features and settings.
Hotkey Reference
All default hotkeys and how to customize them.
For Developers
Build Flicker from source or contribute.
Flicker is currently in early access (v0.3.0). It's out of beta and stable for daily use, but still under active development expect new features and occasional rough edges.
- Installers for Windows, macOS, and Linux are published from the GitHub Releases page, but are not yet code-signed you may see an OS warning ("unknown publisher" on Windows, "unidentified developer" on macOS) when installing.
- You can also build from source. See Getting Flicker below and the full Flicker Development Guide for details.
Getting Flicker
-
Option 1 - Download a build: grab the installer for your platform from the Releases page. These are unsigned builds; see the callout above for what to expect on install.
-
Option 2 — Build from source:
Prerequisites:
- Node.js 18+ and Rust (latest stable)
- bun (recommended) or npm
Quick Setup:
bun run dev on its own only starts the frontend dev server (Vite) without the desktop shell use bun run tauri:dev to run the actual app.
For full build instructions, toolchain setup, and platform-specific requirements, see the Flicker Development Guide.
User Guide
Getting Started
1. Installation
Download an installer from the Releases page, or build from source see Getting Flicker above and the Flicker Development Guide for full setup instructions.
2. First Login
- Launch Flicker
- Click "Login" button
- Enter your Emberly email/username and password
- If 2FA is enabled, enter your 6-digit code
- Click "Authenticate"
- You're all set.
Alternative: Use Upload Token
- Go to embrly.ca → Settings → Profile → Upload Tools
- Copy your Upload Token
- In Flicker, go to Settings → Account → Enter Token
- Paste the token and save
Core Features
Screenshot Capture
Fullscreen Screenshot — Entire primary monitor
All Monitors — Stitch all displayed monitors into single image
Region screenshot capture has a working backend command (capture_region), but no frontend UI calls it yet — there's no hotkey or button to trigger it in this release.
Upload from Clipboard — Upload whatever image is currently on your system clipboard
How Uploads Work:
- Hotkey triggers screenshot capture (or you drag-and-drop / select files in the Upload tab)
- Image automatically saved (temporary)
- File uploaded to Emberly in background, with a live progress indicator
- URL copied to your clipboard (or opened, depending on your Post-Upload Action setting)
- Success notification shows
- You can paste the URL anywhere
File Format & Quality:
- Default Format: PNG (lossless, high quality)
- Alternative: JPG with quality slider (Settings → Capture)
- Filename Pattern:
Screenshot_YYYY-MM-DD_HH-MM-SS.png- Customize in Settings with:
%Y-%m-%d_%H-%M-%S
- Customize in Settings with:
Upload Management
Automatic Upload:
- Enabled by default
- Screenshot automatically uploads after capture
- No additional steps needed
- Can be toggled in Settings → Behavior
Manual Upload:
- Go to the Upload tab
- Drag and drop one or more files onto the drop zone, or click "Select Files" to choose files (multi-select supported)
- Each file uploads with its own progress bar; failed uploads show a Retry button
- Visibility (Public/Private) and password protection set in Settings → Capture apply as the default for new uploads — you can change either per-file afterward from Upload History (see below)
- If you've picked a custom upload domain in Settings → Capture, it's used for every upload — screenshots, clipboard, and manual uploads alike
- On success, the URL is copied/opened/ignored according to your Post-Upload Action setting
History & Management
Upload Listing:
- Shows last 100 uploads (most recent first) — metadata and URL only, stored locally; the files themselves stay on Emberly
- Thumbnail preview of images, grid or list view
- File size and upload date
- Direct URL in each entry
- Search by filename, filter by file type, and sort — all available now
- Select multiple items to bulk-copy or bulk-delete their URLs
Quick Actions:
Per-File Management (open an entry's preview):
- Toggle visibility between Public and Private
- Set or clear a password
- Changes apply immediately on Emberly — no need to visit the website
This is only available for files uploaded from this version onward; entries from older history that predate the file's database ID can still be copied and deleted, just not edited.
Delete Options:
- Deleting an entry (individually or via multi-select bulk delete) also deletes the file from your Emberly account, not just the local history entry — this is best-effort: the local entry is removed either way, even if the server call fails or the file's already gone
- Deletion of older entries that predate this feature only removes the local record, since there's no file ID to delete by
Settings & Customization
Hotkeys
Default Hotkeys:
| Action | Default |
|---|---|
| Fullscreen screenshot | Ctrl+Shift+S |
| All monitors | Ctrl+Shift+A |
| Upload from clipboard | Ctrl+Alt+U |
| Region screenshot | Backend ready, no UI trigger yet |
Customize Hotkeys:
- Go to Settings → Hotkeys
- Click on any hotkey field
- Press your desired key combination
- Hotkey validates in real-time
- Changes apply immediately
Hotkey Rules:
- Must include at least one modifier (Ctrl, Shift, Alt, Cmd)
- Cannot conflict with system hotkeys
- Works even when Flicker is minimized
- Global system-wide registration (not just in-app)
Appearance
Themes:
Customizations:
- Theme: Select from 15 built-in themes
- Background Opacity: 50% to 100% (control window transparency)
- Font Scale: Small, Medium, Large
- Font Family: System, Inter, Roboto, Monospace, Poppins
- Border Radius: None, Small, Medium, Large
- Sidebar Position: Left or Right
- Compact Mode: Reduce whitespace for minimal UI
- Animations: Enable/disable visual effects
- Glass Effect: Apply glassmorphism styling
Behavior Settings
Post-Upload Action:
Clipboard Format:
Sounds:
A master toggle, plus five independently switchable sound cues (Settings → Behavior):
- Upload success
- Upload error
- Copy link
- Settings saved
- Notification received
Sounds are short synthesized tones (no audio files to configure or replace).
System:
- Start at login / auto-launch (Windows/macOS)
Capture Settings
Image Format:
- Format: PNG (recommended) or JPG
- JPG Quality: 1-100 slider
- Always include timestamp in filename
Capture Options:
- Include cursor: Yes/No (default: Yes)
- Delay before capture: 0-10 seconds (for setup time)
- Filename pattern: Customize with variables
%Y= 4-digit year (2026)%m= 2-digit month (01-12)%d= 2-digit day (01-31)%H= Hour (00-23)%M= Minute (00-59)%S= Second (00-59)
Example Patterns:
Save Locally:
- Optional: Keep a local copy of screenshots
- Enables offline viewing of capture history
- Storage location shown in Settings
Account Settings
Logged In User:
- Display name
- Email address
- Account tier/plan
- Avatar (if set)
Actions:
- View full profile link
- Copy upload token
- Enable/setup 2FA (TOTP)
- Change password (opens web)
- Logout (ends session)
Upload Token Management:
- Copy your private token for API use
- Useful for scripts and automation
- Keep this secret (don't share in code)
- Can be regenerated anytime
Activity Logs (Settings → Account → Activity Logs):
- A local, timestamped log of events that happened in the app (uploads, logins, errors, and other actions) — separate from anything tracked server-side
- Export the full log to a file, or clear it
- Useful when reporting a bug: attach the export instead of describing what happened
Domains, Perks & URL Shortener
Upload Domain (Settings → Capture): pick which of your verified Emberly domains new uploads use. The dropdown is populated from your account's domains — if you have none set up or verified, uploads fall back to the default embrly.ca.
Perks (Settings → Account): if your plan or an active perk grants bonus storage or extra domain slots, a summary card shows the active bonuses. The card is hidden entirely if you have no active perks.
URL Shortener (Shorten tab): paste a long URL, click Shorten, and copy the resulting short link — no need to open the website.
System Tray Integration
Tray Icon:
- Flicker appears in your system taskbar/menu bar
- Single icon click restores/minimizes window
- Right-click for menu options
Tray Menu:
Always Running:
- When you click the X button, app minimizes to tray
- It continues running in background
- System hotkeys still work
- Click tray icon to restore
Notifications
Toasts — ephemeral, auto-dismissing banners for immediate feedback:
Notification Center — a persistent bell icon in the header that keeps a running list of notifications, separate from toasts. Each notification has:
- A category: Admin, Security, Account, Update, Upload, Error, Info, or Success
- A priority: System and Important notifications persist until dismissed; toast-only notifications don't appear here
From the Notification Center you can mark individual items (or all) as read, dismiss individual items, or clear everything. Security warnings, account issues, and update notices land here even after their toast has disappeared, so you don't miss them.
Desktop Notifications (optional):
- System-level notifications (Windows/macOS/Linux)
- Shows upload status
- Can click to interact
- Toggle in Settings → Behavior
Splash Screen
When Flicker launches, a 2-second splash screen displays with:
- Animated logo with glowing rings
- Rotating loading bar with shimmer effect
- Fun facts, tips, and easter eggs
- 50+ messages including Stranger Things references
Pro tip: Check back daily for new messages!
Hotkey Reference
Complete Hotkey List
Screenshot & Upload Actions:
Backend ready, no UI trigger yet:
Customizing Hotkeys
- Open Settings from the sidebar
- Go to Hotkeys tab
- Click on any hotkey field
- Press your desired key combination (e.g.,
Alt+S) - Real-time validation shows if hotkey is valid
- Click elsewhere or press Enter to save
- Hotkey active immediately
Hotkey Requirements:
- Must have a modifier:
Ctrl,Shift,Alt, orCmd(macOS) - One additional non-modifier key
- Examples:
Ctrl+1,Shift+F12,Alt+E - Cannot be single key like
SorF1 - Cannot conflict with system hotkeys
- Cannot use reserved Windows/macOS hotkeys
If You Get "Conflict" Error:
- That hotkey is used by your OS or another app
- Try a different combination
- Examples of conflicts:
Ctrl+Alt+Delete(Windows system hotkey)Cmd+Tab(macOS app switcher)Ctrl+C(terminal commands)
Troubleshooting
Screenshots Aren't Capturing
Windows:
- Ensure Flicker is running in admin mode
- Right-click Flicker in Start Menu
- Select "Run as administrator"
- Re-test hotkey
- Check that hotkeys aren't conflicting with other apps
- Restart Flicker and try again
- Check Settings → Behavior → "Hotkeys enabled" is ON
macOS:
- Grant screen recording permissions:
- System Preferences → Security & Privacy → Screen Recording
- Check "Flicker" is allowed
- Restart Flicker after granting permissions
- Try screenshot hotkey again
Linux:
- Ensure GTK 3.0+ is installed:
sudo apt install libgtk-3-0 - May require GStreamer plugins for screenshots
- Try running from terminal:
flicker- Check for error messages
Upload Failing with Network Error
-
Check internet connection:
Should show responses, not "unreachable"
-
Check if Emberly is down:
- Visit https://embrly.ca in browser
- If site is down, wait for it to come back online
-
Verify authentication:
- Go to Settings → Account
- Check "Logged in as: [your email]"
- If not logged in, click "Login"
-
Check upload token:
- Go to Settings → Account → Show Token
- Verify it's a long random string (not blank)
- If empty, re-login
-
Firewall/VPN Issue:
- If behind corporate firewall, may need VPN
- Try temporarily disabling VPN and retrying
- Check network settings allow HTTPS (port 443)
-
Invalid token:
- Log out completely: Settings → Account → Logout
- Log back in: Settings → Account → Login
- Try upload again
"Permission Denied" on Startup (Windows)
Solution:
- Right-click Flicker in Start Menu
- Select "Run as Administrator"
- Answer "Yes" to UAC prompt
- Check "Always run as administrator"
- Restart Flicker
This is required for system-wide hotkey capture.
Can't Find Flicker in Applications (macOS)
Try:
- Press
Cmd+Spaceto open Spotlight - Type "Flicker"
- Press Enter to launch
- Optionally drag to Dock for quick access
Or:
- Open Finder
- Go to Applications folder
- Look for "Flicker" application
- Double-click to launch
Hotkey Not Working
-
Check if hotkey conflicts with system hotkey
- Settings → Hotkeys → check for yellow warning indicator
- Try a different hotkey
-
Confirm Flicker is running
- Look for Flicker icon in system tray (Windows) or menu bar (macOS)
- If not running, restart the app
-
Re-register hotkeys:
- Settings → Hotkeys → disable all → enable all
- Wait 2 seconds for registration
- Try hotkey again
-
Check if hotkey is globally enabled:
- Windows: Settings → Behavior → "Global hotkeys" toggle ON
- If disabled, enable and restart app
App Crashes or Won't Start
First, try:
If still crashing:
- Clean your build directory and rebuild from source
- Contact support@embrly.ca with the error message
Check crash logs:
Copy the latest log file and include in support request.
Screenshots Look Blurry
Windows:
- Settings → Capture → Format: PNG (for quality)
- If using JPG, increase Quality slider to 90+
- For high-DPI monitors:
- Settings → Display Settings → check DPI scaling
- Flicker should auto-detect, but restart to be sure
macOS:
- Retina displays use 2x resolution automatically
- Screenshots should be sharp by default
- If not, try updating to latest Flicker version
Linux:
- Settings → Capture → Format: PNG
- High-res monitors: GTK DPI settings may affect
- Try:
GDK_SCALE=1 flickerfrom terminal
Advanced Usage
Command Line Usage
Launch from terminal after building from source:
Planned CLI features:
Upload via Clipboard
Press Ctrl+Alt+U (customizable in Settings → Hotkeys) to upload whatever image is currently on your system clipboard. The resulting URL is copied back to your clipboard automatically, same as a screenshot capture.
Database Cleanup
If upload history gets too large:
Warning: This deletes all upload history (URLs will still work on server, just lost locally)
Development
Building from Source
Prerequisites:
- Node.js 18+
- Rust 1.70+
- Tauri CLI
Setup:
Development Server:
Note: bun run dev alone only starts the Vite frontend dev server — it won't open the desktop app.
Building Release:
Platform-Specific Builds:
Cross-compiling for macOS or Linux from Windows (or vice versa) isn't supported — each platform's installer must be built natively, which is why the project's release workflow runs on a matrix of Windows, macOS (Apple Silicon + Intel), and Ubuntu runners:
See the Contributing Guide in the Flicker repository for full development setup.
Architecture
Frontend:
- React 19 + TypeScript
- Tailwind CSS for styling
- Context API for state management
- Tauri JS API for communication with backend
Backend:
- Rust with Tauri 2.0
- Tokio async runtime
- Reqwest HTTP client
- Native screenshot library
Communication:
- Tauri IPC (serialized JSON over bridge)
- Frontend calls
invoke()for Rust functions - Async/await patterns throughout
Contributing
We welcome contributions! See the Contributing Guide in the Flicker repository for code standards, the PR process, and development setup — it's a separate guide from the main Emberly website's contributing docs.
Quick Start:
FAQ
Q: Is Flicker free? A: Yes! Flicker is completely free and open source (AGPL-3.0 license). You only pay for Emberly cloud storage if you exceed the free tier.
Q: Can I use Flicker without Emberly? A: Not currently—Flicker is specifically designed for Emberly uploads. In the future we may add local storage support.
Q: Does Flicker send my data to anyone? A: No. Flicker only communicates with Emberly (to upload files) and GitHub (to check for updates). All upload history is stored locally on your computer.
Q: Can I customize what happens after upload? A: Yes! Settings → Behavior → "Post-upload action" lets you choose:
- Copy URL (default)
- Open in browser
- Do nothing
Q: How do I switch accounts? A: Settings → Account → Logout → Login with different email
Q: Will there be a mobile version? A: Mobile support is planned for v1.0.0+. Follow releases for announcements.
Q: Can I use Flicker on multiple computers? A: Yes! Flicker works independently on each computer. Your upload history is per-computer though.
Q: What image formats are supported? A: PNG (recommended) and JPG. PNG by default for maximum quality.
Q: Is there a team/organization version? A: Not yet — Flicker currently uploads to your personal Emberly account only. Squad/team-scoped uploading isn't implemented.
Getting Help
License
Flicker is open source software licensed under the GNU Affero General Public License v3.0.
Changelog
v0.3.0
Flicker moves out of beta into early access.
Added:
- Stats page with real usage data (files, storage, short URLs, views/downloads, domains, uploads chart)
- URL Shortener
- Custom upload domain picker in Settings, respected by every upload path
- Visibility/password management and server-side delete from Upload History
- Perks display in Settings for active bonuses
See the project changelog for the full list.
v0.2.0-beta
Added:
- Real drag-and-drop uploads (previously accepted the drop visually but never uploaded the file)
- Multi-file uploads with a per-file progress queue and a retry action on failure
- Live upload progress, streamed from the backend instead of a plain spinner
- Upload from Clipboard, fully working end-to-end (hotkey + Settings field)
- Upload History bulk actions: select multiple items to copy or delete at once
- Post-Upload Action and Clipboard Format settings now actually take effect
- Refreshed visual design to match the current embrly.ca styling
v0.1.0-alpha (January 2, 2026)
Initial Release:
- Screenshot capture (fullscreen, all monitors)
- Automatic upload to Emberly
- Global hotkey support
- System tray integration
- Upload history with management
- Customizable settings (hotkeys, appearance, capture)
- 15 built-in themes
- Cross-platform (Windows, macOS, Linux)
- 2FA authentication support
- Auto-update mechanism
Planned next:
- CLI interface
- Screen recording features
- Region screenshot selection UI (backend already exists — see Hotkey Reference)
- Screenshot preview before upload
- Local encryption of stored tokens
Planned v1.0.0:
- Mobile apps (iOS/Android)
- Team collaboration features
- Local backup support
- Additional cloud storage providers (AWS S3, Google Drive, etc.)
- Plugin system for extensibility
Screenshots
[Coming soon: UI screenshots of main interface, settings, upload flow]
For more information, visit the Flicker GitHub repository.