Caprice theme

Caprice is a medium-to-high contrast syntax theme hinting towards the purple side of the spectrum. It comes in light and dark variants, while using a single 16-colour palette.

Packages or ports of it are available for the Atom text editor, Vim, the Vim Airline plugin, Jekyll websites using the Rouge gem, as well as the Xfce4, Terminator, iTerm2, urxvt, and Hyper terminal emulators.

Palette

Dark base

211B29 312B39 716B79 A19BA9

Light base

FEFBFC EEEBEC 7E7B7C 2E2B2C

Accent values

983D4F 9A5D38 278975 585EBC
AC4D7A A58A30 587EBC 8955A2

Base values from left to right: background, background highlight, secondary text, primary text.

Atom text editor packages

Caprice light available at

Atom GitHub Or run the command apm install caprice-syntax

Caprice dark available at

Atom GitHub Or run the command apm install caprice-dark-syntax

Vim and Vim Airline

All Prot16 themes (including Caprice) are available as plugins for Vim and Vim Airline. To install them, use your favourite plugin manager. With vim-plug:

Plug 'protesilaos/prot16-vim'
Plug 'protesilaos/prot16-vim-airline'

Then specify your choice in .vimrc. Use either the light or dark variant:

colorscheme caprice_light
let g:airline_theme='caprice_light'

" or use these instead
colorscheme caprice_dark
let g:airline_theme='caprice_dark'

Atom and Vim colour mapping

Primary

Secondary

Tertiary


Primary: Class names, variables, functions, etc.
Secondary: Measurement units, strings, support functions, etc.
Tertiary: Cursor, support classes, etc.

Terminal emulators

Palette value correspondance to 16-colour terms
0 = dhl; 1 = red; 2 = gre; 3 = yel; 4 = blu; 5 = mag; 6 = cya; 7 = lhl;
8 = dbg; 9 = ora; 10 = lt1; 11 = dt2; 12 = lt2; 13 = vio; 14 = dt1; 15 = lbg
312B39 983D4F 278975 A58A30 585EBC AC4D7A 587EBC EEEBEC 211B29 9A5D38 2E2B2C 716B79 7E7B7C 8955A2 A19BA9 FEFBFC

Terminal Base values (light theme)
Background: FEFBFC
Foreground: 2E2B2C
Cursor: 2E2B2C
Bold colour: 2E2B2C

Terminal Base values (dark theme)
Background: 211B29
Foreground: A19BA9
Cursor: A19BA9
Bold colour: A19BA9

For Caprice, the following terminal emulators are supported thus far:

Jekyll blog with Rouge for highlighting

To use Caprice on your Rouge-enabled Jekyll site, go ahead and implement either the the light or the the dark variant.

This demo makes use of the Rouge gem to create the markup. It is a lightweight solution for highlighting code on the web. Bear in mind that it is not a perfect representation of the Atom packages or terminal ports.

#!/bin/bash

# Random bits and pieces
match=$(echo "${array[@]:0}" | grep -o ${schemeslug})  

# Do the work if there is a match
if [ ! -z ${match} ]; then
	scheme=${schemeslug}
	echo "Found ${scheme}"
	echo "Accepted commit message '${commit}'"
	echo "Message '${apmsemver}'"
    
    # Work goes here ...

# Error message if scheme name does not exist
else
	echo "${redbg}${whitefg}Error${colourreset} some message"
	echo "Try any one of these instead"
	echo ${array}
	exit 1
fi

# here is how to stop the server
for pid in `ps aux | grep 'node ../server.js' | awk '{print $2}'` ; do
  sudo kill -9 $pid 2> /dev/null
done

exit 0
#!/bin/bash

# Random bits and pieces
match=$(echo "${array[@]:0}" | grep -o ${schemeslug})

# Do the work if there is a match
if [ ! -z ${match} ]; then
	scheme=${schemeslug}
	echo "Found ${scheme}"
	echo "Accepted commit message '${commit}'"
	echo "Message '${apmsemver}'"

    # Work goes here ...

# Error message if scheme name does not exist
else
	echo "${redbg}${whitefg}Error${colourreset} some message"
	echo "Try any one of these instead"
	echo ${array}
	exit 1
fi

# here is how to stop the server
for pid in `ps aux | grep 'node ../server.js' | awk '{print $2}'` ; do
  sudo kill -9 $pid 2> /dev/null
done

exit 0
// Random elements
$weight: bold !default;
$color: red;

@mixin example($arg1, $arg2) {
    background-color: $arg1;
    color: $arg2;
}

%placeholder {
    display: block;
    margin: 0 auto;
}

// FIXME a comment is here
.class {
    font-family: 'A string', sans-serif;
    font-size: 16px;
    font-weight: $weight;

    %extend placeholder;

    @include example(#123123, white);

    &::before,
    &::after {
        content: "";
        display: block;
        width: calc(calc(100% - 5rem) - 10px);
        height: 10px;
    }

    &:not(.other-class) {
        border-bottom: thin solid darken($color, 3%);
    }
}
// Random elements
$weight: bold !default;
$color: red;

@mixin example($arg1, $arg2) {
    background-color: $arg1;
    color: $arg2;
}

%placeholder {
    display: block;
    margin: 0 auto;
}

// FIXME a comment is here
.class {
    font-family: 'A string', sans-serif;
    font-size: 16px;
    font-weight: $weight;

    %extend placeholder;

    @include example(#123123, white);

    &::before,
    &::after {
        content: "";
        display: block;
        width: calc(calc(100% - 5rem) - 10px);
        height: 10px;
    }

    &:not(.other-class) {
        border-bottom: thin solid darken($color, 3%);
    }
}

Related git repositories

Wish to contribute? Check out these repos:

Protesilaos profile photo

Protesilaos Stavrou

EU policy analyst. Philosopher. Web developer.
Full profile