256 кольорів у консолі (tty)


11

Припустимо, у мене система без X server. Я можу ввійти лише з консолі. Здається, за замовчуванням консоль Linux підтримує лише 8 кольорів:

# tput colors
8

Чи можливо в консолі використовувати 256 кольорів, як я б використовував у емуляторі терміналу (тобто термінаторі)?

Під час гуглінгу Іхав знайшов багато подібних питань (багатьом з них старше 10 років), але жодної однозначної відповіді. Хтось пропонує використовувати framebuffer, інші ж пропонують додати аргумент TERM до параметрів завантаження ядра.

На даний момент я передаю лише один додатковий варіант як параметр завантаження ядра:

append="video=1280x720"

Я вважаю, що передача роздільної здатності відео працює лише в сучасних ядрах із kernel mode settingпідтримкою, але я не впевнений у цьому.

Чи можливо використовувати 256 кольорів у сучасній консолі Linux (tty)

Як?

Я використовую Debian Wheezy з ядром 4.1

ОНОВЛЕННЯ:

на основі пропозиції від @muru, я спробував fbterm. Хоча він працює з 256 кольорами, він має дуже потворні / шалені шрифти. Крім того, у лівому нижньому куті постійно блимає курсор, який мені здається відволікаючим.

Чи можу я використовувати 256 кольорів у консолі без fbterm / framebuffer?

Звідки береться межа 8 кольорів у консолі?



@muru - дякую за пропозицію. Я оновив своє запитання.
Мартін Вегтер

Звичайно, якщо ви встановите TERMна xterm-256colorдля Linux консолі, ви просто відкрити іншу банку з хробаками. Це посилання дає підказку.
Томас Дікі

RE: ОНОВЛЕННЯ У мене немає шрифту "некрасивий / зібраний", можливо, тому що я використовую інший шрифт. Це може бути неправильним $TERM(має бути fbterm перед початком роботи fbterm) або не 32-бітовим відео режимом або тим і іншим. Перед запуском вимкніть курсор консолі fbtermта ввімкніть його, як тільки ви там, використовуючи tput. unix.stackexchange.com/questions/220330/…
Пол Вратт

BTW Я також переглянув fbtermджерело, і було б просто (але забирає багато часу) конвертувати послідовності евакуаційного коду, щоб використовувати xterm-256colorзамість них ( fbterm-xterm). $TERMТакож повинні бути вбудованими з terminfoі termcapіменування ( fbterm-xterm-256colorабо fbterm-256color) для «слота» в існуючі сценарії оболонки. Зауважте, що fbtermвикористовується TERM=fbtermяк перемикач для вмикання 256 кольорового варіанту, інакше його 16 кольорів (або, можливо, такі самі, як основні).
Пол Вратт

Відповіді:


2

Актуальне питання складається з цих двох пунктів:

  • Чи можу я використовувати 256 кольорів у консолі без fbterm / framebuffer?

  • Звідки береться межа 8 кольорів у консолі?

До першого: мабуть, ні. У всіх запропонованих підходах використовується fbterm. До другого: він походить від опису терміналу (він же "терміна вступу"). Для консолі Linux із TERMвстановленим значенням linux, що говорить, що термінал підтримує 8 кольорів. tput отримує свою інформацію з термінальної бази даних.

В одному з пунктів цитованої теми йдеться про те, що fbterm використовує різні послідовності відтворення для встановлення кольорів, ніж xterm. Якщо це так (і зважаючи на схильність користувачів Emacs до жорсткого коду), для fbterm немає відповідного термінального запису.


За останні роки емулятор терміналу ядра Linux отримав додаткову підтримку SGR: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/…
JdeBP

1
впевнений - ви, можливо, не прочитали коментар до реєстрації: Через обмеження обладнання апаратними приставками VGA кольори * знижуються до 16 фонів та 8 фонів. На консолях fbdev можна було б підтримати їх без втрати якості, але додавши, що це вимагатиме досить великої кількості коду. *
Thomas Dickey

Я вже давно прочитав коментар, саме тому я написав, що отримав деяку додаткову підтримку СГР . (-: Але зауважте, що це не завжди обмеження до 8 кольорів, як ви писали тут у 2016 році.
JdeBP

Це все та ж палітра з 8 ANSI та 8 жирних / яскравих ANSI, як це було протягом 25+ років (а ncurses має запис linux-16color з 2009 року ).
Томас Дікі

Раніше я заглянув у джерело ядра (приблизно про час роботи ОП) і вважав, що це простий процес, що дозволяє 256 кольорів ( linux-256color). Цей патч ніколи не буде прийнятий вище за тією ж причиною, що і коментар Томаса Дікі, "Через обмеження обладнання". IE Linux повинен працювати на найнижчому загальному знаменнику.
Пол Вратт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.