新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

WSLのWindowsのフォルダの色が見づらいのを直す

WSL(Windows Subsystem for Linux)のファイルやフォルダはWSL内で閉じていて、エクスプローラーなど、WSLの外からはアクセスできません。

なので、WSLとWindowsの両方からアクセスできる場所として、Windowsのフォルダをシンボリックリンクで参照して使っています。

便利でよく使っているのですが、問題があって、「ls」でファイル一覧を見た時、Windowsのフォルダの色が、緑背景に青文字でとても見づらいのです。

WSLのWindowsのフォルダの色が見づらいのを直す

原因

Windowsのフォルダ・ファイルは、WSLから見ると、other userの書き込み権限がついてしまいます。

そして、「ls」のデフォルトのカラー設定では、other userの書き込み権限がついたフォルダは、緑背景に青文字になっているためです。

なので、「ls」のカラー設定を変更して対処します。

手順

流れ

  • 「ls」のカラー設定は、環境変数「LS_COLORS」で行います
    • 「LS_COLORS」を直接編集してもいいのですが、ここでは、設定をやり易くするコマンド「dircolors」を使います
  • 「dircolors」コマンドは
    • デフォルトのカラー設定を分かり易い形式で出力してくれます
    • 出力したのと同じ形式のカラー設定ファイルを読み込んで、「LS_COLORS」変数を設定してくれます

下記のような流れになります。

  1. 「dircolors」で一旦設定をファイルに出力
  2. 好みの色になるようファイルを編集
  3. シェルの起動スクリプトから「dircolors」で編集したファイルを読み込んで、「LS_COLORS」を設定

LSカラー設定ファイルを出力

dircolors -p > ~/.dircolors

LSカラー設定ファイルを編集

other userの書き込み権限がついたフォルダは「OTHER_WRITEBLE」で、その値は「34;42」=「文字青;背景緑」となっています。

...
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
...

ここでは「01;32」=「ボールド;文字緑」としてみました。

...
OTHER_WRITABLE 01;32 # dir that is other-writable (o+w) and not sticky
...

色の設定方法

色の設定方法は、出力された設定ファイルのコメントに記載されています。ファイル・ディレクトリ等の種類別(OTHER_WRITEBLE等)に「文字種類(Attribute codes)」「文字色(Text color codes)」「背景色(Background color codes)」を設定でき、設定値は「;」でつなぎます。(3つ全て設定する必要はありません)

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

LS_COLORS設定

dircolors -b [設定ファイルパス]で、LS_COLORSを設定するコードが出力されるので、下記を「.bashrc」などに追記します。

eval $(dircolors -b ~/.dircolors)

以上で完了です。シェルを立ち上げ直すと、Windowsのフォルダが緑文字になっています。

WSLのWindowsのフォルダの色が見づらいのを直す

おまけ

▼追記 2019/06/26(ここから)

Windows TerminalがMicrosoft Storeに上がっていたのでインストールしてみました。

WSLのWindowsのフォルダの色が見づらいのを直す

カラーテーマ使えますね。これで安心して正式リリースを待てます。

WSLのWindowsのフォルダの色が見づらいのを直す

設定は下記記事を参考にしました。テーマ名にスペースが必要な場合があるので注意です。

https://www.howtogeek.com/426346/how-to-customize-the-new-windows-terminal-app/

▲追記(ここまで)

「ColorTool」というMicrosoftのツールを使うと、WSL・コマンドプロンプト・PowerShellのカラーテーマを変えることができます。

github.com

デフォルトだとディレクトリが青で見づらいので、「ColorTool」で見やすくしてみます。

手順

  1. ダウンロードページへ移動
  2. zipファイルをダウンロードして解凍
  3. 解答したフォルダを、Shiftを押しながら右クリックで「PowerShellウィンドウをここに開く」

▼追記(ここから)

「ColorTool.exe」のバイナリ配布がなくなってますね…。仕方がないので、VisualStudio無料版を使って、下記の手順でビルドしました。

  1. Visual Studio Communityエディションをインストール
  2. GithubのColorToolフォルダ以下をダウンロード
  3. PowerShell等で.\build.bat relを実行
  4. 「ColorTool/bin/Release/xxx/ColorTool.exe」が作成される
  5. 「schemes」フォルダを、作成された「ColorTool.exe」と同じフォルダに置く
  6. スキームの指定は「ColorTool.exe -b .\schemes\xxx.ini」で行う

注意:「build.bat」では「msbuild.exe」の場所を探して設定しているので、Visual Studioをデフォルトとは別のフォルダにインストールした場合は、手動でMSBUILDをインストール先の「msbuild.exe」になるよう修正が必要です。

▲追記(ここまで)

.\ColorTool.exe -sでスキーム一覧が表示されるので、.\ColorTool.exe -b <スキーム名>で適用します。 (元に戻すには、デフォルトのスキーム「cmd-legacy」を適用します)

WSLのWindowsのフォルダの色が見づらいのを直す
組み込みスキーム一覧

WSLのWindowsのフォルダの色が見づらいのを直す
スキーム「OneHalfDark」を適用したPowerShell

WSLを立ち上げ直すと、WSLの色も変わっています。

WSLのWindowsのフォルダの色が見づらいのを直す
スキーム「OneHalfDark」を適用したWSL

最初と比べて、随分見やすくなりました。

スキーム追加

スキームは「schemes」フォルダにファイルを入れていって追加できます。

こちらの「schemes」にスキームファイルがいっぱいあるのですが、多すぎて組み込みのでいいやとなってしまいました…。

感想など

あまりカスタマイズするのは好きじゃなく、ずっとデフォルトで頑張ってたんですが、画面の小さいノートPCにしたら文字が読めなくなって…。仕方なくカスタマイズすることにしました。

ColorToolのバイナリ配布がなくなったので、全然手軽じゃなくなりました…。

ColorToolは、先日発表のあった「Windows Terminal」に含まれているので、バイナリ配布は「Windows Terminal」のリリース時になるのかなぁ…。

forest.watch.impress.co.jp

参考記事