ヘチマのノート

主にプログラムについて、興味の湧いたことを書きます。

【VSCode】UbuntuでVSCodeが真っ白になってしまう問題について

環境

発生した問題

仮想マシンUbuntu環境にインストールしたVisualStudioCode(以下VSCode)を起動するとVSCodeのウィンドウが真っ白になってしまう。
f:id:hetima333:20170424025522p:plain

テキストファイルなどを読み込むと、タイトルバーの文字が切り替わるので読み込みはできている模様。
どうやら描画がうまくいっていないようでした。

原因

VSCodeがデフォルトでGPUを使って描画を行うようになっており、3Dハードウェアアクセラレーションを有効にした状態でVSCodeをGPUを使って描画することにより発生していたようです。

解決方法

3Dハードウェアアクセラレーションを無効にする

この方法はあまりオススメではありません。
3Dハードウェアアクセラレーションを無効にすると動作が遅くなったりすることがあります。

VirtualBoxから、該当の仮想マシンのディスプレイをクリックし(画像参照)、3Dアクセラレーションを有効化のチェックを外します。
f:id:hetima333:20170424012538p:plain:w300 f:id:hetima333:20170424021755p:plain:w300

VSCodeでGPUを使わないようにする

VSCodeの描画にGPUを使わないように設定することで正常に描画することができました。

$ code

通常上のコマンドで起動するところを

$ code --disable-gpu

とすることでGPUを使わないように設定して起動することができます。
ひとまずはこれで解決です。

通常コマンドで起動した際にもGPUを使用しないようにする

毎回起動する際に --disble-gpu と入力するのは面倒なのでデフォルトで --disable-gpu が入力されている状態に設定します。
設定ファイルを変更するので慎重に!

# nano /usr/share/code/bin/code

上記コマンドでnanoでVSCodeの設定ファイルを開きます。
nanoの部分はgeditなどの他のテキストエディタでもOKです。

設定ファイルを開いたら、

ELECTRON_RUN_AS_NODE=1 "SELECTRON" "$CLI" "$@"

と書かれている部分を探し、

ELECTRON_RUN_AS_NODE=1 "SELECTRON" "$CLI" "--disable-gpu" "$@"

と書き換えます。
これで code コマンドだけで実行した際にGPUを使用しないように設定できました。

Lancherから起動した際にもGPUを使用しないようにする

Lancherから起動するとVSCodeはGPUを使用してしまいますので、こちらも設定が必要になります。
設定ファイルを変更するので慎重に!

$ cd /usr/share/applications
$ nano code.desktop

上記コマンドでnanoで設定ファイルを開きます。
nanoの部分は先程と同様にgeditなどの他のテキストエディタでもOKです。

設定ファイルを開いたら、[Desktop Entry]の少し下にある

Exec=/usr/share/code/code -- unity-launch %U

と書かれている部分を探し、

Exec=/usr/share/code/code -- unity-launch --disable-gpu %U

と書き換えます。
これでLancherから起動した際にもGPUを使用しないように設定できました。