Определите цвет фона терминала / TTY во время выполнения - PullRequest
0 голосов
/ 25 апреля 2018

Использование библиотеки мела для стилизации / раскрашивания терминала.

import chalk from 'chalk';

если я использую:

console.log(chalk.blue('foobar'));

, который полностью читается в терминале со светлым фоном, но абсолютно не читается в терминале с темным фоном.

Есть ли способ определения цвета фона терминала во время выполнения?


Пример:

Уровень журнала "npm notice" является причиной этой проблемы:

enter image description here

Трудно читать синий на черном.

1 Ответ

0 голосов
/ 07 мая 2018

Ниже приведен общий ответ о последовательности ANSI Escape в tty контексте .

Чтобы выделить определенную последовательность, поменяв местами задний план и передний план, чтобы она оставалась читаемой на всех цветовых схемах, используйте код 7 Обратное видео .

Таким образом, нет необходимости предварительно знать палитру и адаптироваться.

Пример в bash , с использованием обратного видео:

echo -e "\033[7mHello world\e[0m"

Это может быть цепочка, обратное видео и красный фон:

echo -e "\033[31;7mHello world\e[0m"

Это всегда будет читаемо на любом фоне, например, во второй строке этого gif:

enter image description here

Обратное видео обычно используется в программах для визуальной помощи выделить выбор, который был сделан в качестве помощи в предотвращении ошибки описания, когда предполагаемое действие выполняется над объектом это не то, что предполагалось. Это чаще встречается в современном настольном компьютере среды, чтобы изменить фон на другие цвета, такие как синий или использовать полупрозрачный фон для «выделения» выделенного текста. На терминале, понимающем escape-последовательности ANSI, обратное видео функция активируется с помощью управляющей последовательности CSI 7 м (что равно SGR 7 ). https://en.wikipedia.org/wiki/Reverse_video

Из моего собственного ответа: Как изменить цвет вывода echo в Linux , вопрос с большим количеством информации о ANSI-последовательностях .

...