Skip to content

Professional color picker, gradient maker, and palette manager 🎨

License

Notifications You must be signed in to change notification settings

keshavbhatt/ColorSmith

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

45 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ColorSmith

A modern, elegant color picker application built with Qt for Linux.

Features

Color Picking & Selection

  • 🎨 Screen Color Picker: Pick colors from anywhere on your screen using native portal integration
  • 🎨 HSV Color Plane: Interactive 2D color plane for precise color selection
  • πŸ”† Brightness Slider: Adjust color brightness with dedicated slider control
  • 🎲 Random Color Generator: Generate random colors for inspiration
  • πŸ“ RGBA Support: Full support for alpha channel transparency

Color Formats & Conversion

  • πŸ”„ Format Conversion: Convert between HEX, RGB, and RGBA color formats
  • πŸ“‹ Clipboard Support: Copy color values with one click

Gradient Maker

  • 🌈 Linear & Radial Gradients: Create beautiful linear and radial gradients
  • 🎨 Multi-Stop Gradients: Add, remove, and adjust unlimited gradient stops
  • πŸ”„ Gradient Rotation: Control gradient angle (0-360Β°)
  • 🎲 Random Gradients: Generate random gradient combinations
  • πŸ“€ CSS Export: Copy gradient as CSS code for web development
  • πŸ“„ SVG Export: Copy or export gradients as SVG files
  • πŸ–ΌοΈ Image Export: Export gradients as PNG images with custom dimensions
  • πŸ‘οΈ Fullscreen Preview: View gradients in fullscreen mode

Palette Management

  • 🎨 Color Palettes: Create and manage multiple color palettes
  • βž• Quick Add: Add current color to palette with one click
  • πŸ–ΌοΈ Image Color Extraction: Generate palettes from images using K-means clustering
  • πŸ’Ύ Import/Export: Import and export palettes in JSON format
  • ✏️ Palette Operations: Create, rename, delete, and clear palettes
  • πŸ”– Named Colors: Add optional names to palette colors
  • πŸ“š Multiple Palettes: Switch between different palettes easily

User Interface

  • 🎚️ Precision Controls: Adjust RGB values using sliders and spin boxes
  • ⌨️ Keyboard Shortcuts: Comprehensive keyboard navigation and shortcuts
  • πŸ’Ύ Settings Persistence: Remembers your last used color and window geometry
  • 🎨 Intuitive Design: Clean, modern Qt-based interface

Screenshots

Main Window Gradient Generator
ColorSmith Main Window Gradient generator
Radial Gradient About Dialog
Gradient generator radial About Dialog

Building from Source

Prerequisites

  • CMake 3.16 or later
  • Qt 6.x (Core, Gui, Widgets, DBus)
  • C++17 compatible compiler (GCC, Clang)

Build Instructions

# Clone the repository
git clone https://github.com/keshavbhatt/colorsmith.git
cd colorsmith

# Create build directory
mkdir build && cd build

# Configure with CMake
cmake ..

# Build
make

# Install (optional)
sudo make install

Build Options

# Build with custom install prefix
cmake -DCMAKE_INSTALL_PREFIX=/usr ..

# Build in Debug mode
cmake -DCMAKE_BUILD_TYPE=Debug ..

# Build with tests
cmake -DBUILD_TESTING=ON ..

Installation

Package Managers

Platform Installation
Snap Store Get it from the Snap Store
sudo snap install colorsmith
Flathub Download on Flathub
flatpak install flathub com.ktechpit.colorsmith

From Source

After building, install with:

cd build
sudo make install

Usage

Launch the application from your application menu or run:

colorsmith

Keyboard Shortcuts

General Actions

  • Ctrl+C: Copy current color to clipboard
  • Ctrl+P: Pick color from screen

RGB(A) Spinbox Inputs

When the cursor is inside any R / G / B / A field:

Shortcut Behavior
↑ / ↓ Β±1
Shift + ↑ / ↓ Β±10
Alt + ↑ / ↓ Β±5
PageUp / PageDown Β±25
Home / End Min (0) / Max (255)

Development

Code Style

This project follows standard Qt/C++ coding conventions:

  • Use camelCase for methods and variables
  • Use PascalCase for class names
  • Use m_ prefix for member variables
  • Keep headers in include/ directory
  • Keep implementations in src/ directory

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the GNU General Public License v3.0 or later. See the LICENSE file for details.

Support

Donation

If you find ColorSmith useful, consider supporting its development!

Donate via PayPal Or scan the QR code
Donate with PayPal Donation QR Code

Your support helps maintain and improve ColorSmith. Thank you! πŸ’™