Я использую Mac OSX Yosemite, и я использую istats
для получения температуры процессора:
Я хотел поместить температуру процессора в строку состояния tmux, поэтому я сделал следующий конфиг tmux:
Как вы можете видеть, когда я выполнил :source-file ~/.tmux.conf
, tmux печатает коды ANSI как текст, а не отображает цвета. Как заставить tmux отображать коды цветов, а не печатать их как текст?
Я решил проблему, написав простой скрипт на Python для замены кодов ANSI цветными переменными tmux.
#!/usr/local/bin/python
s = raw_input("")
s = s.replace('\x1b[32m', '#[fg=colour10]')
s = s.replace('\x1b[93m', '#[fg=colour11]')
s = s.replace('\x1b[0m', '#[fg=colour255]')
print s
Я просто передаю вывод в скрипт: istats | grep "CPU temp" | ansi2tmuxcolors.py
Я обобщил ответ Subliminalmau5, написав отдельную оболочку с
sed -r 's,\x1b\[38;5;([0-9]+)m,#[fg=colour\1],g'|sed -r 's,\x1b\[1m,#[bold],g'|sed -r 's,\x1b\[0m,#[default],g'
, который перевел все 256 цветов ANSI в tmux.