Skip to content

g1mliii/Ghostcopy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GhostCopy

Real-time cross-platform clipboard synchronization. Copy text on one device, instantly paste on another.

Features

  • 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

Quick Start

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/ghostcopy.git
    cd ghostcopy
  2. Install dependencies

    flutter pub get
  3. Set up Supabase

  4. Configure environment

    # Create .env file (don't commit this!)
    echo "SUPABASE_URL=your-project-url" > .env
    echo "SUPABASE_ANON_KEY=your-anon-key" >> .env
  5. Run the app

    # Windows
    flutter run -d windows
    
    # macOS
    flutter run -d macos
    
    # Mobile
    flutter run -d android
    flutter run -d ios

Usage

Desktop (Windows/macOS)

  1. Launch GhostCopy - it starts hidden in the system tray
  2. Copy any text normally
  3. Press Ctrl+Shift+S (configurable) to open the Spotlight window
  4. Press Enter to send, Escape to cancel
  5. Text is instantly available on all your devices!

Mobile (iOS/Android)

  1. Receive push notifications when new clips arrive
  2. Tap notification to auto-copy to clipboard
  3. To send from mobile: Open app → Paste → Tap Send

Database Setup

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);

Smart Transformers

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

Tech Stack

  • Frontend: Flutter (Dart 3.x)
  • Backend: Supabase (PostgreSQL + Realtime + Auth)
  • Desktop: window_manager, hotkey_manager, tray_manager
  • Mobile: flutter_local_notifications, home_widget

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors