GNU/Linux >> Belajar Linux >  >> Linux

Dukungan Tmux, Term Dan 256 Warna?

Pengantar

Pertanyaan saya muncul dari perlunya memahami mengapa Saya punya sekarang (setelah beberapa kali percobaan) Terminal dan tmux mendukung 256 warna dan tput colors memberitahuku hanya ada 8 dari mereka.

Latar Belakang

Mari kita mulai dari awal.

Saya menggunakan Ubuntu kotak, Guake , tmux , Vim dan saya suka tema Solarized . Mereka terlihat sangat buruk, jadi saya memutuskan untuk mengaktifkan dukungan 256 warna dan bermain-main sedikit.

Mari kita lihat apa yang terjadi pada Terminal saya . tput colors katanya ada 8 warna. Saya pribadi mengaturnya menjadi ungu, di sebelah kiri, dan tentu saja di sebelah kanan kita memiliki 2 warna biru yang berbeda. $TERM kata xterm . (Untuk memiliki ls . berwarna Saya eval ini di .bashrc saya .)

Vim juga terlihat baik-baik saja, meskipun saya menyebutnya dengan 256 bendera di lingkungan di mana 256 warna tidak didukung.

set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Satu-satunya orang yang mengeluh tentang ruang warna yang berkurang adalah tmux . Memanggil tmux memberikan hasil yang diharapkan "salah".

Tapi memanggil tmux dengan -2 flag membuat semuanya bekerja dengan baik, secara ajaib .

Sekarang satu-satunya hal yang saya mengerti adalah bahwa -2 setara dengan export TERM=screen-256color (sumber).

Guake berperilaku analog dengan Terminal dan keduanya menjawab xterm untuk pertanyaan echo $TERM .

Pertanyaan

Pada dasarnya, adakah yang mengerti mengapa semuanya berfungsi meskipun tidak?

  • Apakah saya sadis karena saya mengeluh mengapa semuanya berhasil? Mungkin.
  • Apakah ada alasan yang lebih baik? Tentu:Saya ingin memperbaiki tampilan kotak Ubuntu lainnya di kantor saya, dan saya ingin memahami mengapa sesuatu bekerja atau tidak.

Eksperimen tambahan

Menjalankan skrip ini (sedikit dimodifikasi) di xterm saya memberikan hasil berikut:256 warna, tetapi hanya 16 yang ditampilkan dengan benar.

Kemudian, mengubah profil terminal, juga 16 warna ini berubah.

Tes lainnya menyusul.

Dari kiri ke kanan, atas ke bawah, kami memiliki Solarisasi tema warna, dircolor ansi-dark dan 256dark , lalu default (Tango ) skema warna, dircolor ansi-dark dan 256dark .

Pengamatan :secara teori dircolor ansi-dark di Solarisasi skema warna harus cocok dengan dircolor 256dark . Ini tidak jelas terjadi untuk file terdaftar tertentu. Sebaliknya, ini cukup terjadi ketika di direktori kerja ada folder , file teks dan tautan simbolik . Kesimpulan :tidak banyak perhatian yang diberikan saat menyandikan 256dark warna.

Kesimpulan awal

xterm mendukung 256 warna, terlepas dari apa tput colors mengatakan. Program dapat merujuk ke ansi palet (dapat disesuaikan oleh pengguna) atau tentukan warnanya, pilih dari total 256 warna.

Jawaban yang Diterima:

Ada beberapa informasi tentang dukungan 256-warna di FAQ tmux.

Terkait:Daftar shell yang mendukung kata kunci `local` untuk mendefinisikan variabel lokal?

Mendeteksi jumlah warna yang didukung terminal sayangnya tidak mudah, karena alasan historis. Lihat Memeriksa berapa banyak warna yang didukung emulator terminal saya untuk penjelasan. Ini berarti bahwa

  • tmux tidak dapat dengan andal menentukan apakah terminal mendukung lebih dari 8 warna;
  • tmux tidak dapat berkomunikasi dengan andal ke aplikasi yang mendukung lebih dari 8 warna.

Saat Anda berada di tmux, terminal yang berinteraksi dengan Anda adalah tmux. Itu tidak mendukung semua urutan kontrol xterm. Secara khusus, ini tidak mendukung OSC 4 ; … urutan kontrol untuk menanyakan atau mengatur nilai warna. Anda perlu menggunakannya saat menjalankan langsung di xterm, di luar tmux.

Jika Anda menjalankan tmux -2 , kemudian tmux memulai dengan dukungan 256 warna, meskipun terminal Anda tidak mendukung 256 warna (yang cukup umum).

Secara default, tmux mengiklankan dirinya sebagai screen tanpa dukungan 256 warna. Anda dapat mengubah nilai TERM di .tmux.conf untuk menunjukkan dukungan 256 warna:

set -g default-terminal "screen-256color"

Anda dapat menggunakan TERM=xterm-256color atau TERM=screen-256color di Ubuntu. Nilai-nilai ini hanya akan menyebabkan masalah jika Anda masuk ke mesin jarak jauh yang tidak memiliki entri termcap/terminfo untuk nama-nama ini. Anda dapat menyalin entri ke direktori home Anda pada mesin jarak jauh; ini berfungsi dengan sebagian besar implementasi terminfo modern.

# From the Ubuntu machine to a machine that doesn't have *-256color terminfo entries
ssh somewhere.example.com mkdir -p .terminfo/s .terminfo/x
scp -p /lib/terminfo/s/screen-256color somewhere.example.com:.terminfo/s/
scp -p /lib/terminfo/x/xterm-256color somewhere.example.com:.terminfo/x/

Linux
  1. RedHat Dan SUSE Diumumkan Untuk Menarik Dukungan Untuk OpenLDAP

  2. Bagaimana Mengkompilasi dan Menginstal Python dengan Dukungan OpenSSL?

  3. Mendapatkan 256 Warna Untuk Bekerja Di Tmux?

  1. Medleytext – Aplikasi Pencatat yang Intuitif dan Bergaya untuk Pemrogram

  2. tmux:hang dan tidak memuat, dan tidak menanggapi perintah opsi apa pun

  3. Enkripsi SandForce SSD - keamanan dan dukungan

  1. Berbagi Sesi Terminal Linux Dengan Tmux dan Layar

  2. Emulator Terminal Apa yang Mendukung Mode Kontrol Tmux?

  3. Menambahkan repo dan cabang Git ke baris status Tmux