Come modificare la forma, il colore e il battito del cursore del cursore di Linux Console?


23

So di poter modificare alcune impostazioni fondamentali della console Linux, cose come i font, ad esempio, con dpkg-reconfigure console-setup.

Ma mi piacerebbe cambiare cose come il blinkrate, il colore e la forma (voglio che il mio cursore sia sempre un blocco). Ho visto persone realizzare questo. Non ho mai avuto la possibilità di chiedere a quelle persone come farlo.

Non intendo l'emulatore di terminale di Windows, intendo la console di testo di Linux, raggiungi con Ctrl+ Alt+F-key

Sto usando Linux Mint al momento, che è un derivato Debian. Vorrei sapere come farlo anche in Fedora, però.


Modifica: potrei essere su qualcosa

Ho imparato da questo sito Web come apportare le modifiche di cui ho bisogno. Ma non ho ancora finito.

Ho deciso di utilizzare echo -e "\e[?16;0;200c"per ora, ma ho un problema: quando si eseguono applicazioni come vimo irssi, o si collega una sessione schermo, il cursore ritorna ad essere un carattere di sottolineatura grigio lampeggiante.

E, naturalmente, funziona solo su questo, ttytutte le altre console di testo non sono interessate.

Quindi, come posso rendere permanenti queste modifiche? Come posso popolarli su altre console?


1
Potresti voler dare un'occhiata setterm(1)e set(1P).

@htor e come esattamente? Uso settermper disattivare il segnale acustico della console, ma come devo impostare le forme del cursore? In effetti, è settermstato il primo posto in cui ho guardato prima di trovare la sequenza di fuga.
polemon

Volevo solo un modo rapido per ripristinare un terminale distrutto. Il commento di @ user13742 ha funzionato per me: setterm -cursor on
qneill

Risposte:


12

GitHub Gist: come modificare la forma, il colore e il battito del cursore del cursore di Linux Console

Definisco le seguenti impostazioni di formattazione del cursore nel mio .bashrcfile (o /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
+1 per avermi fatto aspettare letteralmente anni prima che qualcuno se ne accorgesse. Grazie uomo!
polemon

1
Nel mio caso il blu era 32, il verde era 64e il rosso era 128. Per ottenere gli altri colori, è sufficiente aggiungerli. Ad esempio, ciano = blu + verde. Quindi, per diventare ciano 32 + 64 = 96, quindi, devi scrivere 96. Bianco = rosso + verde + blu. Quindi, nel mio caso, il bianco è 32 + 64 + 128 = 224.
Utku,

-bash: setterm: command not founderrore su macOS Mojave 10.14.2 ?
Dut A.

7

La maggior parte delle app utilizza la funzionalità cnorm per riportare il cursore sullo stato "normale". Di default questa è la sottolineatura lampeggiante. Ma puoi ignorarlo nel tuo terminfo. Questo dovrebbe risolvere la maggior parte delle applicazioni (vim, tmux, ecc.). Emetti questi comandi:

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

Modifica la patch sopra per le tue esigenze. Questo dovrebbe creare ~ / .terminfo / l / linux che dovrebbe essere raccolto dalla maggior parte delle app del terminale.


3

Se usi bash, puoi usare PROMPT_COMMAND che eseguirà un comando dopo ogni comando. Inserisci quanto segue nel tuo .bashrc

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

Mi stavo quasi accontentando di qualcosa del genere, ma sono abbastanza sicuro di poter ottenere ciò che voglio con qualcosa come un'opzione del kernel o altro.
polemon

O metti PROMPT_COMMAND='echo -e "\033[?16;0;224c"'se vuoi un blocco bianco solido non lampeggiante, invece di un blocco arancione.
Utku,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.