ubuntu-cinnamon 24.04をインストールした話

いままでUbuntuCinnamon23.10を使っていましたが、24.04がリリースされたのでアップグレードしました。
その際のトラブルメモです。
まぁおおよそは「24.04だから起きた問題」ではないので、大して役に立つ話ではないかもしれませんが。

アップグレードと言っても、基本的に自分はubuntuの今まで使っていたバージョンは残しておいて、新しいパーティションに新規インストールするようにしています。
というのも、

* トラブっても前の状態に戻せる
* 一旦クリーンにしてサッパリしたい。

という意図があります。まぁ、いろいろとインストールし直す手間があるのですが、ubuntuであればaptでインストールするので大して気になりません。

というわけで、新規インストールをしてみたのですが…。

## 手動パーティショニングでブートローダーのインストール先が選択できない

新規インストールをすると、パーティションの設定でブートローダーのインストール先が選択できずに先に進まない！！というトラブルに会いました。

なんか、23.10でも似たような問題にあたった気がするのですが、その時はPCの入れ替えの時期だったので、ストレージがまっさらな状態だったので、インストーラで新規にパーティションを作って回避したような気がします。(あやふや)
でも、今回はまっさらにするわけにはいかないわけでして。
23.10をインストールしてあるからそのあたりは大丈夫だろう、と思っていたら、思わぬ展開でした。

とりあえず一旦新規インストールは諦めて、「`do-release-upgrade -d`」でアップグレードしたのですが、今後のことを考えるとこの問題は解決しておきたいなぁ、と思い、もう少し粘ってみました。

[このあたり](https://www.miraclelinux.com/tech-blog/qwi8ni)の情報によると「BIOS Boot Partition」というものが必要の模様。
これか？と思ったのですが、ふと考えるとこれってGPTパーティションでMBRパーティションと互換を持たせるためのものじゃなかったっけ？
そう思ってマザーボードの設定を見直すと、ブートモードが「UEFI」ではなくて「Legacy+UEFI」になっているじゃないですか！！
23.10で問題なく使えていたので、まさかここに問題があるとは思いませんでした。

というわけで、設定を変えて新規インストールをし直して、無事インストールすることができました。

## マルチモニターでミラーリングができない。

自分の環境は通常のモニターとモバイルモニターのマルチモニターなのですが、

* モバイルモニターは寝ながら使うものなので、並べて使うものではない。
* 通常のモニターは、他のPCなどでも使うので、HDMI切替器を使用している。

という状態であり、ミラーリングでないと、**通常モニターの出力先を切り替えると切断されたと判断されて、ウィンドウが全てモバイルモニターに移動してしまう** という現象にみまわれてしまうので、ミラーリングで使用しています。

余談ですが、プライマリーモニターがデフォルトではモバイルモニターに設定されるので、なんか通常モニターに背景だけしか映らなくて困った、と思ったらモバイルモニターにウィンドウが表示されていた、という間違いがよく起きます(笑)

話を戻して、24.04にアップグレードすると、ミラーリングができなくなってしまいました。
cinnamonのせいかな、と思い、GNOMEでログインして設定すると、ミラーリングはできるのだけど解像度が落ちてしまい、これはこれで問題あり、という状態です。

もうミラーリングは諦めようか、と思っていたところ、cinnamonのディスプレイ設定を見直していると、「不明なモニター」という怪しげな第3のモニターが。

こいつがあるせいで、ミラーリングできなかったり解像度が落ちたりするのでは。
調べてみると、マルチモニターができなくなった対処としてnvidiaのドライバーを更新してみろ、というのがあったので、~~やってみた(やり方は忘れた)ところ、無事ミラーリングができるようになりました。~~

上記の通り新規インストールすると、同じ現象に見舞われました。
うわー、どうやって解決したんだっけ！？ともう一度色々とググってみて、結果的に以下のコマンドで解決できました。

```
sudo apt purge 'nvidia*'
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
```

多分、「`apt purge`」でパッケージを削除したのが効いたのだと思います。

### 追記: '24/5/9

よくよく考えてみたら、nvidiaのドライバを削除してオープンソースのドライバを使っているだけだわ、コレ。
もっとも、自分はゲームPCのお古だからgeforceカードを使っているだけで、それでも困らない、むしろミラーリングできない方が困るので、これでもいいか、と思ってますが。

ちなみに、nvidiaのドライバを入れ直したら、立ち上がらなくなりました。うーん。

## 自作サービスが起動しない。

まぁこれは23.10の頃からなのですが、プライベートで使っているWebアプリがあるのですが、こいつがPC立ち上げ時に起動しなくなりました。
しかし、起動後に「`sudo systemctl start myservice`」と実行すると、問題なく実行できる。
まぁ一応動くからいいか、と放っといたのですが、これを気にちゃんと調べようと。

「`sudo dmesg`」を見てみると、「`graphical.target`」が見つからないとかなんとか。(このあたりはちょっと思えていない)
どうもディスプレイマネージャがlightdmなのが関係しているのかな、と思い、gdmに変更してみると、今度は「`myservice.service`」が見つからない、と。

そんなはずはない、ちゃんと`/etc/systemd/system`の下にあるだろ、と思い、他のサービスを参考にしようとすると、そういえばapacheをインストールしてあるのにapacheのサービスファイルが見当たらないな、ということに気づき、調べてみると`/usr/lib/systemd`以下にあることがわかったので、そちらに持っていっても症状は変わりません。
(ちなみに`/usr/lib/systemd`にあるのは、ubuntuのパッケージによりインストールされたものなので、自分で作ったものは`/etc/systemd`に置くのが正しいようです。なので、元に戻しました。)

他にも違いがないか探してみると、そういえば自サービスはシンボリックリンクだったので、シンボリックリンクを削除してコピーすると、ちゃんと動くようになりました。
よくよく考えてみると、シンボリックリンクの参照先がルートとは別のパーティションだったので、マウントする前にサービスが起動されていたのかな？と思います。以前までは動いていたので、うかつだったなぁ。

## pip install ができない。

まぁこれも23.10の頃からだし、自分としては困ってないのですが、22.04から移行した人は戸惑うかもしれないので、一応書いておきます。
(別に記事に書こうと前から思っていたのだけど、結局書く前に24.04がリリースされちゃった)

以前から、ubuntuでPythonのモジュールをインストールする際にpipコマンドを実行しようとすると、pipが見つからないというエラーになります。
これは、デフォルトでpipコマンドがインストールされていないためで、「`python3-pip`」パッケージをインストールしなければならないのですが、23.10からはたとえインストールしても「`pip3 install`」を実行すると、

```
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
```

というメッセージが出て実行できません。

要は、「pipでインストールすると、ubuntuのパッケージとごっちゃになるから、環境を壊すことになるかもしれないよ」ということだと思います。
どうすればいいかというと、

* **上記のリスクを理解した上で**、「`--break-system-packages`」オプションをつけて実行する。
* pipは使わずに、aptコマンドでubuntuのパッケージのみを使用する。
* venvを使って、個別の環境を作る。(なお、venvも「`python3-venv`」というパッケージをインストールする必要があります)

という選択肢になるかと思います。なお自分は、venvを使ってます。

ちなみに、自分はPython+GTKでプライベートで使うツールなどを作って使うことがあるのですが、venvにするとシステムのPyGObjectは使えなくなるので、仮想環境にPyGObjectをインストールしなければなりません。
この辺りは、[公式サイトの「Getting Started」](https://pygobject.gnome.org/getting_started.html)を参考に、以下のようにインストールします。

```
sudo apt install -y libgirepository1.0-dev build-essential libcairo2-dev python3-dev gir1.2-gtk-4.0
python3 -m pip install pycairo PyGObject
```

(公式ではgcc/pkg-configのみをインストールしていますが、自分の場合他の開発環境でも必要になりそうなので、build-essentialに変えました)

## ALT-Tabによる切り替えのプレビューの背景

自分がcinnamonを気に入っている点の一つに、ALT-Tabでのウィンドウ切り替えの設定があります。(設定より、「ウィンドウ」→「Alt-Tab」)
特に、「Alt-Tabの切り替えスタイル」を「アイコンとウィンドウのプレビュー」にするのが好みです。
この設定だと、アクティブにするウィンドウが全面に出てくるので、わかりやすいのですよ。

で、以前はプレビューの際に背景が暗くなるので、アクティブになるウィンドウがよりわかりやすかったのですが、最近はそれが無くなっていて、ちょっと残念だなぁ…。
と思ったら、どうやらデスクトップのテーマの設定らしい。
「Yaru-olive」を使っていたのだけど、それだと背景が暗くならず、「cinnamon」だと暗くなるようです。

できれば、テーマをいじってでも設定をしたいな、と思い、具体的にどこの設定化を調べました。

まずテーマはシステムグローバルは「`/usr/share/themes`」、ユーザは「`$HOME/.themes`」に配置されます。
テーマのディレクトリには、まず「`index.theme`」が必要。(これがないと、設定に出てこない)
cinnamonのデスクトップの設定は、「`cinnamon/cinnamon.css`」に記述するようです。拡張子でわかるとおり、stylesheetの書式です。

問題のウィンドウプレビューの背景は、

```css
.switcher-preview-backdrop { background-color: rgba(0, 0, 0, 0.5); }
```

で設定するようです。

## snapのアプリ権限

普段deadbeefという音楽プレイヤーを使っているのでインストールしたのですが、ファイルが見れねーーー！！！？
…でも大丈夫。snapとの付き合いは少しはある自分は、こういうのはsnapのアプリの権限設定によるものだということをしていますから。
というわけで、アプリの設定、アプリの設定、…て、見つからないーーー！！？

GNOMEだと「設定」→「アプリ」で設定できるのですが、cinnamonにはありません。
しかたないので、`ubuntu-desktop`をインストールして、GNOMEでログインし直して、設定しました。

でも、cinnamonでも設定できないものかな。
GNOMEの設定の実行ファイルは「`gnome-control-center`」だとわかったので、cinnamon上で実行しようとすると、

```
Running gnome-control-center is only supported under GNOME and Unity, exiting
```

という悲しいお知らせが。

後でわかったのですが、とりあえずコマンドで `snap connections`で権限の確認、`snap connect` / `snap disconnect`で権限の設定ができるようなので、これでわざわざ`ubuntu-desktop`を入れなくても設定できる…かな？

## Spotify

何かわざわざ新しい記事にして書くほどの内容じゃないんで、ここに付け足しておこう。

Spotifyアプリがだいぶ良くなった気がします。(前からかもしれないけど)
以前は、日本語入力ができないくて困っていたけど、ガラッと様子が変わって作り直したのか、24.04の時点ではできるようになりました。

ただ、気に入らない点が。
曲の変わり目に「ポン」と音が鳴るんですよ。
それも、無機質な音なものだから、気分が削がれる、削がれる。

設定を見ても、そんな設定はないし、誰だよこんなクソ仕様考えたの。
…と思っていましが、ようやく消す方法が見つかりました。

1. 右上のユーザのアイコンをクリック。
1. メニューの「設定」を選択。
1. 設定の「ディスプレイ」→「**曲が変わるときにデスクトップ通知を表示」をOFFにする。**

そうなんです。別に「曲の変わり目に音が鳴っていた」わけじゃないんです。「曲の変わり目に通知が表示され、その通知音が鳴っていた」んです。

…わかるかい、こんなの。