HomePortfolioNotesAbout

← Notes

Windows Subsystem for Linux(WSL)でIntelliJ IDEAを使う


2018.10.10

WindowsでWebの開発環境を作るにあたって,

  • PowerShellじゃなくてBash使いたいなぁ
  • gitとかnodeの開発ツールでWindowsが汚れていくのが嫌だなぁ
  • 仮想環境で切り替えながら使うのは面倒だなぁ

とか思いながら調べていたらWindowsでもLinuxが使えるようになっていたので,開発環境構築の作業をメモしておく.

事前準備

Googleで検索すればすぐに有用な情報が見つかるため,詳細な手順は省く.

  1. WSLを有効化する

    • Windows 10のバージョンが1703以前の場合は1709以降のバージョンを適用しておく
  2. Ubuntuをインストールする

    • バージョンがついているものとついていないものがある*1が,ついているもので
  3. VcXsrvをインストールする

    • 今はXmingよりこっちが主流らしい
    • WSLでGUIアプリを表示するためにXサーバが必要
    • vcxsrc.exeは「高いDPIスケールの動作を上書きします」を有効にしておく

予めVcXsrvを起動しておく.

Ubuntuのセットアップ

パッケージのアップデート

まずはUbuntuを起動し,プリインパッケージをアップデートする.

$ sudo apt update
$ sudo apt upgrade

X11のインストール

WSLにXクライアントをインストールする.

$ sudo apt install x11-apps x11-xserver-utils

WSLにXサーバの接続情報を設定する.

$ echo "export DISPLAY=localhost:0.0" >> ~/.profile
$ source ~/.profile

試しにテキストエディタを起動してみる.

$ sudo apt install leafpad
$ leafpad &

日本語入力を設定する

今のままではテキストエディタに日本語を入力できないので, 日本語入力環境をセットアップする.

Windowsフォントとfcitxfcitx-mozcをインストールする.

$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
$ sudo fc-cache -fv
$ sudo apt install fcitx fcitx-mozc dbus-x11
$ sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"

起動時に有効になるように.profileに下記を追記する.

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export DefaultIMModule=fcitx

if [ $SHLVL -eq 1 ]; then
    (fcitx-autostart > /dev/null 2&>1 &)
    xset -r 49
fi

IntelliJ IDEAをインストールする

公式手順に従ってインストールする.

Windowsから直接起動できるようにする

ここまででIntelliJ IDEAを使えるようになったが,VcXsrvを起動したり,Ubuntuを起動したりと,IntelliJ IDEAを起動したいときにやることが多くかったるいので,Windowsから直接起動できるようにする.

VcXsrvからUbuntuを起動する

VcXsrvには起動時にプログラムを起動する仕組みがあるので,これを利用する. まず,このプログラムから起動された場合に設定される環境変数を確認するためにenvを実行してみる.

下記のファイルを作成し,env.xlaunchとして保存する.

<?xml version="1.0" encoding="UTF-8"?>
<XLaunch
  WindowMode="MultiWindow"
  ClientMode="StartProgram"
  LocalClient="True"
  Display="-1"
  LocalProgram="bash -lc env"
  RemoteProgram="xterm"
  RemotePassword=""
  PrivateKey=""
  RemoteHost=""
  RemoteUser=""
  XDMCPHost=""
  XDMCPBroadcast="False"
  XDMCPIndirect="False"
  Clipboard="True"
  ClipboardPrimary="True"
  ExtraParams=""
  Wgl="True"
  DisableAC="False"
  XDMCPTerminate="False"
/>

このファイルをダブルクリックすると,下記のようなダイアログが出てくるので,環境変数が設定されていることを確認する.

env

OKを押すとVcXsrvも終了する.

あとはLocalProgram="bash -lc env"の部分をLocalProgram="bash -lc idea"にすれば良さそうである.

Fcitxを起動しておく

しかし,FcitxはVcXsrvが起動している必要があるため,このままだとFcitxが起動しない. そのため,シェルから再度起動するようにしておく. ついでにダイアログが出ないように出力をリダイレクトしておく.

<?xml version="1.0" encoding="UTF-8"?>
<XLaunch
  WindowMode="MultiWindow"
  ClientMode="StartProgram"
  LocalClient="True"
  Display="-1"
  LocalProgram="bash -lc '(fcitx-autostart; idea) 2>/dev/null 1>/dev/null'"
  RemoteProgram="xterm"
  RemotePassword=""
  PrivateKey=""
  RemoteHost=""
  RemoteUser=""
  XDMCPHost=""
  XDMCPBroadcast="False"
  XDMCPIndirect="False"
  Clipboard="True"
  ClipboardPrimary="True"
  ExtraParams=""
  Wgl="True"
  DisableAC="False"
  XDMCPTerminate="False"
/>

なお,なぜか2>&1が動作しなかったため,2>/dev/null 1>/dev/nullとしている.

スタートにショートカットを作成

C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programsに,下記のショートカットを作成する.

"C:\Program Files\VcXsrv\xlaunch.exe" -run <上記xlaunchファイル>

これをスタートにピン留めしておけば,スタートからいつでも起動できる.

参考文献


*1 ストアにある3つの「Ubuntu」の違いは? ~WLSの「Ubuntu」をアップグレードする方法


 Tech WSL

Built with GatsbyJS.  Designed by gatsby-minimal-portfolio-blog