fbterm中的日光化配色方案?
我已經
fbterm
安裝並嘗試將它與日曬配色方案一起使用。我無法找到有關此的任何資訊。顏色已經添加到我的.Xresources
並與 xterm 一起使用。有沒有辦法在幀緩衝區中使用這個配色方案?
真的嗎?兩個反對票?我 確實使用了這個腳本並且它被認為是“正確的答案”。怎麼回事?
fbterm
initc
使用十進制值而不是十六進制值,因此您需要重寫大部分內容。完成後,它會在另一個腳本(例如 /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
已被修改以生成相應的轉義序列。GNU
ls
並且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
。