A modern, beautiful clipboard manager built with Rust (Tauri) and React. Features a stunning frosted glass UI and seamless clipboard monitoring across all platforms.
- π¨ **Stunning Froste## π Naming Convention
This project uses a specific naming convention:
- Repository Name:
cliped-crossplatform
- App Display Name: "Cliped" (clean UI name)
- Binary Name:
cliped
(for user convenience)
This allows clear identification while providing a simple user experience.- Modern, translucent interface that adapts to your system
- π Real-time Clipboard Monitoring - Automatically captures clipboard changes in LIFO order
- π Smart Search - Instantly find clipboard items with fuzzy search
- β‘ Lightning Fast - Built with Rust for maximum performance
- π±οΈ Drag & Drop - Draggable window with intuitive controls
- β Confirmation Prompts - Safe deletion with confirmation dialogs
- βΊ Undo Support - Restore deleted items with one click
- π Smart Notifications - Visual feedback for all actions
- π― LIFO Order - Most recent items appear first
- π Cross-Platform - Works on macOS, Windows, and Linux
- π± Minimizable - Standard window controls for seamless workflow
- Node.js (v18 or later)
- Rust (latest stable)
- Platform-specific requirements:
- macOS: Xcode Command Line Tools
- Windows: Microsoft C++ Build Tools
- Linux: Development packages (see below)
Visit the Releases page and download the appropriate installer for your operating system:
- π macOS: Download the
.dmg
file - πͺ Windows: Download the
.msi
installer - π§ Linux: Download the
.deb
package or.AppImage
- Download the
.dmg
file from releases - Open the DMG and drag Cliped to Applications
- Right-click on Cliped and select "Open" (first time only)
- Download the
.msi
installer from releases - Run the installer and follow the setup wizard
- Launch Cliped from the Start menu
# Download the .deb file from releases, then:
sudo dpkg -i cliped_*.deb
# Or for AppImage:
chmod +x cliped_*.AppImage
./cliped_*.AppImage
If you prefer to build from source:
# Clone the cliped-crossplatform repository
git clone https://github.com/shepherrrd/cliped-crossplatform.git
cd cliped-crossplatform
# Install dependencies
npm install
# Build and run in development mode
npm run tauri dev
# Build for production (binary will be named 'cliped')
npm run tauri build
# Install Xcode Command Line Tools
xcode-select --install
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Node.js
# Download from https://nodejs.org/ or use your preferred package manager
# Install Rust
# Visit https://rustup.rs/ and follow the instructions
# Install Node.js
# Download from https://nodejs.org/
# Install Microsoft C++ Build Tools
# Download from https://visualstudio.microsoft.com/visual-cpp-build-tools/
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Node.js
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Install development dependencies
sudo apt update
sudo apt install -y \
libwebkit2gtk-4.0-dev \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
javascriptcoregtk-4.1 \
libsoup-3.0 \
webkit2gtk-4.1
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Node.js
sudo dnf install nodejs npm
# Install development dependencies
sudo dnf install -y \
webkit2gtk4.0-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-devel
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Node.js and dependencies
sudo pacman -Syu
sudo pacman -S nodejs npm webkit2gtk base-devel curl wget file openssl appmenu-gtk-module gtk3 libappindicator-gtk3 librsvg libvips
# Clone and setup
git clone https://github.com/shepherrrd/cliped-crossplatform.git
cd cliped-crossplatform
npm install
# Development server (hot reload)
npm run tauri dev
# Build for production
npm run tauri build
# Run tests
npm test
cargo test
# Format code
npm run format
cargo fmt
# Lint code
npm run lint
cargo clippy
- Launch Cliped - The app starts monitoring your clipboard automatically
- Copy anything - Text, images, code - it's all captured in real-time
- Search items - Use the search bar to quickly find what you need
- Click to restore - Click any item to copy it back to your clipboard
- Delete safely - Confirmation prompts protect against accidental deletions
- Undo mistakes - Restore deleted items with the undo button
- Drag to move - Click and drag the header to reposition the window
- Minimize when needed - Use standard window controls to minimize
- Search: Focus on the search bar and start typing
- Escape: Clear search or close confirmations
- Enter: Select the first search result
cliped-crossplatform/
βββ src/ # React frontend
β βββ Components/
β β βββ ClipboardItem.tsx # Individual clipboard item
β β βββ ClipboardList.tsx # Main list component
β β βββ Notification.tsx # Notification system
β βββ Hooks/
β β βββ useClipboard.ts # Main clipboard logic
β βββ Styles/
β β βββ styles.css # Frosted glass styling
β βββ App.tsx # Main app component
β βββ main.tsx # React entry point
β βββ types.ts # TypeScript definitions
βββ src-tauri/ # Rust backend
β βββ src/
β β βββ main.rs # Tauri app & clipboard monitoring
β β βββ lib.rs # Library exports
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # Tauri configuration
β βββ build.rs # Build script
βββ public/ # Static assets
βββ package.json # Node.js dependencies
βββ README.md # This file
Edit src-tauri/tauri.conf.json
to customize window behavior:
{
"app": {
"windows": [{
"width": 500,
"height": 650,
"transparent": true,
"decorations": true,
"alwaysOnTop": true,
"resizable": false
}]
}
}
Modify clipboard behavior in src-tauri/src/main.rs
:
// Maximum items to store (default: 100)
if history.len() > 100 {
history.truncate(100);
}
// Polling interval (default: 500ms)
tokio::time::sleep(Duration::from_millis(500)).await;
To prevent "This file is damaged" errors on user machines, macOS apps must be code signed and notarized.
-
Configure signing credentials:
./setup-signing.sh
-
Build signed and notarized DMG:
# Universal binary (Intel + ARM64) - recommended ./build-mac-universal.sh # Or build for specific architecture: ./build-mac-intel.sh # Intel Macs only ./build-mac-arm64.sh # Apple Silicon only
If you prefer to configure manually, edit the build scripts with your:
- Developer ID Application certificate
- Apple ID and app-specific password
- Team ID
See MACOS_DISTRIBUTION_FIX.md
for detailed instructions.
# Build MSI installer
npm run tauri build
# Output: src-tauri/target/release/bundle/msi/Cliped_x64_en-US.msi
# Build all Linux formats
npm run tauri build
# Output files:
# - src-tauri/target/release/bundle/deb/cliped_1.0.0_amd64.deb
# - src-tauri/target/release/bundle/appimage/cliped_1.0.0_amd64.AppImage
All releases are available on the GitHub Releases page.
Each release includes:
- π macOS:
.dmg
installer (Intel and Apple Silicon) - πͺ Windows:
.msi
installer (x64) - π§ Linux:
.deb
package and.AppImage
(x64)
To create a new release:
# Build for your current platform
npm run tauri build
# The built files will be in:
# - macOS: src-tauri/target/release/bundle/macos/ and src-tauri/target/release/bundle/dmg/
# - Windows: src-tauri/target/release/bundle/msi/
# - Linux: src-tauri/target/release/bundle/deb/ and src-tauri/target/release/bundle/appimage/
- Local Storage: All clipboard data is stored locally on your device
- No Network Access: The app doesn't send data over the internet
- Permissions: Only requires clipboard access permissions
- Open Source: Full source code available for audit
# Linux: Install required packages
sudo apt install xclip xsel # Debian/Ubuntu
sudo dnf install xclip xsel # Fedora
sudo pacman -S xclip xsel # Arch
# Check if port 1420 is available
lsof -i :1420
# Kill any conflicting processes
pkill -f "cliped"
# Install missing webkit dependencies
sudo apt install libwebkit2gtk-4.0-dev libgtk-3-dev
# Reduce memory usage by limiting history
# Edit src-tauri/src/main.rs and change:
if history.len() > 50 { // Reduced from 100
history.truncate(50);
}
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Rust Code: Follow
cargo fmt
andcargo clippy
standards - TypeScript: Use strict typing and follow ESLint rules
- UI: Maintain the frosted glass aesthetic
- Performance: Keep the app lightweight and responsive
This project uses a specific naming convention to distinguish it from other versions:
- Repository/Website Name:
cliped-crossplatform
- Package Names:
- Homebrew:
cliped-crossplatform
- AUR:
cliped-crossplatform
- Debian/Ubuntu: Package built from
cliped-crossplatform
repo
- Homebrew:
- Installed Binary:
cliped
(for user convenience) - App Display Name: "Cliped" (clean UI name)
This allows multiple versions to coexist in package managers while providing a simple cliped
command to users.
This project is licensed under the MIT License - see the LICENSE file for details.
- Tauri - For the amazing Rust-based app framework
- React - For the frontend framework
- Arboard - For cross-platform clipboard access
- Tokio - For async runtime
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- π Documentation: Wiki
Made with β€οΈ by shepherrrd