Seabed theme

Seabed is a low contrast colour scheme inspired by the deep sea. It is unique among my theme collection in that its two variants are essentially dark (in contrast to distinct light and dark versions). The difference between the two is one of degree: a dark and a ‘lighter’ dark. There is no pure red, orange, and yellow, while the rest of the palette hints heavily towards the blue side of the spectrum.

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

060D18 161D28 666D78 969DA8

Light base

162D38 263D48 667D88 96ADB8

Accent values

78456B 6A867A 2D886C 3A6A8D
846B85 6A865A 35838C 4D5B94

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

Atom text editor packages

Seabed light available at

Atom GitHub Or run the command apm install seabed-syntax

Seabed dark available at

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

Vim and Vim Airline

The Vim port is in its early testing phase. Language support in particular could use some more work. Everything is subject to change.

All Prot16 themes (including Seabed) 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 seabed_light
let g:airline_theme='seabed_light'

" or use these instead
colorscheme seabed_dark
let g:airline_theme='seabed_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

All of my themes were originally developed for Atom. I do, nonetheless, plan to branch out from there. For the time being, I am experimenting with ways to make ports for at least some of the most popular programs. Based on my current tests on Arch Linux and Linux Mint 17.3 and 18, I have settled on the following colour mapping (which you have to implement manually if none of the options below suits your needs).

161D28 78456B 2D886C 6A865A 3A6A8D 846B85 35838C 263D48 060D18 6A867A 96ADB8 666D78 667D88 4D5B94 969DA8 162D38

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

Jekyll blog with Rouge for highlighting

To use Seabed on your Rouge-enabled Jekyll site, go ahead and implement this SCSS stylesheet. Read the inline comments on how to switch between light and dark.

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.

<!-- Some comment -->
<div class="schemesmenu">

 <button onclick="schemesFunction()" class="schemes-button">
   Prot16 schemes
   <svg class="deco-icon icon-menu">
     <use xlink:href="#icon-menu"></use>
   </svg>
 </button>

 <nav id="schemesDropdown" class="dropdown-content" aria-label="Prot16 schemes menu">
   <ul>
     <li><a href="#">Text</a></li>
     <li><a href="#">Text</a></li>
   </ul>
 </nav>

</div>
<!-- Some comment -->
<div class="schemesmenu">

 <button onclick="schemesFunction()" class="schemes-button">
   Prot16 schemes
   <svg class="deco-icon icon-menu">
     <use xlink:href="#icon-menu"></use>
   </svg>
 </button>

 <nav id="schemesDropdown" class="dropdown-content" aria-label="Prot16 schemes menu">
   <ul>
     <li><a href="#">Text</a></li>
     <li><a href="#">Text</a></li>
   </ul>
 </nav>

</div>
// Random Mixin
@mixin tablet {
  @media screen and (min-width: #{$tablet}) {
    @content;
  }
}

// Some SCSS
.social-share {
  font-family: $fontui;
  font-size: $ssize;
  margin: ($vrythm * 2) 0 0;
  padding: 0;
  @extend %clearfix;

  div {
    a {
      color: $lbg;
      font-weight: 400;
      display: block;
      margin: ($sone / 2) 0;
      padding: ($sone / 2) $sone;

      @include tablet {
        float: left;
        display: inline-block;
        margin: 0 $sone 0 0;
      }

      &[href*="facebook.com"] {
        background: #3B5998;
      }

      &[href*="twitter.com"] {
        background: #1DA1F3;
      }

      &:hover {
        opacity: .8;
      }
    }
  }
}
// Random Mixin
@mixin tablet {
  @media screen and (min-width: #{$tablet}) {
    @content;
  }
}

// Some SCSS
.social-share {
  font-family: $fontui;
  font-size: $ssize;
  margin: ($vrythm * 2) 0 0;
  padding: 0;
  @extend %clearfix;

  div {
    a {
      color: $lbg;
      font-weight: 400;
      display: block;
      margin: ($sone / 2) 0;
      padding: ($sone / 2) $sone;

      @include tablet {
        float: left;
        display: inline-block;
        margin: 0 $sone 0 0;
      }

      &[href*="facebook.com"] {
        background: #3B5998;
      }

      &[href*="twitter.com"] {
        background: #1DA1F3;
      }

      &:hover {
        opacity: .8;
      }
    }
  }
}
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function schemesFunction() {
    document.getElementById("schemesDropdown").classList.toggle("show");
}

// Close the dropdown menu if the user clicks outside of it
window.onclick = function(event) {
  if (!event.target.matches('.schemes-button')) {

    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
};
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function schemesFunction() {
    document.getElementById("schemesDropdown").classList.toggle("show");
}

// Close the dropdown menu if the user clicks outside of it
window.onclick = function(event) {
  if (!event.target.matches('.schemes-button')) {

    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
};

Related git repositories

Wish to contribute? Check out these repos: