Colorscheme Solarized in fbterm?

1

Eu tenho fbterm instalado e estou tentando usá-lo com o esquema de cores solarizado. Não consegui encontrar nenhuma informação sobre isso. As cores já estão adicionadas ao meu .Xresources e trabalhando com o xterm. Existe alguma maneira de usar este esquema de cores no framebuffer?

    
por Dmitry Kudriavtsev 17.10.2016 / 07:42

2 respostas

1

Seguindo para resposta de Thomas Dickey com relação a roteiro solarizado

initc de fbterm usa valores decimais não valores hexadecimais , portanto é necessário reescrever a maior parte . Uma vez feito, é invocado dentro de outro script (por exemplo, / etc / profile ou ~ / .bashrc) usando:

. solarized-fbterm.sh

Por sorte, eu já tenho, solarized-fbterm.sh :

#!/bin/bash
#
# Author: [email protected] (Paul Wratt)
# Original: [email protected] (Benjamin Staffin)
# Set your fbterm's color palette to match the Solarized color scheme by
# using escape sequences. fbterm uses decimal values not hex values.
#

set -o nounset

base03="0;43;54"
base02="7;54;66"
base01="88;110;117"
base00="101;123;131"
base0="131;148;150"
base1="147;161;161"
base2="238;232;213"
base3="253;246;227"
yellow="181;137;0"
orange="203;75;22"
red="220;50;47"
magenta="211;54;130"
violet="108;113;196"
blue="38;139;210"
cyan="42;161;152"
green="133;153;0"

printf "3[3;234;$base03}3[3;235;$base02}3[3;240;$base01}3[3;241;$base00}3[3;244;$base0}3[3;245;$base1}3[3;254;$base2}3[3;230;$base3}3[3;136;$yellow}3[3;166;$orange}3[3;160;$red}3[3;125;$magenta}3[3;61;$violet}3[3;33;$blue}3[3;37;$cyan}3[3;64;$green}"

function cset() {
  ANSI=$1
  RGB=$2
  printf "3[3;%d;%s}" $ANSI "$RGB"
}

#black
cset 0 $base02
cset 8 $base03

#red
cset 1 $red
cset 9 $orange

#green
cset 2 $green
cset 10 $base01

#yellow
cset 3 $yellow
cset 11 $base00

#blue
cset 4 $blue
cset 12 $base0

#magenta
cset 5 $magenta
cset 13 $violet

#cyan
cset 6 $cyan
cset 14 $base1

#white
cset 7 $base2
cset 15 $base3
    
por 27.08.2017 / 05:26
3

sim / não ...

sim, parece possível , fazendo isso usando seqüências de escape, como eu apontei, era possível para um terminal diferente em Definir esquema solarizado no LXTerminal .

não, ninguém parece ter implementado isso em um formulário pronto para uso porque, conforme observado em 256 cores no console (tty) , os desenvolvedores do fbterm optaram por usar seqüências de escape diferentes do xterm.

No entanto, esta página tem uma configuração que é reivindicada a funcionar: dotfiles / .dircolors-fbterm , mas lendo a descrição do terminal no repositório git para fbterm ( link ), ele aparentemente depende de uma versão de dircolors que foi modificado para gerar as seqüências de escape correspondentes.

O GNU ls e dircolors não usam o banco de dados terminfo (ou termcap), codificando sequências de escape, portanto, qualquer uso bem-sucedido de cores por esses programas para o fbterm exigiria alguma adaptação. Eu não vejo isso no Fedora ou no Debian / testing, por exemplo. Outros aplicativos embutidos no código que podem não funcionar corretamente incluem o GNU grep e o groff. Como alguns aplicativos ignoram o banco de dados do terminal, eles precisam ser tratados caso a caso.

Como a definição de cor difere de outros terminais, para uso com outros aplicativos é necessário instalar a descrição do terminal que vem com fbterm (não está em ncurses neste momento). Isso seria feito com tic .

A descrição do terminal usa apenas um escape não padrão para definir cores, mas ler o código-fonte ( vterm_action.cpp ) sugere que, como um subconjunto, pode funcionar também para as 8 cores ANSI. Mas solarizado usa mais de 8 cores. Se você quiser solarizado para o GNU ls, algum trabalho é necessário (que ninguém parece ter feito).

Todo o anterior pressupõe que você tenha configurado a paleta de cores para corresponder ao tema solarizado, e apenas deseja usá-lo. Você pode modificar o script em benley / solarized-termcolor-osc4 para usar o Seqüência de escape na descrição terminal fbterm e obter algo viável dessa maneira. Isso é feito nesta linha:

printf "\x1b]4;$ANSI;rgb:${RGB}\a"

que é codificado. Se eles usassem tput , não haveria trabalho envolvido. A descrição do terminal para fbterm diz

initc=\E[3;%p1%d;%p2%d;%p3%d;%p4%d},

qual (o script usa / ao longo do texto) corresponderia a uma declaração como

printf '3[3;%d;%d;%d;%d}' $ANSI $R $G $B

se o script tiver sido escrito para definir variáveis para R ed, G reen e B lue. Se você modificá-lo para alterar os caracteres / incorporados para ; , o printf se encaixaria no script existente da seguinte forma:

    printf '3[3;%d;%s}' $ANSI "$RGB"

mas esses ponto-e-vírgulas embutidos tornariam necessário adicionar cotações em torno dos parâmetros para cada chamada de cset .

    
por 17.10.2016 / 10:41