จะเปลี่ยนรูปร่างเคอร์เซอร์สีและกะพริบของคอนโซล Linux ได้อย่างไร


23

dpkg-reconfigure console-setupฉันรู้ว่าฉันสามารถเปลี่ยนการตั้งค่าพื้นฐานบางส่วนของลินุกซ์คอนโซลสิ่งที่ต้องการแบบอักษรเช่นกับ

แต่ฉันต้องการเปลี่ยนสิ่งต่าง ๆ เช่นกระพริบตาสีและรูปร่าง (ฉันต้องการให้เคอร์เซอร์เป็นบล็อกตลอดเวลา) ฉันเห็นคนที่ทำสิ่งนี้สำเร็จ ฉันไม่เคยมีโอกาสถามคนเหล่านั้นว่าจะทำอย่างไร

ฉันไม่ได้หมายถึงหน้าต่างเทอร์มินัลอีมูเลเตอร์ฉันหมายถึงคอนโซลข้อความ Linux คุณสามารถเข้าถึงด้วยCtrl+ Alt+F-key

ตอนนี้ฉันใช้ Linux Mint ซึ่งเป็น Debian derivate ฉันต้องการทราบวิธีการทำเช่นนั้นใน Fedora เช่นกัน


แก้ไข:ฉันอาจจะมีบางอย่าง

ฉันเรียนรู้จากเว็บไซต์นี้ว่าจะเปลี่ยนแปลงอย่างไรฉันต้องการ แต่ฉันยังไม่เสร็จ

ฉันได้ตัดสินใจใช้echo -e "\e[?16;0;200c"ตอนนี้ แต่ฉันมีปัญหา: เมื่อใช้งานแอพพลิเคชั่นเช่นvimหรือirssiหรือแนบเซสชันหน้าจอเคอร์เซอร์จะกลับไปเป็นขีดเส้นใต้สีเทาที่กะพริบ

และแน่นอนมันใช้งานได้เฉพาะกับttyคอนโซลข้อความอื่น ๆ เท่านั้นที่ไม่ได้รับผลกระทบ

ดังนั้นฉันจะทำให้การเปลี่ยนแปลงเหล่านั้นเป็นแบบถาวรได้อย่างไร ฉันจะเติมพวกมันไปยังเครื่องเล่นอื่นได้อย่างไร?


1
คุณอาจต้องการที่จะตรวจสอบและsetterm(1) set(1P)

@htor และวิธีการที่แน่นอน? ฉันใช้settermเพื่อปิดเสียงบี๊บคอนโซล แต่ฉันจะตั้งค่ารูปร่างเคอร์เซอร์ได้อย่างไร ในความเป็นจริงsettermเป็นสถานที่แรกที่ฉันดูก่อนค้นหาลำดับการหลบหนี
polemon

ฉันแค่ต้องการวิธีที่รวดเร็วในการคืนค่าเทอร์มินัลที่ขาด ความคิดเห็นของ @ @ user13742 ใช้งานได้สำหรับฉัน: setterm -cursor on
qneill

คำตอบ:


12

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
+1 สำหรับฉันอย่างแท้จริงที่ต้องรอหลายปีก่อนที่จะมีใครมาด้วย ขอบคุณคน!
polemon

1
ในกรณีของผมก็คือสีฟ้า32, สีเขียวและสีแดงเป็น64 128ในการรับสีอื่นคุณเพียงแค่เพิ่มสี ตัวอย่างเช่น cyan = blue + green ดังนั้นเพื่อให้ได้สีฟ้า, ดังนั้นคุณจะต้องเขียน32 + 64 = 96 96ขาว = แดง + เขียว + น้ำเงิน 32 + 64 + 128 = 224ดังนั้นในกรณีของผมเป็นสีขาว
Utku

-bash: setterm: command not foundข้อผิดพลาดในmacOS Mojave 10.14.2 ?
Dut A.

7

แอพส่วนใหญ่ใช้ความสามารถ cnorm เพื่อตั้งค่าเคอร์เซอร์กลับสู่สถานะ "ปกติ" โดยค่าเริ่มต้นนี่คือการขีดเส้นใต้กระพริบ แต่คุณสามารถลบล้างสิ่งนี้ได้ใน terminfo ของคุณ การดำเนินการนี้ควรแก้ไขแอปพลิเคชันส่วนใหญ่ (vim, tmux เป็นต้น) ออกคำสั่งเหล่านี้:

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

แก้ไข patch ข้างต้นตามความต้องการของคุณ สิ่งนี้ควรสร้าง ~ / .terminfo / l / linux ซึ่งควรเลือกโดยแอพเทอร์มินัลส่วนใหญ่


3

หากคุณใช้ bash คุณสามารถใช้ PROMPT_COMMAND ซึ่งจะรันคำสั่งหลังจากแต่ละคำสั่ง ใส่ต่อไปนี้ใน. bashrc ของคุณ

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

ฉันเกือบจะยอมแพ้อะไรแบบนั้น แต่ฉันค่อนข้างแน่ใจว่าฉันสามารถทำสิ่งที่ฉันต้องการได้ด้วยตัวเลือกเคอร์เนลหรืออะไรก็ตาม
polemon

หรือใส่PROMPT_COMMAND='echo -e "\033[?16;0;224c"'ถ้าคุณต้องการบล็อกสีขาวทึบที่ไม่กะพริบแทนที่จะเป็นบล็อกสีส้ม
Utku
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.