Weylusで擬似的にKrita for iPadを実現する

30%ぐらい液タブ目的でiPadを買ったらお絵かきソフトの数があまりにも少なかった。
フリーで使えるMedibang Paintはなんか最近広告が常時表示されるようになって超絶使いづらい。
ClipStudioはLinux非対応な上iPad版は(株券購入以外は)買い切りがないので使いたくない。

というか普段使ってるKritaをiPadで使いたい。
しかし、[AppleがAppStoreでGPLのアプリを配信させようとしないせい](https://www.fsf.org/news/2010-05-app-store-compliance)で[Krita公式がiOSでは出さない宣言してる](https://docs.krita.org/ja/KritaFAQ.html#can-i-get-krita-for-ipad-or-for-android)のでiPad版などあるわけがない。
ほんまAppleカス。

ということで調べたら、Weylusとか言う便利アプリがあったのでそれを使ってPC上で動かしてるKritaをiPadで動かせるようにした。

## Weylusとは

[https://github.com/H-M-H/Weylus](https://github.com/H-M-H/Weylus)

超絶ざっくりまとめると、PCの画面をミラーリングするアプリ。
クライアント側はブラウザで完結するため、アプリ不要。
そして**Apple Pencil対応**(筆圧含む)。強い。

## 導入

Arch系であれば、AURからインストールできる。
私はAURヘルパーにyayを使用しているので、以下のコマンドでインストール

```terminal
$ yay -S weylus
```

ビルド済みのバイナリをインストールする場合は以下

```terminal
$ yay -S weylus-bin
```

Arch以外は上記GitHubリポジトリのReleasesにバイナリが転がってます。
Debian系は.debパッケージもありました。

## ポート開放

Weylusはデフォルト設定で、Webサーバー用に1701番、WebSocketコネクション用に9001番ポート(いずれもTCP接続)が使用されるので、ファイアウォールを入れている場合は適宜設定する。
ufwを使用している場合は以下

```terminal
$ sudo ufw allow 1701/tcp
$ sudo ufw allow 9001/tcp
```

公式ではallowになってるけど、多分limitでもいけると思う。

## 色々設定

Weylusは入力周りにuinputインタフェースを使用するらしいのでuinputグループを作成して、ユーザーを追加する

```terminal
$ sudo groupadd -r uinput
$ sudo usermod -aG uinput $USER
```

で、設定ファイルを書き込みます。

```terminal
$ echo 'KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"' \
| sudo tee /etc/udev/rules.d/60-weylus.rules
```

ここで一旦再起動するか

```terminal
$ sudo udevadm control --reload
$ sudo udevadm trigger
```

してからログアウト・ログインします。
どっちみち一旦デスクトップセッション切らないといけないっぽいので再起動したほうが無難でしょう。

## (未検証)Wayland特有の設定

ディスプレイサーバーにWaylandを使用している場合は追加で以下の設定が必要な模様。

```terminal
$ sudo pacman -S pipewire xdg-desktop-portal
```

で、使ってるDEに合わせて以下のいずれかをインストール

```terminal
$ sudo pacman -S xdg-desktop-portal-gtk

$ sudo pacman -S xdg-desktop-portal-kde

$ sudo pacman -S xdg-desktop-portal-wlr
```

ちなみに、Waylandだといくつかの機能が使えないみたいなので、よほどの理由がないならX11にしたほうが良いです。

## 起動

起動する前に、予めiPadとPCを同じネットワークに接続しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/18c47314-530d-7c3f-e9ce-94e6bd5fc833.png)

起動するとこんな画面が出てくるので、VAAPIやNVENCなどのハードウェアアクセラレーションを使用したい場合は適宜チェックを入れたり、ポート番号を変更したい場合は適宜変更して、Startを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/4472cb97-c1fb-0186-cbb3-9c3ccc1f5ba8.png)

そうすると、QRコードが表示されるので、カメラアプリとかで読み取ります。
カメラアプリ立ち上げるのが面倒って人は
`[PCのローカルIPアドレス]:[Webサーバーのポート番号(デフォルトで1701)]`
でもいけます。

一応他のブラウザでも行けると思いますが、(どうせiOSのブラウザはどれもエンジン同じなので)Safariを例にやっていきます。

接続すると、別に何かをするまでもなくデスクトップ画面が表示されると思いますが、上のURLバーとかが邪魔なので、単独のアプリとして動くようにしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/668813aa-d619-c32a-9440-6b595e0d67aa.png)


ブラウザ右上の矢印から"ホーム画面に追加"を押して、追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/d971e9c8-788c-91d4-a71b-eecfb05b76d6.png)

で、ホーム画面に追加されたアイコンから立ち上げると上のいろんなバーが消えます。
ちなみにWeylusが起動してない状態で立ち上げるとDoS攻撃かって頻度で接続のリクエストを飛ばします。
(ufwの設定で公式がallowにしてるのはこの仕様のせい?)

なお、ここでiPadのホーム画面に追加されたアイコンのリンク先アドレスはただのローカルIPアドレスなので、IPアドレスを自動設定にしてる場合、DHCPサーバーの気まぐれでPC側のローカルIPアドレスが変わって使えなくなったりします。
面倒なようなら、ルーターやHGWなどの設定でIPを固定しておくことをおすすめします。

## Kritaを使う。

あとはKritaでもGIMPでも、使いたいソフトを立ち上げて使うだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/c2bc92e5-b846-e1a8-a365-d3a085b5f88e.png)

クライアント側設定の"Capture"から、表示させるウィンドウを変更できます。
また、"Stretch Video"のチェックを外すと、クライアント側の画面サイズに自動リサイズされなくなるので、特にお絵描き等を目的にするなら外しておいたほうが良いでしょう。
また、iPadの画面比率が4:3なので、ウィンドウサイズを適宜合わせると使いやすくなります。

![IMG_20211103_152352_419.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/2879a691-e650-e21a-e3de-46710cf2cd18.jpeg)

ということで完了です。
Wi-Fi経由なのでどうしても遅延が目立ちますが、それに関してはもうどうしようもないです。
もしかするとネットワーク環境をうまい具合にいじれば多少はマシになるかもしれませんが、そこまでやる気力が出ませんでした。

## 参考文献

- [H-M-H/Weylus: Use your tablet as graphic tablet/touch screen on your computer.](https://github.com/H-M-H/Weylus)
- [Krita FAQ — Krita Manual 5.0.0 ドキュメント](https://docs.krita.org/ja/KritaFAQ.html)
- [GPL Enforcement in Apple's App Store — Free Software Foundation — Working together for free software](https://www.fsf.org/news/2010-05-app-store-compliance)