Chromiumはプラットフォーム抽象化レイヤとしてOzoneを使っており、Chromiumの起動時フラグに--ozone-platform=waylandと入れるとChromiumをWayland上で動かせる
では、Chromiumはどのプロトコルを使うのか?
一覧
ui/ozone/platform/wayland/common/wayland_object.h に Bind() が定義されていて、これが wl_registry_bind() を呼ぶらしいので、wl::Bindで検索すると確認できる
1ab009629c655470da0b6c237dbd37c4bbb8ea9d で試した結果:
- wl_compositor, wl_data_device_manager, wl_drm, wl_fixes, wl_output, wl_seat, wl_shm, wl_subcompositor, xdg_wm_base
- それはそう
- ExporterType
host/xdg_foreign_wrapper.ccで定義されているテンプレート- 実質的に
zxdg_exporter_v[12]となっている
- gtk_primary_selection_device_manager
- なにこれ?(wayland.app には zwp_primary_selection_device_manager_v1 しか見当たらないし、検索してもそれっぽいものがない)
- もう消えたらしい:gdk/wayland: Replace gtk-primary-selection with primary-selection-unstable-v1 (!2630) · Merge requests · GNOME / gtk · GitLab
- org_kde_kwin_appmenu_manager
- KDE Plasmaは、macOSのように、画面上部にFile, Edit…といったメニューを表示できるが、「この wl_surface が持つメニュー項目は DBus のこの ServiceName, ObjectPath にあるよ」というのを伝えるためのプロトコルらしい
- org_kde_kwin_idle
- deprecated だが指定した時間 idle が続いた時に通知を受けるためのものっぽい
- overlay_prioritizer
- なにこれ?(Chromium独自のプロトコルらしい)
- struct zwp_pointer_constraints_v1
- マウスカーソルの位置を固定したり、移動できる領域を制限したりする
- struct zwp_pointer_gestures_v1
- wp_color_manager_v1
- wp_content_type_manager_v1
- surface のタイプを photo, video, game から指定できる
- wp_cursor_shape_manager_v1
- ::wp_fractional_scale_manager_v1
- wp_linux_drm_syncobj_manager_v1
- wp_presentation
- 動画や音声の再生のために時間をフィードバックするやつ?
- wp_single_pixel_buffer_manager_v1
- 1ピクセルのバッファを作るためのもの
- wp_viewporter
- surface の crop と scale をするやつ
- ::xdg_activation_v1
- ::xdg_toplevel_drag_manager_v1
- 着脱可能なウィンドウのためのやつ?
- ::xdg_toplevel_icon_manager_v1
- xdg_toplevel のアイコンを wl_buffer としてもらえる
- ::xx_session_manager_v1
- いわゆる「セッション」の復帰とかに使うやつ?
- zcr_alpha_compositing_v1
- zcr_extended_drag_v1
- zcr_keyboard_extension_v1
- zwp_idle_inhibit_manager_v1
- idleにしないで!と伝える
- zwp_keyboard_shortcuts_inhibit_manager_v1
- zwp_linux_dmabuf_v1
- zwp_primary_selection_device_manager_v1
- zwp_relative_pointer_manager_v1
- マウスポインタの移動を、時間と移動量として取得できる
- zwp_tablet_manager_v2
- zwp_text_input_manager_v1
- zwp_text_input_manager_v3
- zxdg_decoration_manager_v1
- zxdg_output_manager_v1
- output の論理的な位置/サイズを取得
起動に必須なのは?
未実装のプロトコルがあったらエラーを吐いてクラッシュする、というわけではなく、 output がないと wl_display.sync -> wl_callback.done を繰り返すから、という理由らしい(適当なコンポジタで wl_output を無効化して確認した)wl_output を実装しないと動かなかった記憶がある
ちなみに wl_compositor がないとセグフォ
というわけで、どれが必須なのかよくわかりません