Real-time cross-platform clipboard synchronization. Copy text on one device, instantly paste on another.
- Invisible Desktop Utility - Runs silently in the background, activated with a global hotkey
- Cross-Platform Sync - Windows, macOS, iOS, and Android support
- Real-time synchronization via Supabase
- Game Mode - Suppresses notifications during full-screen apps
- Smart Transformers - Auto-detect and enhance JSON, JWT tokens, and hex colors
- Private & Secure - Row-level security ensures only you see your data
- Zero-CPU Sleep Mode - No performance impact when idle
- Flutter SDK (Stable channel)
- Supabase Account (Free tier works)
-
Clone the repository
git clone https://github.com/yourusername/ghostcopy.git cd ghostcopy -
Install dependencies
flutter pub get
-
Set up Supabase
- Create a new project at supabase.com
- Run the SQL schema (see Database Setup)
- Enable Realtime on the
clipboardtable
-
Configure environment
# Create .env file (don't commit this!) echo "SUPABASE_URL=your-project-url" > .env echo "SUPABASE_ANON_KEY=your-anon-key" >> .env
-
Run the app
# Windows flutter run -d windows # macOS flutter run -d macos # Mobile flutter run -d android flutter run -d ios
- Launch GhostCopy - it starts hidden in the system tray
- Copy any text normally
- Press
Ctrl+Shift+S(configurable) to open the Spotlight window - Press
Enterto send,Escapeto cancel - Text is instantly available on all your devices!
- Receive push notifications when new clips arrive
- Tap notification to auto-copy to clipboard
- To send from mobile: Open app → Paste → Tap Send
Run this SQL in your Supabase SQL Editor:
CREATE TABLE clipboard (
id bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
user_id uuid REFERENCES auth.users NOT NULL,
content text NOT NULL,
device_name text,
device_type text NOT NULL,
is_public boolean DEFAULT false,
created_at timestamptz DEFAULT timezone('utc'::text, now())
);
ALTER TABLE clipboard ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users can view own items" ON clipboard
FOR SELECT USING (auth.uid() = user_id);
CREATE POLICY "Users can insert own items" ON clipboard
FOR INSERT WITH CHECK (auth.uid() = user_id);
CREATE POLICY "Users can delete own items" ON clipboard
FOR DELETE USING (auth.uid() = user_id);
CREATE INDEX idx_clipboard_user_created ON clipboard(user_id, created_at DESC);GhostCopy automatically detects and enhances certain content types:
| Type | Detection | Enhancement |
|---|---|---|
| JSON | Valid JSON string | Prettify button with proper indentation |
| JWT | Three base64 segments | Decode and show payload (exp, user_id) |
| Hex Color | #RGB, #RRGGBB | Color preview square |
- Frontend: Flutter (Dart 3.x)
- Backend: Supabase (PostgreSQL + Realtime + Auth)
- Desktop: window_manager, hotkey_manager, tray_manager
- Mobile: flutter_local_notifications, home_widget
This project is licensed under the MIT License.