質問: ansiカラーのrgb値を取得するためのxterm制御シーケンス 肉(一部の)端末では、次のようなシーケンスを使用できます。printf "\e]4;3;rgb:cc/78/33\e\\" ansiカラーパレットの3番目の色を#cc7833で表されるrgb値に設定します。あなたは反対をすることができますか? 3番目の(まあ、実際には)色の現在のrgb値(任意の形式)を取得できますか?どうして?私の場合、これを実行したい理由は、カラーテーブル全体を(意図的に)混乱させる前に保存できるようにするためです。 rgbの正確なカラーテーマを使用してターミナルにコードをリストできるようにしたいのですが、私をアナルと呼んでください。これを行うには、上記のように、ターミナルカラーテーブルのカラー定義をオーバーライドする必要があります。私にとって、問題は解決されました。しかし、この機能を多くの人が使用する既存のオープンソースプロジェクト(pry)に追加したいので、プログラムセッションのテーマの色を設定する前に、カラーパレットの現在の状態を保存して、それらを切り替えることができる必要があります。後で戻って。一部の端末では設定にこれがあり、一部のシステムでは構成ファイルにこれがあることを知っています。しかし、私は一般的で、システム間で機能するものが必要です。理想的には、上記の方法でそれらを設定することをサポートするすべてのシステム:)ボーナス現在、色の変更は、ターミナルを閉じて再起動した後でも、システム全体、すべてのターミナルセッションに影響します(これはos x mountain lionでiterm2を使用しています)。効果をローカルにすることができれば、たとえばサブシェルに対して、プロセスが終了したときに変更がサブシェルで消滅するため、問題は解消されます。セッションがクラッシュした場合から保護するので、さらに良いです...
回答: 私が使用した古典的な方法は、新しいクラスのxrdbプロパティのセットを定義することでした---そのように:( linuxでは、$ home/.xdefault -hostname、ymmvに配置する必要があります)myxterm*foreground: red; myxterm*color11: navyblue; 必要に応じて(不明ですが、システムによって異なります)、xrdb -mergeを使用してファイルをロードします。その後、次のコマンドで端末を起動します。xterm -class myxterm これで、通常の色に影響を与えないプライベートカラーのセットを備えた端末ができました。さて、あなたが望むのがあなたのプログラムを同じターミナルに実行することであるなら、私は本当にそれをする方法を知りません...