Linux

fbterm中的日光化配色方案?

  • March 28, 2020

我已經fbterm安裝並嘗試將它與日曬配色方案一起使用。我無法找到有關此的任何資訊。顏色已經添加到我的.Xresources並與 xterm 一起使用。有沒有辦法在幀緩衝區中使用這個配色方案?

真的嗎?兩個反對票?我 確實使用了這個腳本並且它被認為是“正確的答案”。怎麼回事?


跟進@Thomas Dickey關於日曬腳本的回答

fbterminitc使用十進制值而不是十六進制值,因此您需要重寫大部分內容。完成後,它會在另一個腳本(例如 /etc/profile 或 ~/.bashrc)中呼叫,使用:

. solarized-fbterm.sh

幸運的是我已經這樣做了,solarized-fbterm.sh

#!/bin/bash
#
# Author: paul.wratt@gmail.com (Paul Wratt)
# Original: benley@gmail.com (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

是/否…

是的,這似乎是可能的,正如我指出的那樣,對於 LXTerminal 上的*Set solarized scheme*中的不同終端,使用轉義序列是可能的。

不,似乎沒有人以現成的形式實現這一點,因為正如控制台 (tty) 中的 256 種顏色中所述,fbterm 開發人員選擇使用與 xterm 不同的轉義序列。

然而,這個頁面有一個聲稱可以工作的配置:dotfiles/.dircolors-fbterm,但是閱讀 fbterm 的 git 儲存庫中的終端描述(https://github.com/izmntuk/fbterm),它顯然依賴於版本dircolors已被修改以生成相應的轉義序列。

GNUls並且dircolors不使用 terminfo(或 termcap)數據庫,硬編碼轉義序列,因此這些程序對 fbterm 的任何成功使用顏色都需要進行一些調整。例如,我在 Fedora 或 Debian/testing 中看不到這一點。其他可能無法正常工作的硬編碼應用程序包括 GNU grep 和 groff。由於某些應用程序忽略了終端數據庫,因此必鬚根據具體情況進行處理。

由於顏色定義與其他終端不同,所以要與其他應用程序一起使用,需要安裝 fbterm 附帶的終端描述(目前不在 ncurses 中)。那將通過tic.

終端描述僅使用非標準轉義來設置顏色,但閱讀原始碼 ( vterm_action.cpp ) 提示它作為子集也可能適用於 8 種 ANSI 顏色。但是solarized使用超過8種顏色。如果您想為 GNU ls 進行曝光,則需要做一些工作(似乎沒有人做過)。

前面的所有內容都假設您已經設置了調色板以匹配日曬主題,並且只想使用它。您可以修改benley/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

如果已編寫腳本為R ed、G reen 和B lue 設置變數。如果您修改它以將這些嵌入/字元更改為,;那麼 printf 將適合現有腳本,如下所示:

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

但是那些嵌入的分號將使得有必要在每次呼叫的參數周圍添加引號cset

引用自:https://unix.stackexchange.com/questions/316878