Surface Pro 4でManjaro Linuxを快適に使う

##はじめに
Windows10とManjaro Xfce Editionのデュアルブートです。
インストールするまでと、してからが大変だったのでやったことを残しておきます。

## USBメモリの準備
[ここ](https://manjaro.org/download/)から好きなエディションを選んでDLします。

USBWriter等でISOをUSBに書き込みます。

## Surfaceの準備
### BitLockerの解除
BitLokerが有効だとGrubでWindowsが起動できないようです。
コントロールパネルから、BitLockerを無効にします。
![bitlocker.png](https://qiita-image-store.s3.amazonaws.com/0/183505/24839c47-cddf-5823-7ed1-41463a92f9d8.png)

### パーティションの確保
スタートボタンを右クリックしてディスクの管理を開きます。
Cドライブを好きなだけ縮小します。
新しくできたパーティションは未割り当てのままでOKです。
![ディスクの管理.png](https://qiita-image-store.s3.amazonaws.com/0/183505/21ee737c-9f20-f271-0cf5-64c434e4684e.png)

#### パーティションが縮小できない場合
縮小可能な領域が18GB程しかありませんでした。
調べてみると、ページファイルが動かせないファイルとして邪魔をしていたので、無効にします。
コントロールパネル→システムとセキュリティ→システム→システムの詳細設定から画像のようにたどって行き、ページングファイルなしを選択します。
![page.png](https://qiita-image-store.s3.amazonaws.com/0/183505/260092ee-f536-eca3-2de8-03e937303c23.png)
再起動すると、縮小可能領が40GB程になったのでよしとします。

パーティション縮小後、忘れずに元の設定に戻しておきましょう。
詳しくは[こちら](
https://blogs.msdn.microsoft.com/microsoft_surface_blogs/2014/09/08/surface-pro-3/)

### UEFIの設定
電源を切り、音量を上げるボタンを押しながら電源を入れてUEFIに入ります。
SecurityタブのChange ConfigurationからNoneを選びセキュアブートを無効にします。

次に、Boot configurationタブでUSB Storageの優先順位を上げます。
最後に、用意したUSBメモリを挿してExitタブからRestart now!

## Manjaroのインストール
USBメモリを挿してから起動したらWelcome to Manjaroと表示されます。
一応tz(タイムゾーン)、keytable、langをあわせたらBoot: Manjaroを選んで起動します。
Manjaroへようこそ！のインストーラーを起動からインストールを始めます。
GUIに沿って進め、パーティションの所ではパーティションの置換を選び、先程作ったパーティションを選択します。
![manjaro.png](https://qiita-image-store.s3.amazonaws.com/0/183505/7209155c-0e66-758b-afe3-84f69d890362.png)

終了したら、電源を落として再起動します。
このとき、優先順位は自動的にManjaroが優先になっているので、USBメモリは抜かなくても大丈夫です。
Grubが起動しManjaroとWindowsが選べます。

## 操作について
ここからは、インストールしたManjaroで設定を続けていきます。

### ウィンドウのリサイズがやりにくい
タッチパッドでウィンドウの端を掴むのは無理なので、別の方法を使います。
Alt + 右クリ + ドラッグでリサイズできます。

### タップでクリック
設定→マウスとタッチパッドからMicrosoft Surface Type Cover Touchpadを選びます。
タッチパッドタブからタッチパッドをタップでクリックを選択します。


## 表示の設定
Surfaceは解像度が高いので、そのままだとUIが小さすぎて見づらいです。
[xrandrを使って画面をそのままズームするやり方](https://forums.linuxmint.com/viewtopic.php?t=159064)も試しましたが、多少ボヤけるのが気に入らなかったのでそれぞれの設定をいじります。

### フォント
設定→外観→フォントのカスタムDPI設定を、倍の192にします。
これである程度見やすくなりました。

### ツールバー
続いてツールバーも大きくします。
デフォルトテーマにはhidipがありますが、ちょっとダサいので他を使います。
[ここからDL](https://winaero.com/blog/download-numix-hidpi-xfwm-theme/)

解凍したら`~/.themes`に入れます。
設定→ウィンドウマネージャから、今のテーマを設定します。

### デスクトップのアイコン
設定→デスクトップ→アイコンでサイズを72にします。（お好みで）

### パネル
設定→パネル→表示の行サイズで変更できます。
パネルを倍の60ピクセル程にしたい所ですが、ウィンドウボタン(ウィンドウ一覧が表示されるところ)のサイズは変更できないようです。
なので、ウィンドウボタンが２行にならないぎりぎりの、49ピクセルに設定します。

#### スタートメニュー(Whisker Menu)のアイコン
設定→パネルでWhisker Menuを選択し、右にある編集ボタンを押します。
Whisker Menuの設定画面が出てくるのでアイコンサイズを普通等にします。
メニュー右上のボタン群の大きさは変わりません。

#### 通知エリアのアイコン
BluetoothやWiFiのアイコンのある部分です。
先ほどと同じ、設定→パネルで通知エリアを選択し、右にある編集ボタンを押します。
おさまりのいい47ピクセルにします。
IMのアイコンは変わらないので、後の項目で対応します。

### ファイルマネージャ
ファイルのアイコンはCtrl + +で拡大できます。

## 時刻合わせ
時計がずれていたので、Manjaroセッティングマネージャから"自動的に時刻と日付を設定"と"ローカルタイムゾーンでのハードウェアクロック"にチェックを入れます。

## WiFi設定
起動してしばらくたつと、WiFiが途切れることがあります。[^1]
/etc/NetworkManager/NetworkManager.confに追記します。

``` NetworkManager.conf
[connection]
wifi.powersave = 2
[device]
wifi.scan-rand-mac-address=false
```

## いろいろとインストール

### pacmanの設定
インストールの前に、そのままでは遅いので、ミラーを早い順にソートします。
ついでに更新もしておきます。
`$ sudo pacman-mirrors --fasttrack && sudo pacman -Syyu`

#### AURの有効化
スタートメニューからソフトウェアの追加と削除を選んでPamacを起動します。
右上の設定→AURでAURを有効にします。
これで、検索結果にAURが含まれるようになります。

### この後インストールするものまとめ
``` bash
sudo pacman -S xdg-user-dirs-gtk fcitx-mozc fcitx-gtk2 fcitx-gtk3 fcitx-qt4 fcitx-qt5 noto-fonts-cjk onboard
```

### ホーム内のディレクトリを日本語から英語へ
便利なスクリプトがあるのでインストールします。
`$ sudo pacman-S xdg-user-dirs-gtk`

実行
`$ LANG=C xdg-user-dirs-update`

再起動時に、ダウンロードフォルダが無いとbluemanから怒られるので、変更後のパスを設定します。
`$ gsettings set org.blueman.transfer shared-path '/home/user/Downloads/'`

### 日本語入力
fcitx-mozcを使います。
`$ sudo pacman -S fcitx-mozc fcitx-gtk2 fcitx-gtk3 fcitx-qt4 fcitx-qt5`

インストール後、.xprofileと.bashrcに設定を追記します。

``` bash:~/.xprofile
export LANG="ja_JP.UTF-8"
export XMODIFIERS="@im=fcitx"
export XMODIFIER="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx
```

``` bash:~/.bashrc
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
```

#### アイコンサイズの変更
[GitHub](https://github.com/google/mozc/tree/master/src/data/images)にアイコンがあるので、`product_icon_32bpp-128.png`をDLします。

ファイルを置き換えます。

``` bash
$ cd /usr/share/fcitx/mozc/icon/
$ sudo cp mozc.png mozc.png.bak
$ sudo cp -f ~/Downloads/product_icon_32bpp-128.png mozc.png
```

次に、fcitxのキーボードのアイコンのサイズを変えます。
defaultスキンを直接書き換えます。

``` bash
$ cd /usr/share/fcitx/skin/default/
$ sudo cp inactive.png inactive.png.bak
$ sudo cp active.png active.png.bak
$ sudo convert inactive.png -resize 200% inactive.png
$ sudo convert active.png -resize 200% active.png
```

再起動後、反映されます。

### 日本語フォント
Google Noto Fontを使います。
`$ sudo pacman -S noto-fonts-cjk`
設定→ウィンドウマネージャからタイトルのフォントをNoto Sans CJK JP Mediumにします。
設定→Qt5　Settings→Fontsも変更します。

### linux-surface4
[Surface用のカーネル](https://github.com/jakeday/linux-surface)があるので、インストールします。
pamacでsurfaceと検索するとAURに出てきます。
![surfacekernel.png](https://qiita-image-store.s3.amazonaws.com/0/183505/9f899039-3658-e20e-e056-6ae981182003.png)

途中でunknown public keyとエラーが出たので、鍵を登録します。
`$ gpg --recv-keys ABAF11C65A2970B130ABE3C479BE3E4300411886 647F28654894E3BD457199BE38DBBDC86092693E`

再度試すと、止まることなく進んだので気長に待ちます。

無事完了して再起動すると、画面がタッチできるようになり、カーネルが有効になっていることがわかります。

### スクリーンキーボード
画面がタッチできるようになったので、入れておきます。
`$ sudo pacman -S onboard`

### タイプカバーを１回無効にすると再認識できない
[issue](https://github.com/jakeday/linux-surface/issues/54)があったので対応します。

[こちら](https://gist.github.com/anonymous/c6012cfed0936bf40006f0b980afc691)のスクリプトを好きなところに置いておきます。
`$ vim script/read-all-sensors.py`

sytemdモジュールがないと怒られるので、インストールします。
`$ sudo pip install systemd`

実行権限をつけます。
`$ chmod 777 script/read-all-sensors.py`

udevルールを追加します。
`$ sudo vim /etc/udev/rules.d/99-TypeCover.rule`

``` 99-TypeCover.rule
SUBSYSTEM=="usb", ACTION=="add", ATTRS{product}=="Surface Type Cover", RUN+="/home/underasail/scripts/read-all-sensors.py"
```

これで、タイプカバーを付け外ししても認識されるようになりました。

## おわりに
- ウィンドウサイズを記憶してくれないソフトは毎回広げないといけない
- ソフトによってはUIが小さい

等、多少の問題はありますが、十分使えるのではないかと思います。

##参考
- https://blogs.msdn.microsoft.com/microsoft_surface_blogs/2014/09/08/surface-pro-3/
- https://xubuntu.org/news/window-resizing-in-xubuntu-and-xfce/
- https://aur.archlinux.org/packages/linux-apparmor/
- https://qiita.com/Aruneko/items/6d4c81770d94558e6d56
- http://blog.mwsoft.jp/article/175788130.html
- https://wiki.manjaro.org/index.php?title=%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E8%A8%AD%E5%AE%9A
- https://github.com/jakeday/linux-surface/issues/163
- https://www.reddit.com/r/SurfaceLinux/comments/6axyer/working_sp4_typecover_plug_and_play/

[^1]: book,Pro4限定？