Beta

garclip

Clipboard Manager

An X11 clipboard manager with persistent history and fuzzy search. garclip monitors both CLIPBOARD (Ctrl+C) and PRIMARY (selection) using the XFixes extension for event-driven detection. Supports text and images with configurable filtering, deduplication, and a gartk-powered picker UI.

Features

  • X11 clipboard monitoring (CLIPBOARD and PRIMARY)
  • XFixes event-driven detection with polling fallback
  • Persistent history with JSON storage
  • Text and image content support
  • Configurable max entries (default 1000)
  • blake3 hash-based deduplication
  • Pin entries to prevent removal
  • Regex and window class filtering
  • garclip-picker fuzzy search UI
  • Unix socket IPC with garclipctl
  • SIGHUP config reload
  • Systemd user service support
  • Auto-save every 5 minutes
  • gartk-based picker rendering

Quick Start

What is garclip?

garclip is an X11 clipboard manager that maintains a persistent history of everything you copy. It runs as a daemon, monitoring clipboard changes and storing entries (text and images) to disk. Use garclip-picker or garclipctl to browse and restore previous clipboard contents.

garclip
Daemon process that monitors clipboard
garclipctl
CLI tool for clipboard operations
garclip-picker
GUI picker with fuzzy search

Installation

terminal
$ cd garclip && cargo build --release # Build all binaries
$ sudo install -Dm755 target/release/garclip /usr/local/bin/ # Install daemon
$ sudo install -Dm755 target/release/garclipctl /usr/local/bin/ # Install CLI
$ sudo install -Dm755 target/release/garclip-picker /usr/local/bin/ # Install picker

Starting the Daemon

terminal
$ garclip daemon # Run in foreground
$ garclip daemon & # Run in background
$ systemctl --user enable --now garclip # Enable as systemd service

Basic Usage

terminal
$ garclipctl history # Show recent clipboard entries
$ garclipctl paste # Get current clipboard content
$ garclipctl select 5 # Restore entry #5 to clipboard
$ garclip-picker # Open interactive picker UI

gar Keybinding

Add to your ~/.config/gar/init.lua:

~/.config/gar/init.lua
-- Mod+v to open clipboard picker
gar.bind("mod+v", function()
    gar.exec("garclip-picker")
end)
Releases