Open12

Ubuntu 24.10 インストール Hyprlandなど

苔ワサビ苔ワサビ

UbuntuをインストールしてHyprlandを設定するなどしたので、引っ掛かりポイントを思い出してメモする。
私は今回がLinuxのデスクトップのインストールは初めてなのでなにか間違いがあるかも。

苔ワサビ苔ワサビ

Ubuntu 24.10にインストールする方法は公式に用意されている。

https://wiki.hyprland.org/Getting-Started/Installation/

ただし、これではgitの最新版より古いバージョンが入る。
確か0.41系が入った覚えがある。

Hyprlandはまだまだ開発が活発で新しいバージョンで不具合が修正されていたりするので、新しいバージョンを入れたい。
現時点で最新版は0.44.1。

苔ワサビ苔ワサビ

Hyprlandの最新版を入れるためには自分でソースからビルドすることになるが、依存するパッケージが色々あったりビルドする順番が重要みたいで、一度自分で一通りビルドしてみたものの起動するとクラッシュする実行ファイルが出来上がってしまった。

苔ワサビ苔ワサビ

Ubuntu 24.10上で最新版のソースをダウンロードしてビルドを走らせるスクリプトが以下のリポジトリで公開されているのでありがたく使わせてもらった。
https://github.com/katabame/Ubuntu-Hyprland

こちらのスクリプトでビルドすると問題なく動くものがビルドできてたいへん助かっている。

苔ワサビ苔ワサビ

ディスプレイマネージャーをUbuntuのデフォルトのgdmのままにしていると、exec-onceで起動するものがクラッシュしたりして動かなかった。

具体的には以下が動かなかった:

  • Hyprshot
  • mpvpaper
苔ワサビ苔ワサビ

ディスプレイマネージャーをSDDMに変更した。

SDDMのログイン画面のテーマがデフォルトだとあれなのでWeb上で公開されているテーマを使おうとしたが、Qt5ベースのSDDMテーマが動かなかった。
Qt6ベースのテーマであるsimple-sddm-2を利用して解消。
https://github.com/JaKooLit/simple-sddm-2

苔ワサビ苔ワサビ

NVIDIAのGPU対応

https://wiki.hyprland.org/Nvidia/ でインストールするように言われているもののうち足りないものを入れる。
ドライバとかはUbuntuのインストール時に入っていたので、足りなかったlibnvidia-egl-gbm1だけ追加でインストール。

mkinitcpioの設定ファイルに書き込むように言われているが、Ubuntuがmkinitcpioベースではない?みたいなので次のファイルに記述を追加する:
/etc/initramfs-tools/modules

nvidia nvidia_modeset nvidia_uvm nvidia_drm

他に以下の設定を追加する:
/etc/modprobe.d/nvidia.conf

options nvidia-drm modeset=1 fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1

/etc/default/grub GRUB_CMDLINE_LINUX=の行を編集する:

GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 rcutree.rcu_idle_gp_delay=1 "

grubを変更したので以下を叩いておく:

sudo update-grub
苔ワサビ苔ワサビ

画面共有について

xdg-desktop-portal-wlrとxdg-desktop-portal-hyprlandを使える。

wlrの方は安定しているが、ウィンドウごとの共有ができずスクリーンごとの共有しかできないようだ。

xdg-desktop-portal-hyprlandはソースコードからビルドする必要があるうえに、OBSとの組み合わせでうまく動かないことがある。

xdg-desktop-portal-hyprlandでOBSで共有しようとすると共有を開始した瞬間でキャプチャがフリーズして止まってしまうことがある。
ログを見てみると、以下のようなエラーが出ているようだ。

[LOG] [screencopy/pipewire] Out of buffers

.config/hypr/xdph.confの設定でキャプチャフレームレートを30fpsにすると多少は改善した。

screencopy {
    max_fps = 30
}

その上で、画面が固まった場合にOBS上でそのソースを表示非表示を切り替えると、動き出すようにはなるので一旦それをワークアラウンドとしてwlrではなくhyprlandを使っていく。


関連してそうなバグ: https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/239
ワークアラウンドについて:https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/220#issuecomment-2227471077

苔ワサビ苔ワサビ

解決できていない問題として、Xwayland経由のQtアプリと思われる?ものが色がおかしい。

例えばkritaのウィンドウはSupport Kritaのハートマークが本来赤いべきところが青い。

QnapのQsyncのアプリも青いバーがオレンジになっている。

総じてrチャンネルとbチャンネルがフリップしている模様。

過去にもHyprlandでスクリーン共有時とかにrチャンネルとbチャンネルがフリップする問題があり、それがバグ修正されているようなので、まだ似たような問題が残っているのかもしれない。

苔ワサビ苔ワサビ

Waylandの問題としてBlenderのキーバインドがおかしい。

テキスト入力欄では日本語キーボードで入力ができるが、ショートカットの入力には日本語キーボードにある記号周りを受け付けてくれない。
具体的にはカメラを移動するのに使えるCtrl + ` `が反応せず。

これは昔からある問題のようで、以下のIssueでトラックされてそう。
https://projects.blender.org/blender/blender/issues/87578

上記Issueでは4.4のデイリービルドに修正を入れてみたとのことだが、残念ながら私の環境では4.4の該当ビルドをいれても解決しなかった。

苔ワサビ苔ワサビ

Hyprlandのワークスペースを使いやすくするためにhyprpm経由で以下のプラグインを入れた。

前者はワークスペースの移動時のプレビューを出してくれるやつ。
私はトグルをWin + Tabに設定した。

後者はワークスペースをモニターごとに個別に番号を1から降ってくれるやつ。
Hyprlandのデフォルトのワークスペースの番号はすべてのモニターで共通なので、マルチモニターでワークスペースを使う場合にどのモニターでどの番号のワークスペースを使ったか覚えておく必要があり挙動が微妙だった。
同様のことをやるプラグインにhyprsomeとsplit-monitor-workspaceがあるが、上記プラグインがそれらの後継として新しいようなので入れた。

苔ワサビ苔ワサビ

firefoxで右クリックしてメニューを出すとフリーズするというよくわからない問題があった。

色々探すとpipewireの周りでエラーが起こってそう。
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1279

これは自分のhyprlandの設定ファイルでexec-onceでwireplumberを起動していたのが問題だった。
wireplumberをsystemctl経由で起動するようにしたら何も問題なくなった。

systemctl --user enable wireplumber