Edited at

WSLとMacで動くdotfilesを作った話


WSL?

Windows Subsystem for Linuxの略です。

一言でいうと、「Windows 10上で動作するLinuxサブシステム」となります。

今回は、このWSLとMacで動作するdotfilesを作成しました。


作ったdotfiles

shuntaka9576/dotfiles

※ 環境を大きく変えるため利用する際には注意してください!


動作環境


  • Ubuntu 18.04 LTS(ストアアプリ)

  • macOS Mojave(10.14.3)


dotfilesの構成


  • neovim

  • fish

  • tmux

  • 上記の環境を構築ための、shellスクリプト


Install方法

curlで雑に環境構築できます。よく見る方式ですね。

curl -L raw.github.com/shuntaka9576/dotfiles/master/init/install.sh| bash


WSLで動いてる感じ

image.png (画像の警告はALEによるものです。)

ターミナルにはwsl-terminalを利用しています。

フォントや透明度は、設定から変更することが可能です。(透過いい...)

初めはCmderを使っていましたが、neovimを縦分割したときの表示崩れが酷くて辞めました。

PythonやGolangのLSPであるpylsやgoplsも問題なく動作しました。


勉強になったこと


Linux-brew

Linux-brewを利用して、MacとWSLの環境構築部分をほとんど共通化したところです。

もちろんPATHの問題はでるため、そこは.bashrcconfig.fishで差を吸収しています。

CeontOSやAmazonLinux2に対応させる場合も、Linux-brewを利用すればかなり環境構築が楽になりそうですね。。(yumは本当に色々ないので、、)


WSL判定

[shell] WSL かどうかを判別するを参考にしました。

リンク先の一例である/proc/sys/fs/binfmt_misc/WSLInteropというファイルシステムの存在判定で、

WSLかどうかを判定をしています。

# Macなら普通のbrew、WSLならLinux-brewを入れる処理をする箇所

if [ "$(uname)" == 'Darwin' ]; then
echo 'Install brew [Mac]'
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
echo 'Install modules only for Mac'
~/dotfiles/init/setup/mac.sh
elif [ -f /proc/sys/fs/binfmt_misc/WSLInterop ]; then
echo 'Install brew [WSL]'
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
echo 'Install brew [Linux]'
else
exit 1
fi


最後に

WSLは、Ubuntuなので動いて当然ちゃ当然なのですが、やはりピュアUbuntuとは異なる点が多いため今回試してみました。

プラグインモリモリのneovimが動いたので、本格的にWindowsでガリガリコードが書けそうな感想を抱きました。

ターミナル周りで良いツールが出ると更に良いと思いました。(個人的には、前述のwsl-terminalで十分でしたが)

WSLは、昨年後半ごろにWSL上でDocker Engineが動くようになっていたっぽいという話があったりと、これからさらに楽しみです。


Special Thanks!!!

lighttiger2505/.dotfiles

構成や内容を大いに参考(パク..)にさせていただきました。

本当に知見しかなかったです。。。助かりました。。。。

Windows10で快適なfishシェル環境構築

fishのthemeは、フォントを入れないと文字化けするので、上記の手順を利用して解決しました。