Asciinema: 元の端末の色をキャプチャする

作成日 2012年08月08日  ·  25コメント  ·  ソース: asciinema/asciinema

あなたはいくつかのコンソールコードで色を得ることができます..私はここに例を書きましたhttps://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
screen、tmux、および仮想コンソールはこの操作をサポートしていません。

feature request help wanted

最も参考になるコメント

@timofonicは、リポジトリと接触したことのあるすべての人に文字通り言及することは二度とありません。 私はここでは寄稿者でさえありませんし、あなたのための「ニュース」もありません。

余談ですが、誰かがこれについて「ニュース」を持っていた場合、またはあなたが自分自身や他の多くの人に言及した他の2つの問題については、この問題を閉じるコメントまたはプルリクエストとしてここに投稿されます。 問題に関連するものが何も表示されない場合は、「ニュースがない」と想定してください。

全てのコメント25件

また、cmatrixreloadedなど、一部のプログラムでは色を変更できます。
これは彼らがそれを行う方法の例ですhttps://github.com/oblique/configs/blob/master/.zshrc#L160
実際に私のncmpcpp()関数とwicd-curses()関数を見てください

スクリプトを試しましたが、次のエラーが発生します。

~ % 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)

スクリプトはpython3で機能します。

python2の場合、行を次のように変更します。
os.write(fd、 "\ 033] 4;%d;?\ 033 \"%int(x))

私はしばらくの間、このようなsthについて考えていました。 これを持ってきてくれてありがとう。
残念ながら、これは(u)rxvtおよびxtermでのみ機能します。 gnome-terminal、screen、tmuxではそうではありません。 したがって、あまり役に立ちません。 この情報を取得する他の(または追加の)方法がある場合は、喜んで使用します。
または、「明るいfg /暗いbg端末の下にあるのか暗いfg /明るいbgの下にあるのか」という情報だけを取得する方法があるかもしれません。

私はそれを調べていません...しかし、多分ここから何か? (元々、このスタックオーバーフローの回答を形成し

gnome-terminalでは機能しますが、konsoleでは機能しません。
私は他の方法を見つけようとします。

tmuxを使用すると、コンソールコードを端末に転送できることがわかり、スクリプトを変更しましたhttps://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
私はスクリーンでそれをすることができませんでした。
ご不明な点がございましたらお問い合わせください。

申し訳ありませんが、ncmpcpp()関数とwicd-curses()関数の変更をプッシュするのを忘れていました。現在は更新されています。

urxvt、xterm、gnome-terminal、tmuxで確認しました。 gnome-terminalの下でのみ機能しません。
これは、Terminal.appやITErm2などのOSX端末でも機能すると思いますか?

現時点では、レコーダーを少しリファクタリングしています(ここ:https://github.com/sickill/ascii.io-cli/tree/split)。 リファクタリングが完了したら、ここで提供したコードを使用してみます。

ありがとう!

Terminal.appまたはITErm2についてはわかりませんが、色の変更がサポートされていれば機能します。

参考までに、私もこれを見つけました: https
ただし、 @ obliqueのコード以外のものが得られるかどうかはわかりません。

https://github.com/dranjan/termcolorsselect.pollに依存しているようですが、OSXでは機能しないようです。

それをひっかいて、私は間違っていた。 @ sigmavirus24は、ツールが-1ではなく-1 * 2をタイムアウト値として渡すことに問題があることを

また、OSX + iTerm2でこれを試したところ、実際には用語の色が正しく認識されなかったことにも注意してください。 したがって、それが修正されたとしても、termcolorsが使用する基盤となるC API( select / select.poll )は、ネガティブを受け入れる他の* nixフレーバーほど柔軟ではないため、最適ではありません。値。

だから私は@ sigmavirus24でこれに取り組み、これを思いついた: https//gist.github.com/joshuarh/7904813 以下はまだ実行/チェックする必要があります:

  1. サーバーに色情報を送信する
  2. デフォルトの色を削除しますか? またはフォールバックとしてそれらを使用しますか?
  3. 背景/前景色が正しいことを確認してください。 ここでは「マジックナンバー」を使用していますが、少なくともxresources / xdefaultsのカラースキームでは、一定であると思います。
  4. Webプレーヤーが記録された内容を処理できることを確認してください。

    • 私は、サイトが使用しているプレーヤーがvt100と互換性があるか、またはその効果があるものを読んだと思いました。 では、エスケープコードを送信して、「正常に機能」させることはできますか? または、最初に色を16進数に変換する必要がありますか? 後者の場合は、やるべきことがいくつかあります。 いくつかの色がそこにあるrgb情報でレイアウトされていることを知っているので、解析するのは難しいことではありませんが、urxvtで私のものは次のようになります: '\x1b[30m' 、それでそれを私たちのものに変換する方法がわかりませんWeb上で使用できます。

  5. さまざまな端末でテストしてください。 他のソリューションのいくつかがさまざまな端末(VTEベースの端末、Terminal.app、iTerm、rxvtなど)で機能しなかったことを知っているので、頻繁に使用する前にこれが機能することを確認する必要があります。

端末のカラースキームを取得するのは簡単ではないようです。 代わりに、ユーザーがJSONファイルで自分のカラースキームを指定できるようにすることはできますか? 実装が十分に一般的に行われている場合は、後で発見する端末の色をキャプチャするために、新しい手法に切り替えるのは簡単です。

簡単なことではないようですが、実行できないとは思いません。 エスケープコードを記録できると思います。それらをxtermの色に戻す必要があります。

OTOH、ユーザーが希望する色を指定できるようにすると、興味深い機能やバグが発生する可能性があります。 ブラウジング時に表示するスキームを選択できるようにすることもできますが、記録された前景色によっては、これが問題になる可能性があります(たとえば、フォールバックモードでのソラリゼーションされた前景色のデフォルトテーマは次のとおりです:https:// asciinema .org / a / 2214)。

私が本当に意味したのは、カラースキームを指定するのはアップローダーにあるべきだということです。 残りはわからないし、判断もできません。

@losingkeysすでにエスケープカラーコードを記録しています。 問題は、1、2、3のような単一の数字であるということです。これらは、赤、緑、黄色を意味します。 等々。 人々は端末でさまざまな配色を使用していますが、ほとんどの配色は「元の」xtermの色に近いため、ほとんどの場合「問題ない」ように見えます。

@losingkeysユーザーが自分の配色(たとえば.Xresources形式)を指定できるようにするのは簡単なことであり、私はそれを行うことを検討しています。 したがって、各色の意味を完全に変更するソラリゼーションまたはその他の端末テーマを使用する場合は、間違った色の解決策になります。

@mrabaultの理想的な解決策は、レコーダーを使用して端末スキームを検出してアップロードすることです。 しかし、さまざまなOSの端末エミュレーターの大部分で機能する十分なソリューションは(まだ!)見つかりませんでした。

この点で、たとえば外出先で進歩がありましたか?
xrdbに色を照会することはオプションでしょうか? これにより、カスタムテーマ(例:ソラリゼーション)を自動的に取得できます。

@blueyedこれまでのところ進展はありません。

xrdbクエリ

@blueyedところで、アカウント全体(アカウント設定ページ)またはasciicastごと(asciicast編集ページ)で、asciicastのテーマを変更できます。 たとえば、これはsolarized-darkでのあなたのasciicastです: https ://asciinema.org/a/13855?theme = solarized-dark

これはキラー機能になります!

#196でasciicast形式のバージョン2について説明していますが、オプションのcolorsオブジェクトをメタデータに追加して、テキストの前景色/背景色とすべての8(16)色のパレットを含めるとよいと思います。添加。 @mrabaultが言ったように、JSONのパレット表現がWebプレーヤーと同じ/互換性を維持している限り、色を取得する手法を使用および更新できます。

実際のテクニックに関しては、この問題は非常に古いものであり、リンクされたソリューションはなくなっているようです。 私はすべてのプラットフォームで機能するものが欲しかったので、100%ではないソリューションに落ち着くのをためらっていました。 今、私たちが今できることをサポートし、 colorsパレットをオプションとして扱い、JSONにない場合はプレーヤーのデフォルトテーマにフォールバックする方が良いと思います(何らかの理由で)。

Python 3.3以降で作業している人はいますか?

@timofonicは、リポジトリと接触したことのあるすべての人に文字通り言及することは二度とありません。 私はここでは寄稿者でさえありませんし、あなたのための「ニュース」もありません。

余談ですが、誰かがこれについて「ニュース」を持っていた場合、またはあなたが自分自身や他の多くの人に言及した他の2つの問題については、この問題を閉じるコメントまたはプルリクエストとしてここに投稿されます。 問題に関連するものが何も表示されない場合は、「ニュースがない」と想定してください。

@timofonicは地獄で死ぬ

このページは役に立ちましたか?
0 / 5 - 0 評価