OS X アプリGeekToolを使用して、色付きのテキスト出力をデスクトップに印刷しようとしています。GeekTool を使用すると、「geeklets」と呼ばれる小さなウィンドウをデスクトップに配置できます。Geeklet の 1 つは、シェル コマンドの出力を表示します。
目的の出力は、Ruby スクリプトで解析しているテキスト ファイルから取得する必要があります。ruby gem colorizeを使用して、Ruby の文字列の周りに ANSI エスケープ シーケンスを追加しています。私の目標は、これらの文字列を Geektool に出力し、色付きのテキストを表示することです。
ターミナルで Ruby スクリプトを実行すると (Terminal と iTerm2 の両方で、zsh と bash の両方を使用)、出力は完全に適切に色付けされます。しかし、GeekTool でスクリプトを実行すると、そうではありません。エスケープ シーケンスは出力に表示されませんが、色はありません。このシェル コマンドを実行すると、GeekTool が ANSI エスケープ シーケンスをサポートしていることはわかっています。
printf "\e[0;35;49mabcd\e[0m"
カラー化された GeekTool 出力が得られます。 echo $SHELL
また、GeekTool は私が普段使用しているのと同じ zsh 実行可能ファイルを使用していることもわかります。しかし、何らかの理由で、私の Ruby スクリプトはカラー化された出力を印刷しません。代わりに、単色の出力が表示されますが、エスケープ シーケンスは取り除かれています。
私のスクリプトは Ruby を使用しputs
て、エスケープ シーケンスを含む文字列を出力します。に切り替えてみましたp
。ターミナルで実行すると、エスケープ シーケンスがそのままの状態で色付けされていない出力が生成されます。GeekTool で実行すると、色付けされていない出力も得られますが、エスケープ シーケンスは再び消えてしまいました。
私のエスケープシーケンスがどこに行くのか知っている人はいますか?