The --swatch flag now controls both the inline terminal color block and the desktop notification icon (via ImageMagick). Update the help text to reflect this so users know the flag affects both output contexts.
color-tool
A feature-rich, portable CLI color utility for Linux, specializing in color picking, conversion, and formatting. Designed primarily for KDE Plasma on Wayland, color-tool provides a seamless bridge between your screen and your development environment.
🌈 Key Features
- Advanced Color Picking: Integration with KWin's DBus ColorPicker for pixel-perfect selection on Wayland.
- Robust Conversions: Support for HEX, RGB, HSL, and their Alpha-enabled counterparts (HEXA, RGBA, HSLA).
- Format Flexibility: Request multiple formats at once, or use
allfor a complete breakdown. - Smart JSON Output: Generate machine-readable JSON tables for easy integration with other tools.
- Color Naming: Resolve hex values to human-readable names via thecolorapi.com.
- Visual Previews: Render color swatches directly in your terminal using truecolor ANSI escapes.
- Desktop Integration: Built-in support for clipboard copying (
wl-copy/xclip) and rich desktop notifications with visual color swatches. - Highly Configurable: Separate configuration profiles for standard terminal usage and desktop/launcher mode.
- Portable Design: The entire tool is contained within a single Bash script, with embedded Python helpers.
📋 Prerequisites
To utilize all features, ensure the following are installed:
- KDE Plasma + Wayland: Required for the
--pickfunctionality. - Python 3 + PyQt6: Required for the picker helper.
- curl + jq: Required for color naming support.
- wl-clipboard (Wayland) or xclip (X11): Required for clipboard support.
- libnotify: Required for desktop notifications (
notify-send). - ImageMagick (
magickorconvert): Required for generating visual color swatches in desktop notifications.
🚀 Installation
You can download the script directly from the latest release and install it:
curl -sSLO https://git.rootiest.dev/rootiest/color-tool/releases/download/latest/color-tool
chmod +x color-tool
./color-tool --install
This will:
- Move the script to
~/.local/share/color-tool/. - Symlink the binary to
~/.local/bin/color-tool. - Generate a sample configuration at
~/.config/color-tool/config.toml. - Create a
.desktopentry so you can launch the picker from your application menu. - Verify and warn about any missing optional or required system dependencies.
🛠 Usage
Usage: color-tool [OPTIONS] [COLOR ...]
Options:
--[no-]pick Open the KDE Plasma color picker
--output FMT Format(s): hex, rgb, hsl, rgba, hsla, hexa, all (comma-separated)
--[no-]json Output as a JSON table of selected formats
--[no-]name Fetch nearest color name from thecolorapi.com
--[no-]swatch Include a color swatch in the terminal output
--[no-]copy Copy result to clipboard
--[no-]notify Show desktop notification
--desktop GUI mode: pick → copy → notify
--get-config Print the current configuration
--set-config Update the configuration (e.g. --set-config desktop --copy)
--reset-config Restore the configuration file to its default values
--install Install to ~/.local/share/ and symlink to ~/.local/bin/
--help, -h Show this help message
Examples
Pick a color and get HSL + RGB:
color-tool --pick --output hsl,rgb
Convert a hex value with a visual swatch and color name:
color-tool "#ff5500" --swatch --name
Output all formats as JSON for a piped input:
echo "rgba(255, 85, 0, 0.5)" | color-tool --output all --json
Launch in "Silent" Desktop Mode (via terminal or launcher):
color-tool --desktop --no-name
⚙️ Configuration
You can define your preferred defaults in ~/.config/color-tool/config.toml. The tool uses a priority hierarchy: CLI Flags > Desktop Config > Default Config.
[defaults]
# Set any option to true to enable it by default when using the terminal
output = "hex" # default output format(s): hex, rgb, hsl, rgba, hsla, hexa, all
json = false # output in JSON format
swatch = false # show color swatch in terminal
name = false # fetch color name from thecolorapi.com
copy = false # copy result to clipboard
pick = false # auto-launch color picker when invoked with no arguments
notify = false # show desktop notification
[desktop]
# Defaults for --desktop mode (launched from the app menu; copy is always enabled by default)
output = "hex" # format to copy
json = false # copy JSON format instead of plain text
name = false # fetch color name (requires network)
copy = true # copy result to clipboard
notify = true # show desktop notification with the copied value
You can also use the CLI to manage your configuration:
# View current config
color-tool --get-config
# Update specific keys (e.g., enable swatch by default)
color-tool --set-config defaults --swatch
# Set output format for desktop mode
color-tool --set-config desktop output=rgba
# Reset to factory defaults
color-tool --reset-config
🧪 Testing
The project includes a comprehensive test suite that verifies color conversion, configuration loading, and system integrations (clipboard/notifications) using mocks.
To run the tests:
./tests/run_tests.sh
The test script creates a temporary isolated environment, so it won't affect your system configuration or active clipboard.
🤝 Credits
The wl-colorpicker-plasma integration is based on the original work by SASUPERNOVA.
⚖️ License
Copyright © 2026 Rootiest.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.