Wie ändere ich die Cursorform, -farbe und -blinkrate der Linux-Konsole?

23

Ich weiß, dass ich einige grundlegende Einstellungen der Linux-Konsole ändern kann, z. B. Schriftarten mit dpkg-reconfigure console-setup.

Aber ich möchte Dinge wie Blinkrate, Farbe und Form ändern (ich möchte, dass mein Cursor immer ein Block ist). Ich habe Leute gesehen, die das geschafft haben. Ich hatte einfach nie die Gelegenheit, diese Leute zu fragen, wie das geht.

Ich glaube nicht , mittleres Terminal - Emulator - Fenster, ich die Linux - Textkonsole bedeuten, erreichen Sie mit Ctrl+ Alt+F-key

Ich verwende momentan Linux Mint, ein Debian-Derivat. Ich würde aber auch gerne wissen, wie das in Fedora geht.


Edit: Ich könnte auf etwas sein

Auf dieser Website habe ich gelernt , wie ich die Änderungen vornehmen kann, die ich benötige. Aber ich bin noch nicht fertig.

Ich habe über die Verwendung ständiger echo -e "\e[?16;0;200c"für jetzt, aber ich habe ein Problem: beim Ausführen von Anwendungen wie vimoder irssi, oder eine Bildschirmsitzung Anbringen zurück , um der Cursor kehrt ein blinkendes Graustrich zu sein.

Und natürlich funktioniert es nur auf dieser. ttyAlle anderen Textkonsolen sind davon nicht betroffen.

Wie kann ich diese Änderungen dauerhaft machen? Wie kann ich sie auf andere Konsolen übertragen?

Polemon
quelle
1
Vielleicht möchten Sie auschecken setterm(1)und set(1P).
@htor und wie genau? Ich settermschalte den Konsolenton aus, aber wie soll ich die Cursorformen einstellen? In der Tat settermwar der erste Ort, an dem ich gesucht habe, bevor ich die Fluchtsequenz gefunden habe.
Polemon
Ich wollte nur einen schnellen Weg, um ein verrücktes Terminal wiederherzustellen. @ user13742s Kommentar hat für mich funktioniert: setterm -cursor on
qneill

Antworten:

12

GitHub Gist: So ändern Sie die Form, Farbe und Blinkrate des Cursors in der Linux-Konsole

Ich definiere die folgenden Cursor-Formatierungseinstellungen in meiner .bashrcDatei (oder /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
##############
mulllhausen
quelle
2
+1, weil ich buchstäblich Jahre gewartet habe, bevor mir jemand das einfällt. Danke, Mann!
Polemon
1
In meinem Fall war Blau 32, Grün 64und Rot 128. Um die anderen Farben zu erhalten, addieren Sie sie einfach. Zum Beispiel Cyan = Blau + Grün. Daher 32 + 64 = 96müssen Sie schreiben , um Cyan zu erhalten 96. Weiß = Rot + Grün + Blau. Daher ist in meinem Fall Weiß 32 + 64 + 128 = 224.
Utku
-bash: setterm: command not foundFehler auf MacOS Mojave 10.14.2 ?
Dut A.
7

Die meisten Apps verwenden die cnorm-Funktion, um den Cursor wieder in den "normalen" Zustand zu versetzen. Standardmäßig ist dies die blinkende Unterstreichung. Sie können dies jedoch in Ihrem Terminfo außer Kraft setzen. Dies sollte die meisten Anwendungen (vim, tmux usw.) reparieren. Setzen Sie diese Befehle ab:

infocmp -A /usr/share/terminfo linux > linux
patch -lp1 <<EOF
--- a/linux
+++ b/linux
@@ -4,7 +4,7 @@ linux|linux console,
    colors#8, it#8, ncv#18, pairs#64,
    acsc=+\020\,\021-\030.^Y0\333\`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
    bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l\E[?1c,
-   clear=\E[H\E[J, cnorm=\E[?25h\E[?0c, cr=^M,
+   clear=\E[H\E[J, cnorm=\E[?25h\E[?48;0;32c, cr=^M,
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
EOF
tic linux
rm linux

Passen Sie den obigen Patch an Ihre Bedürfnisse an. Dies sollte ~ / .terminfo / l / linux erzeugen, was von den meisten Terminal-Apps aufgenommen werden sollte.

ypsu
quelle
3

Wenn Sie bash verwenden, können Sie PROMPT_COMMAND verwenden, das nach jedem Befehl einen Befehl ausführt. Fügen Sie Folgendes in Ihre .bashrc ein

PROMPT_COMMAND='echo -e "\e[?16;0;200c"'
Silverrocker
quelle
Fast hätte ich mich auf so etwas festgelegt, aber ich bin mir ziemlich sicher, dass ich mit so etwas wie einer Kernel-Option oder was auch immer das erreichen kann, was ich will.
Polemon
Oder setzen PROMPT_COMMAND='echo -e "\033[?16;0;224c"'Sie , wenn Sie einen nicht blinkenden weißen Block anstelle eines orangefarbenen Blocks möchten.
Utku