ホフロマの下でWindowsコンソールを色付けする



明けましておめでとう、同僚。 Windowsのコンソールでは、テキストと背景の色を簡単に設定できることは誰もが知っています。 ただし、残りの14色も設定できることを知っている人はほとんどいないため、ウィンドウの色をサポートするコンソールアプリケーション(gitやmercurialなど)で作業を大幅に簡素化できます。 カットの下で、顔と写真で、色と私の苦労とPythonの結果のユーティリティについて話します。これにより、1つのコマンドでコンソールを色付けして、この白と青の恐ろしい恐怖を見ることができなくなります。







ANSIカラー





そこで、テキストと背景だけでなく、コンソールのすべての色を変更したいと思います。 まず、どのような色を見てみましょう。 Linuxおよびosxでは、すべてが単純です。ANSIColors標準があります。特定の文字シーケンスをコンソールに印刷すると、それに続くテキストは虹のすべての色でペイントされます。







残念ながら、ウィンドウの作成者はこの標準をサポートしていませんでしたが、類似したものがあります-テキストと背景を色付けできる16色。 単純なpythonプログラムがどのように見えるかを示します。



from ctypes import * windll.Kernel32.GetStdHandle.restype = c_ulong h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5)) for color in xrange(16): windll.Kernel32.SetConsoleTextAttribute(h, color) print "color {0}".format( color )
      
      











色は、控えめに言っても、悲しいです。 特に、ubuntuのデフォルトの配色と結果を比較する場合:







色を変える





コンソールの色設定は、期待どおりにレジストリに保存されます。 キーHKEY_CURRENT_USER \ Console、 "ColorTable00(黒、背景色)からColorTable15(明るい白)までの値に興味があります。 値:DWORD、0x00BBGGRR。 これらのマジックキーを変更し、Ubuntuの場合と同じものを取得します。 唯一の違いは、色の順序が異なることです。







目標は達成されていますか? そのようです。 しかし、そこには...



陰謀





新しい色で喜ぶ。 しばらくして、Windows 7またはWindows 8があり、「win + number」ホットキーを介してコンソールを呼び出すために、コンソールをタスクバーに接続することを理解しています。 「このプログラムをタスクバーに固定」して実行し、これを確認します。







この青い背景はどこから来たのですか? 実際、「win + r」でコンソールを起動すると、前のステップで色が設定されていることがわかります。 最も興味深いのは、コンソールアプリケーションをタスクバーに接続すると、Windowsがそのショートカット(拡張子が.lnkのファイル)を作成し、このショートカットに個人用の色設定を設定することです。 どうする python、小さなCOMを選択し、ショートカット設定を変更します。 これですべてが機能します。



約束された2回のクリック





プログラマーの資格を失わないように、上記のすべてをPythonの小さなモジュールとして設計しました。これはコマンドラインユーティリティとして使用できます。 既にpythonがインストールされている場合、私の傑作をインストールするには、次のコマンドを実行するだけです:



 pip install pywincmdtheme
      
      







Pythonがない場合は、ActivePythonアセンブリをインストールすることをお勧めします。Pythonに加えて、Windowsでの作業に役立つ定義済みの拡張機能も多数含まれています。 ホフロマの下にコンソールをペイントするユーティリティを使用する方法は? コマンドライン引数なしでユーティリティを実行すると、ユーザーのディレクトリで.Xresourcesファイルを検索し、そこから色を適用しようとします。 そのようなファイルがない場合、上記の例で示したubuntuの色が適用されます。 .Xresourcesファイルは、* nixが端末設定、特にカラースキームを保存するための標準的な方法です。 Googleを使用すると、美しい既製のスキームを見つけることができます。



ショートカットの操作はもう少し複雑です。ショートカットの設定を変更するには、コマンドラインスイッチ「--update-link」とショートカットへのフルパスを使用してユーティリティを呼び出す必要があります。 Windowsのタスクバーに接続されているプログラムのショートカットは、ディレクトリ「%USERPROFILE%\ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ User Pinned \ TaskBar」に保存されます。 タスクバーにアタッチされたPowerShellショートカットを変更する例:



 pywincmdtheme --update-link "%USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Windows PowerShell.lnk"
      
      







すべてが好きです。 再び来るすべてで、私は上記の誰かが役に立つことを願っています:)。



All Articles