Gnome-терминал не работает должным образом с экранами-256 цветов
Сегодня я заметил, что у меня нет поддержки 256 цветов в Weechat. Я решил, что это будет быстрое решение. Это не так.
Первое, что я погуглил, было то, как проверить поддержку цвета в терминале. Я установил colortest
на моей локальной машине, и когда я запускаю его, он показывает мне 256 цветов. Тем не менее, когда я бегу echo $TERM
это продолжало показывать мне xterm
,
Поскольку я не знаю подробностей обо всех этих вещах, я попытался настроить его так, чтобы он соответствовал каждому учебнику по теме. Они все говорят, что это должно дать мне screen-256colors
,
Первое, что я сделал, это добавил это в мой .zshrc
файл:
# If the $term variable is xterm, change it to 256 colors!
if [ "$TERM" = "xterm" ]; then
# No it isn't, it's gnome-terminal
export TERM="xterm-256color"
fi
Это говорит xterm-256colors
вместо screen-256colors
, Это нормально, какой-то учебник сказал мне сделать это.
Я начинаю новый терминал, echo $TERM
и я замечаю, что оно действительно установлено. Зажги tmux
и посмотреть, что это говорит мне, когда я печатаю echo $TERM
, Это говорит screen
, Так что это должно показать мне screen-256colors
чтобы он работал правильно в выходные. Итак, затем я попытался изменить xterm-256colors
в моем .zshrc
подать в screen-256colors
но когда я делаю это, я получаю искаженный вывод. Смотрите скриншот.
Итак, затем я погуглил, как изменить переменную для tmux. Я нашел эту ссылку. Он показывает возможность настроить tmux на использование 256 цветов. Эта опция показана практически во всех уроках.
set -g default-terminal "screen-256color"
Я попробовал, но это ничего не изменило. Так что я погуглил еще немного и нашел этот вопрос. Цитата:
Tmux довольно требователен к правильной настройке терминала. Если вы можете, установите значение термина в конфигурации терминала gnome, а не в вашем.bashrc. В противном случае окружите эти настройки галочкой для "
screen
" или же "screen-256color
"СРОК, и не сбрасывайте их в этом случае.
Хорошо, я понимаю, что вне tmux
Я не должен использовать screen*
значения для $TERM
, Это нормально, потому что установлено xterm-256colors
, Тогда ясно говорится, что я не должен отменять $TERM
переменная, если она установлена в screen
, Что я убедился в использовании if
тест по моему .zshrc
файл.
Больше всего меня смущает то, что 256 цветов на самом деле работают в tmux. Смотрите скриншот ниже. Когда я бегу echo $TERM
внутри Tmux это показывает screen
, Когда я бегу colortest-256
он показывает мне все цвета правильно. Тем не менее, я думаю, что выходной базируется на $TERM
переменная для отображения цветов. И потому что я запускаю это внутри tmux
с $TERM
установлен в screen
Предполагается, что у меня нет поддержки 256 цветов.
Я нахожусь в тупике о том, как решить эту проблему. Все, что я хотел, было несколько цветов в выходные дни:>
Для полноты ниже мои два файла конфигурации.
.zshrc
# Path to your oh-my-zsh installation.
export ZSH=/home/christophe/.oh-my-zsh
ZSH_THEME="flazz"
plugins=(git command-not-found common-aliases dircycle lein)
# Show dots for progress
COMPLETION_WAITING_DOTS="true"
##########
## PATH ##
##########
# Export directory if it exists.
#if [ -d "/usr/local/go/bin" ]; then
# export PATH=$PATH:/usr/local/go/bin
#fi
#############
## ALIASES ##
#############
alias randompass="< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;"
############
## TWEAKS ##
############
# Disable shared history
setopt no_share_history
# Start existing or new tmux session each shell startup
#[[ $TERM != "screen" ]] && exec tmux attach -d
alias chat='tmux attach -dt weechat || tmux new -s weechat \; new-window htop'
# If the $term variable is xterm, change it to 256 colors!
if [ "$TERM" = "xterm" ]; then
# No it isn't, it's gnome-terminal
export TERM="xterm-256color"
fi
######################
# User configuration #
######################
export PATH="/home/christophe/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
source $ZSH/oh-my-zsh.sh
.tmux.conf
# 256 color support
set -g default-terminal "screen-256color"
1 ответ
Прежде всего, я хотел бы подтвердить то, что вы уже поняли, а именно, что прямо под gnome-terminal
(то есть вне tmux
или же screen
) вы должны установить TERM=xterm-256color
тогда как внутри tmux
или же screen
должно быть установлено TERM=screen-256color
,
Видимо твой .zshrc
сегмент правильно устанавливает его для оболочки, которая запускается непосредственно gnome-терминал.
Я не уверен, что нужно положить в .tmux.conf
Я решил это в моем .bashrc
аналогично вашему .zshrc
фрагмент для xterm-256color. Я также удаляю TERMCAP
который установлен screen
и вызывает некоторые проблемы, но, по-видимому, tmux
не устанавливает его, так что это не должно иметь никакого значения для вас.
if [ "$TERM" = "xterm" ]; then
export TERM=xterm-256color
fi
if [ "$TERM" = "screen" -o "$TERM" = "screen-256color" ]; then
export TERM=screen-256color
unset TERMCAP
fi
Решает ли это проблему для вас?
Кстати, вместо этого сниппеты копируют ваши .tmux.conf
также устанавливает это правильно для меня (на Vivid), так что вы на правильном пути, это должно работать. Может быть, есть что-то еще от вашего zsh (например, глобальный конфиг или oh-my-zsh), который возвращается к 8/16-цветному TERM=screen
?