Asciinema: Tangkap warna terminal asli

Dibuat pada 8 Agu 2012  ·  25Komentar  ·  Sumber: asciinema/asciinema

Anda bisa mendapatkan warna dengan beberapa kode konsol .. saya menulis contoh di sini https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
layar, tmux, dan konsol virtual tidak mendukung operasi ini.

feature request help wanted

Komentar yang paling membantu

@timofonic mohon jangan pernah lagi menyebutkan secara harfiah setiap orang yang telah berhubungan dengan sebuah repositori. Saya bahkan bukan kontributor di sini dan saya tidak punya "berita" untuk Anda.

Selain itu, jika ada yang memiliki "berita" tentang ini - atau 2 masalah lainnya yang Anda sebutkan sendiri dan banyak lainnya - itu akan diposting di sini sebagai komentar atau permintaan tarik yang menutup masalah ini. Jika Anda tidak melihat sesuatu yang relevan dengan masalah tersebut, anggaplah bahwa "tidak ada berita" untuk Anda.

Semua 25 komentar

juga beberapa program dapat mengubah warna di sana, misalnya cmatrixreloaded
ini adalah contoh bagaimana mereka melakukannya https://github.com/oblique/configs/blob/master/.zshrc#L160
benar-benar melihat fungsi ncmpcpp () dan wicd-curses () saya

Saya mencoba skrip Anda tetapi saya mendapatkan kesalahan berikut:

~ % get_term_rgb_color.py 1
Traceback (most recent call last):
  File "/home/kill/bin/get_term_rgb_color.py", line 30, in <module>
    os.write(fd, bytes("\033]4;%d;?\033\\" % int(x), "UTF-8"))
TypeError: str() takes at most 1 argument (2 given)

skrip bekerja di python3.

untuk python2 ubah barisnya menjadi:
os.write (fd, "\ 033] 4;% d;? \ 033 \"% int (x))

Saya berpikir tentang sth seperti ini untuk beberapa waktu. Terima kasih telah melakukan ini.
Sayangnya ini hanya berfungsi di bawah (u) rxvt dan xterm. Pada gnome-terminal, layar, tmux tidak. Jadi tidak banyak gunanya. Jika mungkin ada cara lain (atau tambahan) untuk mendapatkan info ini, saya akan dengan senang hati menggunakannya.
Atau mungkin ada beberapa cara untuk mendapatkan hanya info "apakah kita di bawah terminal fg terang / bg gelap atau di bawah fg gelap / bg terang".

Saya belum memeriksanya ... tapi mungkin sesuatu dari sini ? (awalnya dari jawaban stackoverflow ini)

Ia bekerja di gnome-terminal tetapi tidak di konsole.
Saya akan mencoba mencari cara lain.

Saya menemukan bahwa dengan tmux Anda dapat meneruskan kode konsol ke terminal dan saya memodifikasi skrip saya https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
Saya tidak berhasil melakukannya dengan layar.
Jika Anda memiliki pertanyaan, silakan tanyakan.

Maaf, saya lupa mendorong perubahan saya pada fungsi ncmpcpp () dan wicd-curses (), sekarang sudah diperbarui.

Saya baru saja memeriksanya di bawah urxvt, xterm, gnome-terminal dan tmux. Hanya di bawah gnome-terminal itu tidak berfungsi.
Apakah menurut Anda ini juga dapat berfungsi pada beberapa terminal OSX seperti Terminal.app atau ITerm2?

Saat ini saya sedikit merefaktor ulang perekam (di sini: https://github.com/sickill/ascii.io-cli/tree/split). Setelah saya selesai dengan pemfaktoran ulang, saya akan mencoba menggunakan kode yang Anda berikan di sini.

Terima kasih!

Saya tidak tahu tentang Terminal.app atau ITerm2, jika mereka mendukung perubahan warna itu akan berhasil ..

Hanya untuk referensi, saya juga menemukan ini: https://github.com/dranjan/termcolors
Tidak yakin apakah itu memberi kita lebih dari kode @oblique sekalipun.

Sepertinya https://github.com/dranjan/termcolors bergantung pada select.poll , yang sepertinya tidak berfungsi di OSX.

Gores itu, saya salah. @ sigmavirus24 menemukan bahwa ada masalah dengan alat yang melewatkan -1 * 2 sebagai nilai batas waktu, bukan hanya -1. Diperlukan penyelidikan lebih lanjut ... tetapi ini mungkin akan berhasil.

Perhatikan juga bahwa ketika saya mencoba ini di OSX + iTerm2 itu tidak benar-benar mengambil istilah warna dengan benar. Jadi bahkan dengan perbaikan itu, itu masih belum optimal karena C API yang mendasari yang digunakan termcolors ( select / select.poll ) tidak sefleksibel rasa * nix lainnya yang akan menerima negatif apa pun. nilai.

Jadi saya mengerjakan ini dengan @ sigmavirus24 dan menghasilkan ini: https://gist.github.com/joshuarh/7904813. Hal-hal berikut ini masih perlu dilakukan / dicek:

  1. Kirim info warna ke server
  2. Hapus warna default? atau menggunakannya sebagai pengganti?
  3. Pastikan warna latar belakang / latar depan sudah benar. Kami menggunakan "angka ajaib" di sini, tapi saya pikir angka-angka itu konstan, setidaknya untuk skema warna xresources / xdefaults.
  4. Pastikan web player dapat menangani apa yang direkam.

    • Saya pikir saya membaca pemutar yang digunakan situs ini kompatibel dengan vt100, atau sesuatu seperti itu. Jadi dapatkah kita mengirimkan kode pelarian dan membuatnya "berfungsi"? Atau apakah kita perlu mengubah warna menjadi hex terlebih dahulu? Jika yang terakhir, maka kita memiliki beberapa pekerjaan yang harus dilakukan. Saya tahu beberapa warna ditata dengan info rgb tepat di sana, jadi itu tidak sulit untuk diurai, tetapi milik saya di urxvt terlihat seperti ini: '\x1b[30m' , jadi saya tidak yakin bagaimana mengubahnya menjadi sesuatu yang kita dapat digunakan di web.

  5. Mengujinya di berbagai terminal. Saya tahu beberapa solusi lain tidak berfungsi pada berbagai terminal (yang berbasis VTE, Terminal.app, iTerm, rxvt, dll), jadi kita harus memastikan ini berfungsi sebelum menggunakannya secara berat.

Tampaknya tidak mudah mendapatkan skema warna terminal. Sebaliknya, dapatkah kita mengizinkan pengguna untuk menentukan skema warnanya dalam file JSON? Jika penerapannya dilakukan secara umum, akan sangat mudah untuk beralih ke teknik baru apa pun untuk menangkap warna terminal yang akan kita temukan nanti.

Sepertinya tidak mudah, tapi saya tidak yakin itu tidak bisa dilakukan. Saya rasa kita bisa merekam kode escape, kita hanya perlu mengubahnya kembali ke warna xterm.

OTOH, jika kami mengizinkan pengguna untuk menentukan warna mana yang mereka inginkan, itu akan menampilkan fitur dan bug yang menarik. Kami dapat membiarkan orang memilih skema mana yang ingin mereka lihat saat menjelajah, tetapi bergantung pada warna latar depan yang direkam, ini bisa menjadi masalah (misalnya, inilah tema default dengan warna latar depan terpisahkan dalam mode fallback: https: // asciinema .org / a / 2214).

Yang saya maksud sebenarnya adalah bahwa pengunggah harus menentukan skema warna. Mengenai sisanya, saya tidak tahu dan saya tidak benar-benar bisa menilai.

@losingkeys kita SUDAH merekam kode warna escape. Masalahnya mereka hanyalah angka tunggal seperti 1, 2 atau 3. Artinya merah, hijau dan kuning. Dan seterusnya. Orang-orang menggunakan skema warna yang berbeda di terminal mereka, tetapi sebagian besar skema mendekati warna xterm "asli" sehingga terlihat "ok" di sebagian besar kasus.

@losingkeys Membiarkan pengguna menentukan skema warnanya (katakanlah dalam format .Xresources) adalah hal yang mudah dilakukan dan saya sedang mempertimbangkan untuk melakukan hal itu. Jadi, jika Anda menggunakan solarized atau tema terminal lain yang sepenuhnya mengubah arti setiap warna, ini akan menjadi solusi untuk warna yang salah.

@mrabault solusi ideal adalah menggunakan perekam untuk mendeteksi dan mengunggah skema terminal, ya. Tetapi kami belum menemukan (belum!) Solusi yang cukup baik yang akan berfungsi untuk sebagian besar emulator terminal di berbagai OS.

Apakah ada kemajuan yang dicapai dalam hal ini, misalnya cabang dalam perjalanan?
Akankah menanyakan xrdb untuk warna menjadi pilihan? Ini bisa mengambil tema khusus (misalnya terpisahkan) secara otomatis.

@blueyed tidak ada kemajuan sejauh ini.

Mengkueri xrdb hanya akan masuk akal untuk xterm / rxvt / other-terminal-using-x-resources. Orang-orang menggunakan istilah berbasis libvte (Terminal Gnome, Terminal XFCE, Terminator, ...) dan terminal non-Linux (iTerm, Terminal.app pada OS X) juga.

@blueyed btw, Anda dapat mengubah tema untuk asciicast Anda, baik untuk seluruh akun (di halaman pengaturan akun Anda) atau per asciicast (di halaman edit asciicast). Misalnya, ini adalah asciicast Anda dalam solarized-dark: https://asciinema.org/a/13855?theme=solarized-dark

Ini akan menjadi fitur yang mematikan!

Kami sedang mendiskusikan versi 2 dari format asciicast di # 196, dan saya pikir menambahkan objek opsional colors ke meta-data, yang berisi teks latar depan / warna latar belakang dan palet untuk semua 8 (16) warna akan menyenangkan tambahan. Seperti yang dikatakan @mrabault , kita dapat menggunakan dan memperbarui teknik untuk mendapatkan warna, selama representasi palet di JSON tetap sama / kompatibel dengan pemutar web.

Adapun teknik sebenarnya, masalah ini sangat lama dan solusi terkait tampaknya hilang. Saya menginginkan sesuatu yang berfungsi di semua platform, dan saya ragu-ragu untuk menyelesaikan solusi yang tidak 100% berfungsi. Sekarang saya pikir lebih baik hanya mendukung apa yang kita bisa sekarang, memperlakukan palet colors sebagai opsional, dan kembali ke tema default pemain ketika tidak ada di JSON (untuk alasan apa pun).

Adakah yang punya sesuatu yang mengerjakan Python 3.3+?

@timofonic mohon jangan pernah lagi menyebutkan secara harfiah setiap orang yang telah berhubungan dengan sebuah repositori. Saya bahkan bukan kontributor di sini dan saya tidak punya "berita" untuk Anda.

Selain itu, jika ada yang memiliki "berita" tentang ini - atau 2 masalah lainnya yang Anda sebutkan sendiri dan banyak lainnya - itu akan diposting di sini sebagai komentar atau permintaan tarik yang menutup masalah ini. Jika Anda tidak melihat sesuatu yang relevan dengan masalah tersebut, anggaplah bahwa "tidak ada berita" untuk Anda.

@timonic mati di neraka

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ThomasWaldmann picture ThomasWaldmann  ·  3Komentar

TyrfingMjolnir picture TyrfingMjolnir  ·  7Komentar

deeplook picture deeplook  ·  10Komentar

bashfulrobot picture bashfulrobot  ·  11Komentar

omaraboumrad picture omaraboumrad  ·  10Komentar