GUIを無効にしてChromiumをKIOSKモードで起動する方法をChatGPTに聞きながら実装してみた

仕事でUbuntu22.04にChromiumをUI表示のブラウザとして、kioskモードで使用する必要があったがやり方がわからなかったので調査することにした。

いつも通りブラウザで検索しながら調べていくこともできたが、最近流行っているChatGPTの能力のテストも兼ねて、ChatGPTに質問しながら調べてみることにした。

まずはダイレクト(かつ大雑把)に聞いてみることにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/f12384c3-fe98-7a22-ee87-5de26ca993ff.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/281cb609-2d1c-bab4-990e-cc5bc26e6288.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/4da18829-5727-77a6-30f8-a31219341965.png)

いきなりドンピシャそうな答えが返ってきた。しかしながら、これだとstartapp.shを起動時に呼ぶ処理が書かれていないので、ログイン時にXを起動して終わりな気がする。そこでその通り聞いてみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/4e54c0ed-8741-d586-104d-0a011d585c20.png)

cronをつかう方法を提示してきた。これならまあ起動するかもしれない。そういえば、自分はzshを使っているので、bashではなくzshを使う方法を提示して欲しい。そこで下記の質問をしてみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/a4f50193-599d-d634-4e9c-68235b4e4d24.png)

「zsh用」が「zshよう」になってしまった。でもChatGPTならその程度なら全然誤解しないらしい。先ほどはcronを使用する方法を提案してきたが、 Xのinitファイル(.xinitrc)にchromiumブラウザの起動コマンドを追記するする方法を提案してきた。なるほど、それでも同じように起動しそうである。

試しに.zshrcファイルに追記してターミナルを起動してみたところ、`zsh: = not found`というエラーが返ってきた。よくみると

```zsh
if [ "$(tty)" == "/dev/tty1" ]; then
    startx
fi

```
と書いており、構文的に`==`ではなく`=`である必要がある。
とりあえずエラーメッセージをそのまま雑に返してみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/bc68147e-d2f3-1022-bd7d-32e383b150f1.png)

ん?逆じゃない?と思ったのでその通り返答してみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/dbf289d9-ff39-906e-f596-6954a7fa47d7.png)

調べてみるとzshでは==を使用する場合は'=='と囲う必要があるとのことで、zshの仕様らしい([ご参考](https://stackoverflow.com/questions/67483834/why-the-zsh-codes-like-var-str-runs-well-as-a-command-but-error-as-a-s))
つまりChatGPTは間違っているのだが、その辺りは適当に忖度して進めることにする。

そういえば、これまでの設定だとGUIが起動時に起動してしまい、希望の動作にならない。そのことを伝えてみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/3e3f314c-f7fc-84e7-c02b-2e9d9344201b.png)

Ubuntuのバージョンをしっかり伝えてなかったせいかもしれないが、使用しているUbuntu22.04はlightdmではなくgdm3を使用している。でもまぁその辺りも忖度して、`sudo systemctl disable gdm3`でgdm3が起動しなくなるようにする。

当たり前だが、dgm3をdisableしたら再起動時にGUIが起動しなくなってしまった。復旧方法は`sudo systemctl enable gdm3`だが、あえて質問してみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85968/ca38a73f-2228-2d4d-2b30-b8c25afddbf4.png)

あれ、全然gdm3関係ないやん..と思ったので、無視することにした。
また`sudo systemctl enable gdm3`を実行したら

```
Synchronizing state of gdm3.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable gdm3
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
 
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.
```

とでてしまったので、下記を参考に修正して起動できるようにした。

https://askubuntu.com/questions/1361285/cant-enable-gdm3-after-following-a-tutorial-on-how-to-remove-kde-from-ubuntu

結局、自動起動はこれまでの方法でできそう(詳細は追記予定)

## ChatGPTを使用した感想。

今回はWebでググるより簡単に調べられるんじゃないか?と思いChatGPTを使用してみたが、全くChatGPTの言う通りにすると実現できるかというとそうでもないことがわかった。しかしながら、大筋では正しかったので、Web検索を併用しつつ間違いなどに騙されないように注意すればそこそこ使えるかもしれない。結局、使うにはある程度リテラシーが必要そうである。