如何更改 Linux 控制台的光标形状、颜色和闪烁率?

如何更改 Linux 控制台的光标形状、颜色和闪烁率?

我知道我可以更改 Linux 控制台的一些基本设置,例如字体等dpkg-reconfigure console-setup

但我想改变诸如眨眼率、颜色和形状之类的东西(我希望我的光标始终是一个块)。我见过有人做到了这一点。我只是从来没有机会问那些人如何做到这一点。

我指的不是终端仿真器窗口,而是 Linux 文本控制台,您可以使用Ctrl+ Alt+访问F-key

我现在使用的是 Linux Mint,它是 Debian 的衍生版本。不过,我也想知道如何在 Fedora 中做到这一点。


编辑:我可能正在做某事

我从中学到了这个网站,如何进行我需要的更改。但我还没说完。

我现在已经决定使用echo -e "\e[?16;0;200c",但遇到了一个问题:当运行 或 之类的应用程序vimirssi附加屏幕会话时,光标会恢复为闪烁的灰色下划线。

当然,它只适用于这一个,tty所有其他文本控制台都不受影响。

那么我怎样才能使这些改变永久化呢?如何将它们填充到其他控制台?

答案1

GitHub Gist:如何更改 Linux 控制台的光标形状、颜色和闪烁率

.bashrc我在我的文件(或)中定义了以下光标格式设置/etc/bashrc

##############
# pretty prompt and font colors
##############

# alter the default colors to make them a bit prettier
echo -en "\e]P0000000" #black
echo -en "\e]P1D75F5F" #darkred
echo -en "\e]P287AF5F" #darkgreen
echo -en "\e]P3D7AF87" #brown
echo -en "\e]P48787AF" #darkblue
echo -en "\e]P5BD53A5" #darkmagenta
echo -en "\e]P65FAFAF" #darkcyan
echo -en "\e]P7E5E5E5" #lightgrey
echo -en "\e]P82B2B2B" #darkgrey
echo -en "\e]P9E33636" #red
echo -en "\e]PA98E34D" #green
echo -en "\e]PBFFD75F" #yellow
echo -en "\e]PC7373C9" #blue
echo -en "\e]PDD633B2" #magenta
echo -en "\e]PE44C9C9" #cyan
echo -en "\e]PFFFFFFF" #white
clear #for background artifacting

# set the default text color. this only works in tty (eg $TERM == "linux"), not pts (eg $TERM == "xterm")
setterm -background black -foreground green -store

# http://linuxgazette.net/137/anonymous.html
cursor_style_default=0 # hardware cursor (blinking)
cursor_style_invisible=1 # hardware cursor (blinking)
cursor_style_underscore=2 # hardware cursor (blinking)
cursor_style_lower_third=3 # hardware cursor (blinking)
cursor_style_lower_half=4 # hardware cursor (blinking)
cursor_style_two_thirds=5 # hardware cursor (blinking)
cursor_style_full_block_blinking=6 # hardware cursor (blinking)
cursor_style_full_block=16 # software cursor (non-blinking)

cursor_background_black=0 # same color 0-15 and 128-infinity
cursor_background_blue=16 # same color 16-31
cursor_background_green=32 # same color 32-47
cursor_background_cyan=48 # same color 48-63
cursor_background_red=64 # same color 64-79
cursor_background_magenta=80 # same color 80-95
cursor_background_yellow=96 # same color 96-111
cursor_background_white=112 # same color 112-127

cursor_foreground_default=0 # same color as the other terminal text
cursor_foreground_cyan=1
cursor_foreground_black=2
cursor_foreground_grey=3
cursor_foreground_lightyellow=4
cursor_foreground_white=5
cursor_foreground_lightred=6
cursor_foreground_magenta=7
cursor_foreground_green=8
cursor_foreground_darkgreen=9
cursor_foreground_darkblue=10
cursor_foreground_purple=11
cursor_foreground_yellow=12
cursor_foreground_white=13
cursor_foreground_red=14
cursor_foreground_pink=15

cursor_styles="\e[?${cursor_style_full_block};${cursor_foreground_black};${cursor_background_green};c" # only seems to work in tty

# http://www.bashguru.com/2010/01/shell-colors-colorizing-shell-scripts.html
prompt_foreground_black=30
prompt_foreground_red=31
prompt_foreground_green=32
prompt_foreground_yellow=33
prompt_foreground_blue=34
prompt_foreground_magenta=35
prompt_foreground_cyan=36
prompt_foreground_white=37

prompt_background_black=40
prompt_background_red=41
prompt_background_green=42
prompt_background_yellow=43
prompt_background_blue=44
prompt_background_magenta=45
prompt_background_cyan=46
prompt_background_white=47

prompt_chars_normal=0
prompt_chars_bold=1
prompt_chars_underlined=4 # doesn't seem to work in tty
prompt_chars_blinking=5 # doesn't seem to work in tty
prompt_chars_reverse=7

prompt_reset=0

#start_prompt_coloring="\e[${prompt_chars_bold};${prompt_foreground_black};${prompt_background_green}m"
start_prompt_styles="\e[${prompt_chars_bold}m" # just use default background and foreground colors
end_prompt_styles="\e[${prompt_reset}m"

PS1="${start_prompt_styles}[\u@\h \W] \$${end_prompt_styles}${cursor_styles} "

##############
# end pretty prompt and font colors
##############

答案2

大多数应用程序使用 cnorm 功能将光标设置回“正常”状态。默认情况下,这是闪烁的下划线。但您可以在 terminfo 中覆盖它。这应该可以修复大多数应用程序(vim、tmux 等)。发出这个命令:

infocmp linux | sed 's/cnorm=[^,]*/cnorm=\\E[?25h\\E[?48;0;32c/' | tic -

这应该创建 ~/.terminfo/l/linux ,大多数终端应用程序下次运行时都会选择它。

答案3

如果您使用bash,则可以使用PROMPT_COMMAND,它将在每个命令之后执行一个命令。将以下内容放入您的 .bashrc 中

PROMPT_COMMAND='echo -e "\e[?16;0;200c"'

答案4

假设您使用GNU/Linux并具有root访问权限,您可以通过修改/sys/module/vt/parameters/cur_default文件来修改tty模式下的光标。通过做

echo 0 > /sys/module/vt/parameters/cur_default

将设置“块光标”。

您可能需要更改 中的值0-7以获得其他形状。 (我已经在 Mint 19.3、Ubuntu 16.04 和其他一些 Debian 发行版上测试过它,它可以在 tty 中工作(正如你所问的),但在少数情况下它不起作用。我偶然发现了上面的内容。我尝试了setterm@user13742 的建议我怀疑 setterm 通过修改 中的文件来实现这一点/sys/module/vt/parameter。)

来源: 显示当前的“setterm”值/设置

https://bbs.archlinux.org/viewtopic.php?id=154433

相关内容