Прозрачная палитра в гном-терминале

Я использую прозрачный фон в gnome-terminal,

Для работы мне часто нужно SSH на Windows-машины. OpenSSH покорно отправляет цвета фона ANSI, что дает... не идеальный опыт, когда смешивается с прозрачностью терминала.

Пример того, как это выглядит, можно увидеть здесь:

Аналогичный результат можно получить, запустив aptitude, например.

Есть ли способ сделать фоновую палитру прозрачной (или хотя бы игнорировать цветовые команды, похожие на xterm -cm)? Я попытался ввести прозрачный альфа-канал в формате RGBA и ARGB в настройках терминала, но похоже, что терминал просто игнорирует их.

Я был бы готов взломать источник терминала, если бы не было готового решения, и в этом случае указатель на то, где искать, был бы очень полезен.

1 ответ

Решение

Как подробно описано на https://superuser.com/questions/1164104/semi-transparent-colors-in-terminal, цвета палитры не могут содержать альфа-канал. Только фон по умолчанию может быть прозрачным.

(Просто отметим, что последние версии основного терминала gnome совсем не поддерживают прозрачность. Раньше в старых версиях она была, и некоторые дистрибутивы, включая Ubuntu, исправляли ее, чтобы вернуть.)

"OpenSSH покорно отправляет цвета фона ANSI", - я в этом серьезно сомневаюсь. ssh отвечает за передачу потока данных по проводам таким образом, чтобы он прибыл в пункт назначения в точности так, как он был отправлен отправителем (конечно, после шифрования на стороне отправителя и дешифрования на стороне получателя). Это не эмулятор терминала, он не имеет представления о escape-последовательностях, цветовых кодах ANSI и подобных. Даже не гарантируется, что все, что отправит ssh, попадет в эмулятор терминала на принимающей стороне. Например, подумайте о scp, было бы странно, если бы вы не могли безопасно копировать файлы, содержащие некоторые экранирования ANSI. SSH, безусловно, оставляет ваши данные без изменений.

На вашем удаленном хосте должна быть какая-то настройка оболочки или аналогичная, которая решит использовать цвета, и если бы у вас была такая же настройка локально, она была бы такой же сломанной для вас без ssh в игре. Вы должны определить, кто и где генерирует эту последовательность, как часть вашей процедуры входа в систему или вашего приглашения.

Хотя это не ясно из вашего скриншота и вашего описания, я подозреваю, что непрозрачные серые линии начинают появляться, когда вы впервые достигаете нижней части терминала и содержимое начинает прокручиваться. Это связано с ошибкой "bce" (стирание цвета фона) большинства графических эмуляторов терминала. gnome-terminal (на самом деле основной vte виджет) изменил свое поведение с vte-0.44, который появился в Ubuntu Yakkety. Если вы используете Xenial, попробуйте: обновите пакет lilbvte-2.91-0 с Yakkety, закройте все окна gnome-терминала и начните снова. Предположительно, вы увидите другой опыт, который вы хотите увидеть. Однако обратите внимание, что новое поведение gnome-Terminal (vte) не соответствует стандарту, и вы все равно увидите старое поведение в других эмуляторах, например, xterm. Подробная информация об изменениях в терминале gnome, связанных с функцией bce: https://bugzilla.gnome.org/show_bug.cgi?id=754596.

Другие вопросы по тегам