fbterm 中的日光色配色方案?

fbterm 中的日光色配色方案?

我已经fbterm安装并尝试将其与日光配色方案一起使用。我无法找到任何有关此的信息。颜色已添加到我的.Xresources并与 xterm 一起使用。有什么方法可以在帧缓冲区中使用这个颜色方案吗?

答案1

是/否...

是的,看来可能的,正如我指出的那样,使用转义序列来执行此操作对于不同的终端是可能的在LXTerminal上设置日晒方案

不,似乎没有人拥有实施的这是一种即用型形式,因为如中所述控制台 (tty) 中的 256 种颜色,fbterm 开发人员选择使用与 xterm 不同的转义序列。

然而,该页面有一个声称可以工作的配置:dotfiles/.dircolors-fbterm,但是阅读 git 存储库中 fbterm 的终端描述(https://github.com/izmntuk/fbtermdircolors),它显然依赖于已修改的版本来生成相应的转义序列。

GNUlsdircolors使用 terminfo(或 termcap)数据库、硬编码转义序列,因此这些程序对 fbterm 颜色的任何成功使用都需要进行一些调整。例如,我在 Fedora 或 Debian/testing 中没有看到这一点。其他可能无法正常工作的临时硬编码应用程序包括 GNU grep 和 groff。由于某些应用程序会忽略终端数据库,因此必须根据具体情况进行处理。

由于颜色定义与其他终端不同,为了与其他应用程序一起使用,需要安装 fbterm 附带的终端描述(目前不在 ncurses 中)。这将通过 完成tic

终端描述仅使用非标准转义来设置颜色,但读取源代码(vterm_action.cpp)暗示作为一个子集,它也可以适用于 8 种 ANSI 颜色。但 Solarized 使用的颜色超过 8 种。如果你想为 GNU ls 提供 Solarized,则需要做一些工作(似乎没有人做过)。

前面的所有内容都假设您已经设置了调色板以匹配 solarized 主题,并且只想使用它。您可以修改脚本宾利/solarized-termcolor-osc4在 fbterm 终端描述中使用转义序列并以这种方式获得可行的东西。这是在这一行中完成的:

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

这是硬编码的。如果他们使用了tput,就不会有任何工作涉及。终端描述为fbterm

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

其中(请注意该脚本使用/贯穿全文)将对应于这样的陈述

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

如果编写脚本来设置变量编辑,G雷恩和卢。如果您修改它以更改这些嵌入/字符,;则 printf 将适合现有脚本,如下所示:

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

但是这些嵌入的分号将使得有必要在每次调用的参数周围添加引号cset

答案2

真的吗?否决票?我 使用这个脚本它被认为是“正确答案”。搞什么?


关注@托马斯·迪基的回答关于日晒脚本

fbterm 的initc用途小数值不是十六进制值所以你需要重写大部分内容。完成后,将在另一个脚本(例如 /etc/profile 或 ~/.bashrc)中使用以下命令调用它:

. solarized-fbterm.sh

幸运的是我已经做到了这一点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 "\033[3;234;$base03}\033[3;235;$base02}\033[3;240;$base01}\033[3;241;$base00}\033[3;244;$base0}\033[3;245;$base1}\033[3;254;$base2}\033[3;230;$base3}\033[3;136;$yellow}\033[3;166;$orange}\033[3;160;$red}\033[3;125;$magenta}\033[3;61;$violet}\033[3;33;$blue}\033[3;37;$cyan}\033[3;64;$green}"

function cset() {
  ANSI=$1
  RGB=$2
  printf "\033[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

相关内容