Criando um tema para o Hyperterm

O Hyperterm é um terminal desenvolvido com JavaScript/HTML/CSS, ou seja, baseado em padrões Web. O objetivo do projeto, crido pelo pessoal da Zeit, é criar uma experiência bonita e extensível para a interface de linha de comando. Inicialmente o projeto apenas funcionava no macOS, mas agora já está disponível para Linux (para Windows deve sair logo).

Hyperterm em ação

Uma das funcionalidades legais do Hyperterm é o poder de criar plugins e temas. A API é relativamente fácil e nos permite criar algo simples em poucos minutos. Plugins do Hyperterm são módulos do npm, e não é preciso nem instalar nada. Por exemplo, veja no Gif abaixo como instalar o tema hyperyellow:

Basta adicionar o nome do plugin no arquivo de configuração do Hyperterm (~/.hyperterm.js) para que o mesmo seja instalado. Fácil né?

Como temas são apenas plugins, a API é a mesma ao desenvolve-lo. Em um tema precisamos definir o hook decorateConfig.

exports.decorateConfig = (config) => {   return Object.assign({}, config, {   }); } 

Eu criei um tema inspirado nas cores do BrazilJS para ver o ecosistema do Hyperterm em ação, vejam como ficou:

Para instala-lo, basta adiciona-lo na lista de plugins (~/.hyperterm.js). javascript plugins: ['hyperterm-theme-braziljs']

O código para este tema segue abaixo:

exports.decorateConfig = (config) => {   return Object.assign({}, config, {     cursorColor: '#ffde17',     fontSize: 12,     windowSize: [680, 450],     fontFamily: 'Roboto+Condensed, Menlo, "DejaVu Sans Mono", "Lucida Console", monospace',     cursorShape: 'BLOCK',     foregroundColor: '#fff',     backgroundColor: '#000',     borderColor: '',     padding: '0px 0px',     css: `       ${config.css || ''}       .tabs_nav .tabs_list .tab_text {         color: yellow;       }       .tabs_nav .tabs_title {         color: yellow;       }       .hyperterm_main.main_b54qtm {         background-image: url(data:image/png;base64)         background-size: 80px 60px, cover;       }       .term_fit.fit_1ssoezr.term_term.term_13hv8io {         opacity: 0.9;       }     `,     termCSS: `       .hyperterm_main.main_b54qtm {         background-image: url('https://braziljs.org/assets/images/braziljs.svg');       }     `     },     shell: ''   }); } 

Notem que estamos apenas sobrescrevendo valores de configuração Hyperterm no nosso tema. Seja criativo e crie o seu baseado em suas preferências, ou use este do BrazilJS :)