256 renk ile TTY?


25

URxvt ve xterm ile yalnızca sekiz yerine 256 rengi destekleyen sanal bir terminal kullanmak mümkündür. Intel GMA grafik kartım KMS çerçeve sürücü sürücüsü tarafından iyi desteklendiğinden, yalnızca TTY üzerinde çalışıyorum. Ne yazık ki, yalnızca MPlayer (-vo fbdev / fbdev2) ve diğer çerçeveleme araçları ile daha çok ele alınabileceği halde sekiz rengi destekliyor. TTY'ye sekizden fazla renk kullanmasını söylemenin bir yolu var mı?

Yanıtlar:


10

Şimdi cevaplarımı değiştiriyorum, emin olacağımdan.

ANSI dizilerinin BIOS üzerinden veya çekirdeğin dışında işlendiği sonucuna varmak yanlıştı; Gerçekten de onlar çekirdeğin içinde işlenir. LinuxNewbies IRC kanalında hnaz_ sayesinde daha önce neyi kaçırdığımı buldum: drivers/char/vt.csanal terminal sürücüsü tarafından kullanılan bir Digital Equipment VT102 terminalinin emülasyonunu uyguluyor.

Öyleyse ... kesin bir cevap olarak, sanal terminallerin kaçış dizilerini ele alan kaynak kodunu gözden geçirdikten sonra: Sanal terminallerde 256 renk desteği istiyorsanız, kaçış dizilerini ayrıştıran kodu genişlettikten sonra kendi çekirdeğinizi oluşturmanız gerekir. daha geniş renk spesifikasyonunu kullanmak için.

İşlev csi_m () olarak adlandırılır. Değişikliklerin, daha zengin renk kodlarını belirten kaçış dizileriyle başa çıkmak için X tabanlı terminal emülatörlerini genişletenlere benzer olması gerekecektir. Muhtemelen ihtiyaç duyulan başka değişiklikler de olacak, ama burası başlayacağınız yer.


1
Doğru. Bu "düşük seviyeli sanal terminaller" hakkında konuşuyorum. Ancak framebuffer kullandığımdan beri, kullanılmakta olan fbcon çekirdek modülü olduğunu düşünüyorum. Bakınız Belgeler / fb / fbcon.txt. Yoksa fbcon, bazı ek özellikler ekleyen n_tty etrafındaki bir sarmalayıcı mı? URxvt yamasına ( cvs.schmorp.de/rxvt-unicode/doc/… ) baktığımızda , 256 renk desteğini genişletmek oldukça kolay görünüyor. Orada hiçbir renk tanımı göremediğim için n_tty'nin doğru çekirdek modülü olup olmadığından emin değilim.
timn

Sanırım framebuffer bir cihaz, ve tty başka bir - sanal terminal, tty cihazına ihtiyaç duyuyor, ve bunlar framebuffer'ı bir görüntüleme cihazı olarak kullanıyorlar, ancak framebuffer tek olası ekran cihazı değil.
quix quixote

+1 bu daha muhtemeldir (vt102, genişletilmiş renkleri desteklemiyor ve terminal sürücüsü vt102 emülasyonuna zor kodlanmış). güzel bir araştırma.
Quix Quixote

1
2017 yılında da aynı durum var. kmsconTerminali iyileştirmeye çalışan bir kullanıcı terminali olduğuna inanıyorum (24 bit renk dahil). Gelişimi sistemli bir alternatif lehine durmasına rağmen.
jiggunjer

kmscon çatallı olup bu yazı itibarıyla aktif olarak geliştirilmektedir: github.com/Aetf/kmscon
user3751385

7

256 renkli RXVT / xterm / URXVT / etc, terminfo ve TERMdeğişken ayarı ile tanımlanır . Çoğu Linux dağıtımında sanal terminalleriniz tanımlanmıştır /etc/inittabve terminalin kaç rengi kullanabileceğini tanımlayan varsayılan bir terminal türü kullanın.

TTY'ye sekizden fazla renk kullanmasını söylemenin bir yolu var mı?

Evet.

  • Çerçeve tamponunuzun doğru çözünürlük / bit derinliğini kullandığından emin olun . vga=773Örneğin, 1024x768 ve 256 renk (8 bit renk derinliği) elde etmek için çekirdek seçeneklerine eklemeyi deneyin .

  • Farklı bir TERM ayarlayın (örn export TERM=foo.). Doğru olanı bulmak için deneme yapmanız gerekir. İşe yarayan bir tane bulursanız /etc/inittab, sanal terminallerinizin varsayılan olarak çalışmasını sağlayacak şekilde değiştirebilirsiniz (bir sonraki bölüme bakın).

  • Bu makalede , sizin için işe yarayabilecek diğer seçenekler tartışılmaktadır. O önerir (Qingy Getty değildir) Qingy bir getty yerine ve SÜRE değişkenleri geçiş bir seçenek değilse aradığınızı size verebilir.

  • Getty değişikliklerinden bahsetmişken, yemin ederim getty'i GNU screenyol boyunca bir yerle değiştirmek için talimatlar gördüm . Şu anda bağlantıyı bulamıyorum, ancak bunun için 256 renkli bir TERM olduğundan screen, onu inceleyebilirsiniz.


/etc/inittab sanal terminalleri ayarlamak için böyle satırları kullanır:

# Format:
#  <id>:<runlevels>:<action>:<process>
#
1:2345:respawn:/sbin/getty 38400 tty1
2:2345:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/sbin/getty 38400 tty3

İşte manpage /sbin/getty(Debian sistemimden, bu yüzden teknik olarak agettyprogram):

SYNOPSIS
       agetty [-8ihLmnw] [-f issue_file] [-l login_program] [-I init]
       [-t timeout] [-H login_host] baud_rate,...  port [term]

Not baud_rate,... port [term]sonunda orada. Bu, /etc/inittabsatırdaki komutla ( /sbin/getty 38400 ttyN) eşleşir - notun [term]argüman olmadığını unutmayın , bu yüzden varsayılanı alırız ( echo $TERMsisteminizin ne kullandığını görmek için sanal bir konsolda oturum açtıktan hemen sonra çalıştırın ). Manpage'den tekrar:

ARGUMENTS
       term   The value to be used for the TERM environment variable.  This  over‐
              rides  whatever  init(8) may have set, and is inherited by login and
              the shell.

İşe yarayan bir TERM bulursanız, inittab'ınızdaki getty satırlarını değiştirin ve sonunda uygun TERM ekleyin:

1:2345:respawn:/sbin/getty 38400 tty1 TERM-with-256-colors
2:2345:respawn:/sbin/getty 38400 tty2 TERM-with-256-colors

1
~ tüm bu harika bilgileri sorgula ama başarıya ulaşacağından emin değilim. "Evet" diyorsun, sonra "deneme" ve "bulursan" de. Daha doğrudan bir rotaya geçtim; Çekirdek kodunu aradım. Çekirdekte herhangi bir yerde - renk için kaçış dizileri işleyen bir kod bulamadım. Fb kodunda değil, tty kodunda değil ... hiçbir yerde. Böylece benim BIOS'ta ele alındığı sonucuna vardım. Bu DOS altında aynı ANSI kaçış dizileri kullanma anılarım tarafından desteklenmektedir. Her iki durumda da çeşitli ANSI kaçış dizilerinin BIOS tarafından işlendiğine inanıyorum.
pbr

Pbr: Çekirdek kodunu da kontrol ettim. TTY kodu, renk sayısına sınır koymuyor. BIOS içine girmezse - Eğer framebuffer'ın, uğraşıyoruz edebilir çeşitli bitdepths almak (eğer kareyazmaç devre dışı bıraktık tho eğer özelliklerini ..., donanım bağımlı). 16 renk sınırlaması GeTTY'de olabilir, bu nedenle, Qingy'yi kontrol etmeyi önerebilir ya da terminfo maddelerinde olabilir, bu nedenle çeşitli alternatif TERM tanımlarını denemeyi önerebilir. Bunun ötesinde tavsiye edemem, ancak BIOS ranting temel ve yardımcı değil .
quix quixote

1
~ quack - BIOS'ta değil (aşağıdaki gözden geçirilmiş cevabımı inceleyin) fakat hala Qingy ve ark. Sanal terminal kodu vt102 emülasyonu ile kodlanmıştır.
pbr

6

Fbterm'e bir göz atın - 256 renkli modda çalışabilecek yeni bir çerçeve oluşturuyor (yalnızca bir TTY'den root olarak çalıştırıyorsunuz)

Bununla karışık başarılar elde ettim - bazı uygulamalar iyi çalışıyor ve 256 renk rapor ediyor; Ancak Emacs (TTY’de 256 renk istememin temel nedeni) işe yaramadı; Burada biraz tartışma var, ama çözülmedi:

http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html

Ancak, mplayer çalışmalı!


Herhangi bir X terminal istemcisiyle karşılaştırıldığında berbat görünüyor.
phil pirozhkov

1
Bir framebuffer'da çalışıyor, bu nedenle zaten framebuffer için kullanılabilir 256 renk var.
Seb

Bu fbterm problemi hakkında bir fikriniz olup olmadığını merak mı ediyorsunuz? superuser.com/questions/892028/…
dtmland

emacsİçeri koşmak tmux, çevre terminal için kaçış dizilerini çevirmesi gerektiği için yardımcı olabilir.
Tom Hale,

1

kmscon

kmscon , bir windows sistemi (X, Wayland) kurulu olmadan 256 renk ve video elde etmenin bir yoludur.

Terkedilmiş, ancak şu anda bir çatalla tutuluyor .

Yüklemesinde Belgeler ince olmakla README sayfa burada seni almak gerekir.


Bunu yükledim ve 256 renk gerektiren konsol uygulamaları için kullandım (yapılandırmam nedeniyle vim).

Kurulum talimatlarını dikkatlice okuyun.


-1

Metnin ön ve arka plan renklerini ayarlamak için kullanılan ANSI çıkış dizileri, burada kısıtlayıcı olan şeydir.

Bellekten bu diziler kaçış gibi görünüyor [01; 34m Ön planda için 30'larda kodlar var ve arka plan için 40'larda var.

Bu yüzden aradığınızı elde etmenin bir yolu olduğunu sanmıyorum.


2
Aslında bu mümkün. Aksi takdirde URxvt'da 256 renk ile mutt kullanamazdım. :) Ayrıca bakınız push.cx/2008/256-color-xterms-in-ubuntu Fakat aynı etkiyi TTY'de nasıl elde ederim?
timn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.