Skip to content

dylanaraps/paleta

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
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 <stdin>, 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 <stdout>.

+------------------------------------------------------------------------------+
|                                                                              |
|  $ 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        alacritty/alacritty#656    |
|  kitty      good                                                             |
|  vte [0]    good        1a651cf990e67c4046fbff7674249259bcaa89a8             |
|  xterm      good                                                             |
|  urxvt      good                                                             |
|                                                                              |
|  st         patch       ./misc/st-osc_10_11_12-20200418-66520e1.patch        |
|                                                                              |
|  hyper      clueless    vercel/hyper#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 <stdout> 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 <foreground>, <background> and <cursor> with the remaining lines
filling the numerical palette (0-256).

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

+------------------------------------------------------------------------------+
|  format                             |  example                               |
+-------------------------------------+----------------------------------------+
|                                     |                                        |
|  <foreground>                       |  dedede                                |
|  <background>                       |  121212                                |
|  <cursor>                           |  dedede                                |
|  <color0>                           |  929292                                |
|  <color1>                           |  e27373                                |
|  <color2>                           |  94b979                                |
|                                     |                                        |
|  ...                                |  ,,,                                   |
|                                     |                                        |
|  <color256>                         |  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.