Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

dylanaraps/paleta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.