tinct

module
v0.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2026 License: MIT

README

Tinct

An extensible colour palette generator and theme manager for unified theming across your entire environment

Generate colour palettes from images, AI, remote themes, or manual specifications. Apply them consistently to terminals, desktop environments, window managers, and external devices.

Go Version License Documentation

Installation

Arch Linux (AUR):

yay -S tinct-bin

From Go:

go install github.com/jmylchreest/tinct/cmd/tinct@latest

From source:

git clone https://github.com/jmylchreest/tinct.git
cd tinct && go build -o tinct ./cmd/tinct

Quick start

From an image
# Apply theme to all configured applications
tinct generate -i image -p ~/Pictures/wallpaper.jpg -o all
From AI (Google Gemini)

Generate a unique wallpaper and theme from a text prompt:

# Set your API key (get one at https://aistudio.google.com/apikey)
export GOOGLE_API_KEY="your-api-key"

# Or retrieve it from a secret manager
export GOOGLE_API_KEY=$(secret-tool lookup service google-genai)  # GNOME Keyring
export GOOGLE_API_KEY=$(bw get password google-genai)             # Bitwarden CLI

# Generate a wallpaper and apply the extracted palette
tinct generate -i google-genai --ai.prompt "sunset over rolling hills of tuscany" -o all

OpenRouter is also supported as an alternative (-i openrouter), giving access to multiple AI models. See the AI generation docs for details.

# Catppuccin Mocha
tinct generate -i remote-json \
  --remote-json.url "https://raw.githubusercontent.com/catppuccin/palette/main/palette.json" \
  --remote-json.query "colors.mocha" \
  -o all

Features

  • Multiple input sources - Images, AI generation (Google Gemini, OpenRouter), remote themes (JSON/CSS), manual specification
  • 25+ applications - Terminals, desktops, window managers, bars, editors
  • Smart categorisation - Auto-assigns semantic colours with WCAG contrast checking
  • Plugin ecosystem - Extend with external plugins from repositories or build your own in any language
  • Theme portability - Save and share complete themes as markdown files

Supported applications

Category Applications
Terminals Alacritty, Ghostty, Kitty, Konsole, Ptyxis
Desktop GNOME Shell, KDE Plasma, GTK3/4, Libadwaita, Qt5/6
Hyprland Hyprland, Hyprpaper, Hyprlock
Bars & Launchers Waybar, Dunst, SwayOSD, Fuzzel, Walker, Wofi
Editors Neovim, Zellij

Need more? Install external plugins from the plugin repository:

tinct plugins repo add official https://raw.githubusercontent.com/jmylchreest/tinct-plugins/refs/heads/main/repository/repository.json
tinct plugins search
tinct plugins install <plugin-name>

Documentation

Full documentation is available at jmylchreest.github.io/tinct

Telemetry

Since v0.1.25, tinct collects anonymous usage telemetry to help prioritise plugin development and maintenance. Only basic event data is sent: OS name, app version, plugin names/versions used, and feature flags (theme type, seed mode, backend, dry-run, etc.). No personal information, file paths, prompts, API keys, or colour data is ever collected. Telemetry can be disabled by setting TINCT_TELEMETRY=off or {"enabled": false} in ~/.local/share/tinct/telemetry.json. See the telemetry docs for full details.

Contributing

Contributions welcome! See the documentation for development guides.

License

MIT License - see LICENSE

Directories

Path Synopsis
cmd
tinct command
Tinct - A modern colour palette generator
Tinct - A modern colour palette generator
tinct-repo-manager command
Package main provides the tinct-repo-manager CLI tool.
Package main provides the tinct-repo-manager CLI tool.
contrib
internal
cli
Package cli provides the command-line interface for Tinct.
Package cli provides the command-line interface for Tinct.
colour
Package colour provides accent color selection logic.
Package colour provides accent color selection logic.
compression
Package compression provides utilities for extracting and decompressing plugin archives.
Package compression provides utilities for extracting and decompressing plugin archives.
config
Package config provides centralised configuration for Tinct.
Package config provides centralised configuration for Tinct.
image
Package image provides utilities for loading and processing images.
Package image provides utilities for loading and processing images.
manifest
Package manifest provides file tracking for tinct-generated files.
Package manifest provides file tracking for tinct-generated files.
plugin/executor
Package executor provides a unified interface for executing plugins regardless of their underlying protocol (go-plugin RPC or JSON-stdio).
Package executor provides a unified interface for executing plugins regardless of their underlying protocol (go-plugin RPC or JSON-stdio).
plugin/input
Package input provides the interface and base types for input plugins.
Package input provides the interface and base types for input plugins.
plugin/input/file
Package file provides an input plugin for loading colour palettes from files or manual specifications.
Package file provides an input plugin for loading colour palettes from files or manual specifications.
plugin/input/googlegenai
Package googlegenai provides an input plugin for generating images using Google's Imagen models.
Package googlegenai provides an input plugin for generating images using Google's Imagen models.
plugin/input/image
Package image provides an input plugin for extracting colour palettes from images.
Package image provides an input plugin for extracting colour palettes from images.
plugin/input/markdown
Package markdown provides an input plugin for loading themes from markdown theme files.
Package markdown provides an input plugin for loading themes from markdown theme files.
plugin/input/openrouter
Package openrouter provides an input plugin for generating images using OpenRouter.ai models.
Package openrouter provides an input plugin for generating images using OpenRouter.ai models.
plugin/input/remotecss
Package remotecss provides an input plugin for fetching colour palettes from remote CSS sources.
Package remotecss provides an input plugin for fetching colour palettes from remote CSS sources.
plugin/input/remotejson
Package remotejson provides an input plugin for fetching colour palettes from remote JSON sources with JSONPath queries.
Package remotejson provides an input plugin for fetching colour palettes from remote JSON sources with JSONPath queries.
plugin/input/shared/aiflags
Package aiflags provides shared flags for AI image generation plugins.
Package aiflags provides shared flags for AI image generation plugins.
plugin/input/shared/commonflags
Package commonflags provides shared unprefixed flags for input plugins.
Package commonflags provides shared unprefixed flags for input plugins.
plugin/input/shared/imagecolours
Package imagecolours provides shared helpers for extracting colour palettes from images and saving generation metadata.
Package imagecolours provides shared helpers for extracting colour palettes from images and saving generation metadata.
plugin/input/shared/palettebuilder
Package palettebuilder provides shared helpers for building colour palettes from map[string]string colour sources with optional role-mapping support.
Package palettebuilder provides shared helpers for building colour palettes from map[string]string colour sources with optional role-mapping support.
plugin/input/shared/regions
Package regions provides utilities for extracting colors from specific.
Package regions provides utilities for extracting colors from specific.
plugin/input/shared/seed
Package seed provides utilities for deterministic seed generation for k-means clustering.
Package seed provides utilities for deterministic seed generation for k-means clustering.
plugin/manager
Package manager provides plugin management with configuration support.
Package manager provides plugin management with configuration support.
plugin/output
Package output provides the interface and base types for output plugins.
Package output provides the interface and base types for output plugins.
plugin/output/alacritty
Package alacritty provides an output plugin for Alacritty terminal colour themes.
Package alacritty provides an output plugin for Alacritty terminal colour themes.
plugin/output/awww
Package awww provides an output plugin for awww (An Answer to your Wayland Wallpaper Woes) wallpaper daemon.
Package awww provides an output plugin for awww (An Answer to your Wayland Wallpaper Woes) wallpaper daemon.
plugin/output/dunst
Package dunst provides an output plugin for Dunst notification daemon colour themes.
Package dunst provides an output plugin for Dunst notification daemon colour themes.
plugin/output/fuzzel
Package fuzzel provides an output plugin for Fuzzel application launcher colour themes.
Package fuzzel provides an output plugin for Fuzzel application launcher colour themes.
plugin/output/ghostty
Package ghostty provides an output plugin for Ghostty terminal emulator colour themes.
Package ghostty provides an output plugin for Ghostty terminal emulator colour themes.
plugin/output/gnome-shell
Package gnomeshell provides an output plugin for GNOME Shell theming.
Package gnomeshell provides an output plugin for GNOME Shell theming.
plugin/output/gtk3
Package gtk3 provides an output plugin for GTK3 application theming.
Package gtk3 provides an output plugin for GTK3 application theming.
plugin/output/gtk4
Package gtk4 provides an output plugin for GTK4 application theming.
Package gtk4 provides an output plugin for GTK4 application theming.
plugin/output/histui
Package histui provides an output plugin for histui notification daemon CSS themes.
Package histui provides an output plugin for histui notification daemon CSS themes.
plugin/output/hyprland
Package hyprland provides an output plugin for Hyprland window manager colour themes.
Package hyprland provides an output plugin for Hyprland window manager colour themes.
plugin/output/hyprlock
Package hyprlock provides an output plugin for Hyprlock screen lock colour themes.
Package hyprlock provides an output plugin for Hyprlock screen lock colour themes.
plugin/output/hyprpaper
Package hyprpaper provides an output plugin for Hyprpaper wallpaper manager configuration.
Package hyprpaper provides an output plugin for Hyprpaper wallpaper manager configuration.
plugin/output/kde-plasma
Package kdeplasma provides an output plugin for KDE Plasma desktop environment theming.
Package kdeplasma provides an output plugin for KDE Plasma desktop environment theming.
plugin/output/kitty
Package kitty provides an output plugin for Kitty terminal colour themes.
Package kitty provides an output plugin for Kitty terminal colour themes.
plugin/output/konsole
Package konsole provides an output plugin for Konsole terminal color themes.
Package konsole provides an output plugin for Konsole terminal color themes.
plugin/output/libadwaita
Package libadwaita provides an output plugin for libadwaita/GNOME application theming.
Package libadwaita provides an output plugin for libadwaita/GNOME application theming.
plugin/output/markdown
Package markdown provides an output plugin for exporting themes to markdown format.
Package markdown provides an output plugin for exporting themes to markdown format.
plugin/output/mc
Package mc provides an output plugin for Midnight Commander (mc) skin themes.
Package mc provides an output plugin for Midnight Commander (mc) skin themes.
plugin/output/neovim
Package neovim provides an output plugin for Neovim colour themes.
Package neovim provides an output plugin for Neovim colour themes.
plugin/output/ptyxis
Package ptyxis provides an output plugin for Ptyxis terminal color palettes.
Package ptyxis provides an output plugin for Ptyxis terminal color palettes.
plugin/output/qt5
Package qt5 provides an output plugin for Qt5 application theming via qt5ct.
Package qt5 provides an output plugin for Qt5 application theming via qt5ct.
plugin/output/qt6
Package qt6 provides an output plugin for Qt6 application theming via qt6ct.
Package qt6 provides an output plugin for Qt6 application theming via qt6ct.
plugin/output/rosec
Package rosec provides an output plugin for rosec-prompt theme configuration.
Package rosec provides an output plugin for rosec-prompt theme configuration.
plugin/output/shared/dbus_kde
Package dbus_kde provides D-Bus helpers for KDE Plasma configuration reload.
Package dbus_kde provides D-Bus helpers for KDE Plasma configuration reload.
plugin/output/shared/testing
Package testing provides shared test utilities for output plugins.
Package testing provides shared test utilities for output plugins.
plugin/output/shared/utils
Package common provides shared utilities for output plugins.
Package common provides shared utilities for output plugins.
plugin/output/swayosd
Package swayosd provides an output plugin for SwayOSD on-screen display colour themes.
Package swayosd provides an output plugin for SwayOSD on-screen display colour themes.
plugin/output/template
Package template provides utilities for loading plugin templates with custom override support.
Package template provides utilities for loading plugin templates with custom override support.
plugin/output/walker
Package walker provides an output plugin for Walker application launcher colour themes.
Package walker provides an output plugin for Walker application launcher colour themes.
plugin/output/waybar
Package waybar provides an output plugin for Waybar status bar colour themes.
Package waybar provides an output plugin for Waybar status bar colour themes.
plugin/output/wbg
Package wbg provides an output plugin for wbg, a simple Wayland wallpaper application.
Package wbg provides an output plugin for wbg, a simple Wayland wallpaper application.
plugin/output/wofi
Package wofi provides an output plugin for Wofi application launcher colour themes.
Package wofi provides an output plugin for Wofi application launcher colour themes.
plugin/output/zellij
Package zellij provides an output plugin for Zellij terminal multiplexer colour themes.
Package zellij provides an output plugin for Zellij terminal multiplexer colour themes.
plugin/protocol
Package protocol defines the plugin protocol version and compatibility checking.
Package protocol defines the plugin protocol version and compatibility checking.
plugin/repository
Package repository provides plugin repository management for Tinct.
Package repository provides plugin repository management for Tinct.
plugin/shared/themeformat
Package themeformat provides types and utilities for the markdown theme format.
Package themeformat provides types and utilities for the markdown theme format.
repocli
Package repocli provides CLI commands for the repository manager tool.
Package repocli provides CLI commands for the repository manager tool.
repomanager
Package repomanager provides repository manifest management functionality.
Package repomanager provides repository manifest management functionality.
security
Package security provides security validation utilities for Tinct.
Package security provides security validation utilities for Tinct.
telemetry
Package telemetry provides anonymous, privacy-first usage analytics for Tinct.
Package telemetry provides anonymous, privacy-first usage analytics for Tinct.
ui/progress
Package progress provides terminal progress indicators (spinners, bars, status).
Package progress provides terminal progress indicators (spinners, bars, status).
util
Package util provides shared utility functions used across the application.
Package util provides shared utility functions used across the application.
util/http
Package http provides HTTP utilities for fetching remote resources.
Package http provides HTTP utilities for fetching remote resources.
util/imagecache
Package imagecache provides utilities for downloading and caching remote images.
Package imagecache provides utilities for downloading and caching remote images.
version
Package version provides build-time version information for Tinct.
Package version provides build-time version information for Tinct.
pkg
colour
Package colour provides public types and utilities for working with color palettes.
Package colour provides public types and utilities for working with color palettes.
dbus
Package dbus provides a cross-platform abstraction for D-Bus communication.
Package dbus provides a cross-platform abstraction for D-Bus communication.
plugin
Package plugin provides the public API for tinct plugins.
Package plugin provides the public API for tinct plugins.
template
Package template provides template utilities and functions for tinct plugins.
Package template provides template utilities and functions for tinct plugins.
util/appdetect
Package appdetect provides utilities for detecting installed applications across different installation methods (native, Flatpak, AppImage, etc.).
Package appdetect provides utilities for detecting installed applications across different installation methods (native, Flatpak, AppImage, etc.).
util/semver
Package semver provides semantic version parsing and comparison utilities.
Package semver provides semantic version parsing and comparison utilities.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL