我已经fbterm
安装并尝试将其与日光配色方案一起使用。我无法找到任何有关此的信息。颜色已添加到我的.Xresources
并与 xterm 一起使用。有什么方法可以在帧缓冲区中使用这个颜色方案吗?
答案1
是/否...
是的,看来可能的,正如我指出的那样,使用转义序列来执行此操作对于不同的终端是可能的在LXTerminal上设置日晒方案。
不,似乎没有人拥有实施的这是一种即用型形式,因为如中所述控制台 (tty) 中的 256 种颜色,fbterm 开发人员选择使用与 xterm 不同的转义序列。
然而,该页面有一个声称可以工作的配置:dotfiles/.dircolors-fbterm,但是阅读 git 存储库中 fbterm 的终端描述(https://github.com/izmntuk/fbtermdircolors
),它显然依赖于已修改的版本来生成相应的转义序列。
GNUls
不dircolors
使用 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