-
-
Save aont/ff752668f48afbddc19fadc146316347 to your computer and use it in GitHub Desktop.
- Hyper-V の “接続(基本セッション)” で表示するだけなら Wayland セッションは起動可能
– Linux カーネル 6.2 以降に含まれる
hyperv_drm
ドライバーを使えば GNOME-Wayland が動くことが報告されています(gist.github.com)。 - しかし Hyper-V の「拡張セッション」(RDP over vsock)を使う場合は現状 Xorg 一択 – 拡張セッションは内部で xrdp + X11 を前提としており、Wayland 用 RDP サーバー(GNOME Remote Desktop など)は vsock を解さないため Hyper-V が検出できません(forum.level1techs.com, elevenforum.com)。
- 遠隔操作を諦めずに Wayland を使う場合は手段を変える必要あり – TCP/RDP(3390 など) で GNOME Remote Desktop を直接叩く、VNC/SPICE を導入する、あるいは基本セッション+Windows の VMConnect を使う、といった選択肢がある。
手順 | コマンド/操作 | 補足 |
---|---|---|
1. カーネルを確認 | uname -r |
6.2 以降推奨 (hyperv_drm が標準組込) |
2. hyperv_drm を有効化 |
```bash | |
sudo mkdir -p /etc/modprobe.d | ||
echo "blacklist hyperv_fb" | sudo tee /etc/modprobe.d/blacklist-hyperv-fb.conf | |
sudo update-initramfs -u -k all | ||
``` | 旧式 hyperv_fb を外して Wayland 対応ドライバーに切替え(discourse.ubuntu.com) |
|
3. Wayland を許可 | /etc/gdm3/custom.conf で #WaylandEnable=false をコメントアウト |
Ubuntu デフォルトは Wayland 有効だが念のため |
4. 再起動してログイン | VMConnect 画面で通常ログイン | 歯車アイコンは不要、Wayland が既定になるはず |
ポイント :
lsmod | grep hyperv_drm
でドライバーが読めているか確認。表示解像度変更が出来れば Wayland で動いているケースが多いです。
- Hyper-V 側の制約 拡張セッションは vsock チャネル 上で RDP を流し、ゲスト側では xrdp-vsock が待ち受ける仕組み。xrdp は Xorg バックエンドのみ対応。
- GNOME Remote Desktop (grdctl) は TCP/RDP を話すが vsock 非対応。そのため Hyper-V からは未検出(forum.level1techs.com)。
- Plasma/KDE の KRdp も同様 – Wayland-RDP 自体は実装済みだが vsock ブリッジが無い。
方法 | 長所 | 短所 |
---|---|---|
基本セッション + Wayland(VMConnect 直結) | シンプル、vsock 不要 | クリップボード共有・可変解像度などの機能が限定 |
TCP/RDP で接続 (grdctl rdp set-port 3390 ) |
Wayland のまま Windows の mstsc で操作可 | Windows 側からは接続先 IP が必要、vsock 経由の利便性は失われる |
VNC/Spice | Wayland 互換実績あり | 追加サービスの導入・ポート開放が必要 |
あきらめて Xorg+xrdp | Hyper-V 標準機能が全部使える | Wayland のセキュリティ/サンドボックス利点を享受できない |
- ローカル (VMConnect) での表示が目的なら Wayland 化は十分可能。
hyperv_drm
を使う設定だけ行えば OK。 - リモート操作を Hyper-V 拡張セッションに頼る場合は、今のところ Xorg を残すしかない。
- どうしても Wayland + リモート が必要なら、vsock を迂回して TCP/RDP or VNC/SPICE を利用する構成を検討すると良いでしょう。
mutter --wayland --nested
で起動するネスト版 GNOME/Mutter は、ダミー出力(dummy output) を 1 枚だけ作り、その解像度がそのままウィンドウサイズになります。
この解像度は 環境変数で起動前に指定 する方式が公式に用意されています。
やりたいこと | 例に挙げたコマンド | 備考 |
---|---|---|
1920×1080 のウィンドウで起動 | bash<br>MUTTER_DEBUG_DUMMY_MODE_SPECS=1920x1080 \ <br>mutter --wayland --nested -- gnome-terminal |
-- 以降は最初に開くアプリ。省略可 |
2560×1440 120 Hz を要求 | bash<br>[email protected] \ <br>mutter --wayland --nested |
リフレッシュレートも「@数値」で付けられる |
古い Mutter (GNOME 3.32 以前) | bash<br>MUTTER_DEBUG_DUMMY_MONITOR_SPECS=1920x1080 mutter … |
変数名が MONITOR だった世代がある |
MUTTER_DEBUG_DUMMY_MODE_SPECS=w×h[@rate]
を与えてから起動すると、そのサイズでネストウィンドウが生成されることを BLFS の公式手順が示しています。(linuxfromscratch.org)
Mutter のダミーバックエンドには追加で
export MUTTER_DEBUG_NUM_DUMMY_MONITORS=2 # 台数
export MUTTER_DEBUG_DUMMY_MONITOR_SCALES="1,1" # スケール
といった変数もあり ます が、解像度を 1 枚ごとに変える/ホットプラグする といった高度な操作は実装されていません。開発者フォーラムでも “デバッグ用であり、本格利用は想定していない” と明言されています。(discourse.gnome.org)
-
起動後にリサイズは出来ない 現状は起動時の解像度が固定。変えたい場合は環境変数を調整して再起動するしかありません。
-
タイトルバーを消したい/フルスクリーン化したい
- 外側(ホスト)側の WM/Compositor の機能(
wmctrl
,xdotool
,kwin rules
など)でウィンドウを最大化・装飾非表示にする。 - あるいは
gamescope -F
などフレームレス全画面化ツールでネストセッションをラップする。
- 外側(ホスト)側の WM/Compositor の機能(
-
--virtual-monitor
オプション こちらは ネイティブバックエンド で “本体側” GNOME Shell を起動するときの仮想モニタ機能です。--nested
モードでは効きません。 -
デバッグ用途に留めるのが無難 ネストバックエンドは X11 部分を流用した簡易実装のため、ホットプラグや色管理・リフレッシュレート切替などは不足しています。安定性・機能が必要な場合は wlroots 系の軽量コンポジタや headless + --virtual-monitor で別セッションを作る、あるいは普通の VM を検討してください。
- サイズ変更は 起動前に
MUTTER_DEBUG_DUMMY_MODE_SPECS=w×h[@rate]
を設定する。 - それ以外の後からのリサイズや多様なディスプレイ構成はサポート外。
- デバッグ以外の用途では別解(gamescope ラップ、wlroots 系 compositor、
--virtual-monitor
付き headless 起動など)も検討すると良いでしょう。
Weston をすでに起動している状態で、外部のシェルやスクリプトから Wayland ネイティブアプリを接続したい場合、どのソケットに接続するか と どのツールキットを Wayland モードで動かすか を環境変数で明示できます。本稿では代表的な変数を用途別に列挙します。
変数 | 意味 | 典型値 / 設定方法 | 備考 | 出典 |
---|---|---|---|---|
XDG_RUNTIME_DIR |
Wayland ソケットを置くランタイムディレクトリ | /run/user/$(id -u) (systemd-login 使用時の既定) |
Weston 起動前に有効である必要がある。 | (wayland.pages.freedesktop.org) |
WAYLAND_DISPLAY |
接続先ソケット名 | wayland-0 , weston-1 など。weston --socket=weston-1 で明示した場合は同名を指定 |
アプリがどの Weston に接続するかを決定 | (superuser.com) |
ポイント
- Weston 端末(
weston-terminal
)から起動する場合は既に両方設定済みなので追加指定は不要。- 端末外(例: 既存 X11 セッションのシェル)から接続する場合のみ手動設定する。
ツールキット / アプリ | 変数 | 推奨値 | 効果 | 出典 |
---|---|---|---|---|
GTK 3/4 | GDK_BACKEND |
wayland (または x11 ) |
バックエンドを強制選択 | (wiki.archlinux.org) |
Qt 5/6 | QT_QPA_PLATFORM |
wayland (fallback に xcb を付けるなら wayland;xcb ) |
Qt の描画プラットフォーム切替 | (forum.qt.io) |
SDL2 | SDL_VIDEODRIVER |
wayland (または wayland,x11 ) |
SDL2 アプリを Wayland ネイティブ実行 | (wiki.archlinux.org) |
Firefox / Gecko 系 | MOZ_ENABLE_WAYLAND |
1 |
Wayland レンダリングを有効化 | (reddit.com) |
winit(Rust 系 GUI) | WINIT_UNIX_BACKEND (0.29 未満) |
wayland |
バックエンド指定(0.29 以降は WAYLAND_DISPLAY の有無で自動判別) |
(wiki.archlinux.org) |
Clutter | CLUTTER_BACKEND |
wayland |
Clutter ベースのアプリ向け | (Clutter docs) |
※ 近年のライブラリは 自動検出が標準 のため、まずは未設定で試し、動かない場合のみ適用するのが推奨です。
# 例: 既存 X11 セッションから nested Weston に接続
# - Weston は weston --socket=weston-1 で起動済みとする
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export WAYLAND_DISPLAY=weston-1
# 任意: ツールキット強制
export GDK_BACKEND=wayland
export QT_QPA_PLATFORM=wayland
export SDL_VIDEODRIVER=wayland
export MOZ_ENABLE_WAYLAND=1
# アプリ起動
gtk4-demo &
firefox &
- 最低限必要なのは
XDG_RUNTIME_DIR
とWAYLAND_DISPLAY
。これでソケットを認識させる。 - ツールキット固有の変数は “動かなかったときの切り札” として段階的に指定する。
- Weston 端末内で起動する場合は既に環境が整っているため、原則追加設定不要。
これらを押さえておけば、Weston(あるいは他の Wayland コンポジタ)上でアプリを確実に Wayland ネイティブ動作させられます。