paleta icon indicating copy to clipboard operation
paleta copied to clipboard

Change terminal colors on-the-fly independent of terminal emulator.

paleta


Change terminal colors on-the-fly independent of terminal emulator.

Most terminal emulators support a set of escape sequences which allow for the modification of the terminal's color palette. Combined with the ability to write to all open terminal devices, this allows for theming in a truly independent way.

Paleta reads a list of colors over , transforms the input into the set of escape sequences and sends these sequences to every open terminal in the system. It additionally prints the sequences to .

+------------------------------------------------------------------------------+ | | | $ paleta < palettes/jellybeans-dark > ~/.cache/current-palette | | | +------------------------------------------------------------------------------+

This tool is small and generic. It reads input and writes output. Effortless to incorporate with the system. This repository also contains 150~ popular palettes ready for use with paleta.

terminal support


+------------------------------------------------------------------------------+ | | | this list is not complete | | | | | | alacritty good https://github.com/alacritty/alacritty/issues/656 | | kitty good | | vte [0] good 1a651cf990e67c4046fbff7674249259bcaa89a8 | | xterm good | | urxvt good | | | | st patch ./misc/st-osc_10_11_12-20200418-66520e1.patch | | | | hyper clueless https://github.com/vercel/hyper/issues/2038 | | | | | +------------------------------------------------------------------------------+

[0] vte includes Termite, XFCE terminal, GNOME terminal, Konsole and many more.

dependencies


  • POSIX <stdio.h> <stdlib.h> <glob.h>
  • C99 compiler

build


See src/config.h for configuration.

+------------------------------------------------------------------------------+ | | | Using make (recommended) | | | | $ make | | $ make install | | | | | | Invoking the compiler directly | | | | $ c99 $CFLAGS -o paleta src/paleta.c | | | | | +------------------------------------------------------------------------------+

usage


+------------------------------------------------------------------------------+ | | | 1. Set the colorscheme to jellybeans-dark in all open terminals. | | | | $ paleta < palettes/jellybeans-dark > ~/.cache/current-palette | | | +------------------------------------------------------------------------------+

Saving paleta's to a file is how the current palette is stored. This file is used to set the palette in newly opened terminals. Scripts might instead store this in a variable or ignore it entirely as they maintain state.

setup


This line must be added to $SHELL's startup file. It tells future terminals to load the current palette at launch.

+------------------------------------------------------------------------------+ | | | $ echo 'cat ~/.cache/current-palette' >> ~/.bashrc | | | +------------------------------------------------------------------------------+

input format


Input is one hex color per line, without #. The first three lines are reserved for , and with the remaining lines filling the numerical palette (0-256).

Example: https://github.com/dylanaraps/paleta/blob/master/palettes/gruvbox-dark

+------------------------------------------------------------------------------+ | format | example | +-------------------------------------+----------------------------------------+ | | | | | dedede | | | 121212 | | | dedede | | | 929292 | | | e27373 | | | 94b979 | | | | | ... | ,,, | | | | | | 1ab2a8 | | | | | | | +-------------------------------------+----------------------------------------+

The maximum palette is (3 + 256). This is configurable at compile-time.

software written around paleta


  • shuffle through palettes in a directory. https://github.com/dylanaraps/bin/blob/c06b2c0df0194487fc4cb9c65b451b6369e2c398/shuffle

todo


  • [ ] Find good 256 color palettes to include. All are currently 16 colors. 256 color palettes added to this repository should contain -256 in their filenames.