A lightning-fast, pixel-perfect color picker for Linux
Press a hotkey anywhere, click a color, done. No windows, no hassle.
Features • Installation • Quick Start • Configuration • Contributing
yoinkctl is a modern color picker built for speed and precision. It runs silently in the background, ready to capture any color on your screen with a single hotkey press. Whether you're a designer matching brand colors, a developer debugging CSS, or just someone who loves pixel-perfect accuracy, yoinkctl gets out of your way and lets you work.
No windows to manage. No apps to open. Just colors.
- ⚡ Instant access — Global hotkey from anywhere
- 🎯 Pixel-perfect — Magnified preview with crosshair targeting
- 🪶 Lightweight — Minimal resource usage, native performance
- 📊 Multiple formats — HEX, RGB, and HSL at a glance
- 📜 Smart history — Recent colors saved and searchable
- 🎨 Beautiful UI — Clean, modern interface with dark theme
- 🚀 Zero latency — Rust-powered performance
- 🔥 Global Hotkey Activation — Press your custom hotkey combo from any app
- 📸 Fullscreen Picker — Transparent overlay captures your entire workspace
- 🔍 5x Magnifier — Smooth, anti-aliased zoom for precise color selection
- 📋 Instant Clipboard Copy — Colors automatically copied on click
- 🎨 Color History — Last 50 colors saved with click-to-copy
- 🖥️ Multi-Monitor Support — Works seamlessly across all displays
Choose which color formats to show:
- HEX —
#FF5733(web standard) - RGB —
RGB(255, 87, 51)(design apps) - HSL —
HSL(9, 100%, 60%)(color theory)
- ⌨️ Customizable Hotkeys — Set any modifier+key combination
- 🔧 Adjustable Magnifier — Preview size from 50px to 200px
- 🚀 Autostart Daemon — Launch at system boot
- 💾 Persistent Settings — Config saved in
~/.config/yoinkctl
Download and install in one command:
curl -fsSL https://raw.githubusercontent.com/gimigkk/yoinkctl/main/install.sh | bashThis will:
- ✅ Download the latest release for your architecture
- ✅ Install to
~/.local/bin/yoinkctl - ✅ Set up desktop entry for application menu
- ✅ Optionally enable autostart
Requirements:
- Rust 1.70+ (rustup.rs)
- X11 development libraries
Ubuntu/Debian:
sudo apt install libx11-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-devFedora:
sudo dnf install libX11-devel libxcb-develBuild & Install:
git clone https://github.com/gimigkk/yoinkctl.git
cd yoinkctl
./install.sh# Build
cargo build --release
# Copy binary
cp target/release/yoinkctl ~/.local/bin/
# Make sure ~/.local/bin is in your PATH
export PATH="$HOME/.local/bin:$PATH"Search for "yoinkctl" in your application menu, or run:
yoinkctlYou'll see the main control panel with:
- Daemon status — Start/stop the background service
- Quick launch — Test the picker without hotkey
- Color history — View and copy recent colors
Click the Start button in the Daemon card, or run:
yoinkctl daemonThe daemon registers your hotkey and runs silently in the background.
Press the default hotkey:
Super + Shift + A
- Screen freezes with magnifier overlay
- Move cursor to desired pixel
- Click to copy color
- Press
Escto cancel
The color is now in your clipboard! 📋
- Open yoinkctl settings (⚙️ icon)
- Select modifiers: Super, Shift, Ctrl, Alt
- Choose a letter key (A-Z)
- Click Save Settings
- Restart the daemon for changes to take effect
Example combinations:
Super+Shift+C— Quick and easyCtrl+Alt+P— For non-tiling WM usersSuper+Shift+X— One-handed convenience
⚠️ At least one modifier is required to prevent conflicts
Toggle which color formats appear in the picker:
- ✅ Show HEX — Standard web format
- ✅ Show RGB — Red, green, blue values
- ✅ Show HSL — Hue, saturation, lightness
Adjust the preview zoom window from 50px to 200px. Larger sizes are easier to target but take up more screen space.
Enable "Launch daemon at startup" to have yoinkctl ready when you log in. Works with systemd-based systems.
yoinkctl/
├── src/
│ ├── main.rs # Entry point & mode routing
│ ├── picker.rs # Color picker overlay UI
│ ├── gui.rs # Config app & main window
│ ├── config.rs # Settings management
│ ├── history.rs # Color history storage
│ └── autostart.rs # System integration
├── assets/ # Icons & desktop files
├── install.sh # Installation script
└── Cargo.toml
yoinkctl operates in three modes:
| Command | Purpose |
|---|---|
yoinkctl |
Launch settings GUI (default) |
yoinkctl daemon |
Run background hotkey service |
yoinkctl pick |
Show color picker overlay |
The daemon monitors for your hotkey and spawns picker instances on demand. Each picker uses a file lock to prevent double-spawning.
- Rust — Systems programming language
- egui/eframe — Immediate mode GUI
- xcap — Cross-platform screen capture
- global-hotkey — System-wide hotkey registration
- arboard — Clipboard management
| Platform | Status | Notes |
|---|---|---|
| Linux | ✅ Fully Supported | X11 and Wayland |
| macOS | Hotkey support may vary | |
| Windows | Daemon management differs |
Note: Daemon process management (
pgrep,pkill,nohup) is optimized for Linux. MacOS and Windows support is theoretical but untested.
Check if already running:
pgrep -f "yoinkctl daemon"View daemon logs:
journalctl --user -u yoinkctl -f- Verify daemon is running: look for "● Running" in the GUI
- Check for hotkey conflicts with your desktop environment
- Try a different key combination
- Restart the daemon after changing settings
Ensure arboard has clipboard access. On Wayland, you may need wl-clipboard:
sudo apt install wl-clipboard # Ubuntu/Debian
sudo dnf install wl-clipboard # FedoraThis is a known issue with multi-monitor setups using different scales. The picker captures the primary monitor. Future updates will add better multi-monitor targeting.
- Wayland native support — Better compositor integration
- Color palette management — Save and organize color schemes
- Export formats — CSS variables, SCSS, Tailwind configs
- System tray icon — Quick access without opening GUI
- Keyboard-only mode — Navigate picker with arrow keys
- Color gradients — Pick multiple colors for smooth transitions
- Contrast checker — WCAG compliance for accessibility
- macOS & Windows builds — Full cross-platform support
Contributions are welcome! Whether it's bug reports, feature requests, or code improvements, your input helps make yoinkctl better.
- Fork the repository
- Create a 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
git clone https://github.com/gimigkk/yoinkctl.git
cd yoinkctl
cargo build
cargo run # Launch config GUI- Follow Rust standard formatting (
cargo fmt) - Run clippy before submitting (
cargo clippy) - Add tests for new features when applicable
MIT License — Free to use, modify, and distribute.
See LICENSE file for details.
- egui community — For the excellent immediate mode GUI framework
- Rust ecosystem — For making systems programming accessible
- Linux community — For providing a platform where tools like this can thrive
- 🐛 Bug Reports: GitHub Issues
- 💡 Feature Requests: GitHub Discussions
- ⭐ Star the repo if you find it useful!