256 สีในคอนโซล (tty)


11

X serverสมมติว่าผมมีระบบโดยไม่ต้อง ฉันสามารถล็อกอินได้จากคอนโซลเท่านั้น ดูเหมือนว่าโดยค่าเริ่มต้นคอนโซลลินุกซ์รองรับเพียง 8 สี:

# tput colors
8

เป็นไปได้หรือไม่ที่จะใช้ 256 สีในคอนโซลเหมือนกับที่ฉันใช้ในเทอร์มินัลอีมูเลเตอร์ (เช่นเทอร์มิเนเตอร์)

ในขณะที่ googling Ihave พบคำถามที่คล้ายกันมากมาย (หลายคนมีอายุมากกว่า 10 ปี) แต่ไม่มีคำตอบที่ชัดเจน บางคนแนะนำให้ใช้ framebuffer บางคนแนะนำให้ผนวกอาร์กิวเมนต์ TERM กับตัวเลือกการบูตเคอร์เนล

ในขณะนี้ฉันส่งเพียงหนึ่งตัวเลือกพิเศษเป็นพารามิเตอร์การบูตเคอร์เนล:

append="video=1280x720"

ฉันเชื่อว่าการส่งความละเอียดวิดีโอใช้งานได้กับเมล็ดที่ทันสมัยkernel mode settingเท่านั้น แต่ฉันไม่แน่ใจ

เป็นไปได้หรือไม่ที่จะใช้ 256 สีในคอนโซล linux รุ่นใหม่ (tty)

อย่างไร?

ฉันใช้ Debian Wheezy กับ kernel 4.1

UPDATE:

ตามคำแนะนำจาก @muru ฉันได้ลองfbtermแล้ว ในขณะที่มันทำงานได้กับ 256 สี แต่ก็มีแบบอักษรที่น่าเกลียดมาก / อ่านไม่ออก นอกจากนี้ยังมีเคอร์เซอร์กะพริบอยู่ตลอดเวลาที่มุมล่างซ้ายซึ่งฉันพบว่าทำให้เสียสมาธิ

ฉันสามารถใช้ 256 สีในคอนโซลโดยไม่มี fbterm / framebuffer ได้หรือไม่?

การ จำกัด สี 8 สีในคอนโซลมาจากที่ใด


FbTerm เห็นได้ชัดว่า: superuser.com/a/492078/334516 , askubuntu.com/a/57128/158442
muru

@muru - ขอบคุณสำหรับคำแนะนำ ฉันได้อัปเดตคำถามของฉันแล้ว
Martin Vegter

แน่นอนถ้าคุณตั้งค่าTERMการxterm-256colorสำหรับลินุกซ์คอนโซลคุณจะเพียงแค่เปิดสามารถของเวิร์อีก ลิงค์นี้ให้คำใบ้
Thomas Dickey

RE: UPDATE ฉันไม่มีแบบอักษร "น่าเกลียด / อ่านไม่ออก" อาจเป็นเพราะฉันใช้แบบอักษรอื่น อาจผิด$TERM(ต้องเป็นfbterm ก่อนที่คุณจะเริ่มfbterm) หรือไม่ใช่โหมดวิดีโอ 32 บิตหรือทั้งสองอย่าง ปิดเคอร์เซอร์คอนโซลก่อนที่จะเริ่มและเปิดใช้เมื่อคุณมีการใช้fbterm unix.stackexchange.com/questions/220330/…tput
Paul Wratt

BTW ฉันดูที่fbtermแหล่งข้อมูลด้วยและมันจะง่าย (แต่ใช้เวลานาน) ในการแปลงลำดับรหัส escape เพื่อใช้xterm-256colorแทน ( fbterm-xterm) สิ่งที่$TERMจะต้องมีการ inline ด้วยterminfoและtermcapการตั้งชื่อแบบแผน ( fbterm-xterm-256colorหรือfbterm-256color) เพื่อ "slot" ลงในเชลล์สคริปต์ที่มีอยู่ โปรดทราบว่าfbtermใช้TERM=fbtermเป็นสวิตช์เพื่อเปิดตัวเลือก 256 สีมิฉะนั้นจะมี 16 สี (หรืออาจจะเหมือนกับสีพื้นฐาน)
Paul Wratt

คำตอบ:


2

คำถามจริงประกอบด้วยสองรายการเหล่านี้:

  • ฉันสามารถใช้ 256 สีในคอนโซลโดยไม่มี fbterm / framebuffer ได้หรือไม่?

  • การ จำกัด สี 8 สีในคอนโซลมาจากที่ใด

ถึงคนแรก: ไม่ชัด แนวทางที่แนะนำทั้งหมดใช้ fbterm ไปที่สอง: มันมาจากคำอธิบายขั้ว (aka "รายการ terminfo") สำหรับคอนโซล Linux ที่มีการTERMตั้งค่าให้linuxระบุว่าขั้วรองรับ 8 สี tputรับข้อมูลจากฐานข้อมูลสถานี

หนึ่งในรายการในหัวข้อที่ยกมากล่าวว่า fbterm ใช้ลำดับหนีที่แตกต่างกันสำหรับการตั้งค่าสีกว่า xterm หากเป็นเช่นนั้น (และให้ความชอบของผู้ใช้ Emacs ในการทำโค้ดฮาร์ดฟอร์ด) จะไม่มีรายการเทอร์มินัลที่เหมาะสมสำหรับ fbterm


Linux kernel terminal emulator ได้รับการสนับสนุน SGR เพิ่มเติมในช่วงไม่กี่ปีที่ผ่านมา: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/ … github.com/torvalds/linux/commit/ …
JdeBP

1
แน่นอน - คุณอาจไม่ได้อ่านความคิดเห็นเกี่ยวกับการเช็คอิน: เนื่องจากข้อ จำกัด ด้านฮาร์ดแวร์ของคอนโซล VGA, สีจะถูกปรับลดเป็น* foregrounds 16 หน้าและ 8 พื้นหลัง บนคอนโซล fbdev มันเป็นไปได้ที่จะสนับสนุนพวกเขาโดยไม่สูญเสียคุณภาพ แต่การเพิ่มที่ต้องใช้รหัสจำนวนมาก *
โทมัสดิกกี

ผมได้อ่านความคิดเห็น, ความยาวตั้งแต่ซึ่งเป็นเหตุผลที่ผมเขียนว่ามันได้รับการสนับสนุนบาง SGR เพิ่มเติม (-: แต่ขอให้สังเกตว่ามันไม่ได้ จำกัด อยู่แค่ 8 สีตามที่คุณเขียนในปี 2559 ที่นี่
JdeBP

ก็ยังคงจานเดียวกันของ 8 ANSIและ 8 ตัวหนา / สดใสANSIตามที่ได้รับสำหรับ25 ปี (และ ncurses มีรายการลินุกซ์ 16color ตั้งแต่2009 )
Thomas Dickey

ก่อนหน้านี้ฉันได้ตรวจสอบแหล่งเคอร์เนล (ประมาณเวลาของ OP) และถือว่าเป็นกระบวนการที่ง่ายในการอนุญาต 256 สี ( linux-256color) โปรแกรมแก้ไขนั้นจะไม่ได้รับการยอมรับอัปสตรีมด้วยเหตุผลเดียวกับความเห็นของ Thomas Dickey ด้านบน "เนื่องจากข้อ จำกัด ด้านฮาร์ดแวร์" IE Linux ต้องทำงานบนตัวหารร่วมที่ต่ำที่สุด
Paul Wratt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.