# Wayland (日本語)

関連記事

- KMS
- Xorg
- Mir
- カーソルテーマ

Wayland は Linux の新しいウィンドウプロトコルです。Wayland を利用するためには一部のソフトウェアの変更と再インストールが必要になります。Wayland について詳しくはホームページを見て下さい。

Warning: Wayland は開発途上です。サポートはありませんし、あなたの期待通りに動作するとは限りません。

## 要件

今のところ Wayland は KMS を利用しているシステムでしか動作できません。

## インストール

ほとんどの場合 gtk2 や gtk3 の依存パッケージとして既に間接的に Wayland がインストールされているはずです。インストールされていない場合、公式リポジトリから wayland をインストールしてください。

## 使用方法

Wayland はただのライブラリなので、それだけでは使い物になりません。利用するには、(Weston などの) コンポジタ、Weston デモアプリケーション、Wayland プラグインの入った Qt5、Wayland をサポートした GTK+ などが必要です。

## Weston

### インストール

公式リポジトリから weston をインストールする必要があります。

### 使用方法

Weston をインストールしたのなら Wayland をテストする環境が整っているはずです。

Note: Weston を起動するには video グループに入っている必要があります; このコマンドは root で動作させることをサポートしていません。root で実行すると VT がフリーズするかもしれません。

起動中の X セッションの中で Weston を実行することができます:

    $ weston

もしくは、Weston をネイティブで起動するには、端末を切り替えて次を実行して見て下さい:

    $ weston-launch

Weston の TTY からデモを実行できます。ターミナルエミュレータを起動するには:

    $ weston-terminal

画面に花を散らすには:

    $ weston-flower

フレームプロトコルをテストするには (`glxgears` を実行):

    $ weston-gears

画像を表示するには:

    $ weston-image image1.jpg image2.jpg...

PDF ファイルを表示するには:

    $ weston-view doc1.pdf doc2.pdf...

### 設定

キーボードレイアウト・モジュール・UI の設定ファイルの例です。詳しくは `man weston.ini` を見て下さい。

    ~/.config/weston.ini

    [core]
    ### uncomment this line for xwayland support ###
    #modules=desktop-shell.so,xwayland.so

    [shell]
    background-image=/usr/share/backgrounds/gnome/Aqua.jpg
    background-color=0xff002244
    panel-color=0x90ff0000
    locking=true
    animation=zoom
    #binding-modifier=ctrl
    #num-workspaces=6
    ### for cursor themes install xcursor-themes pkg from Extra. ###
    #cursor-theme=whiteglass
    #cursor-size=24

    ### tablet options ###
    #lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
    #lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
    #homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
    #animation=fade

    [keyboard]
    keymap_rules=evdev
    #keymap_layout=gb
    #keymap_options=caps:ctrl_modifier,shift:both_capslock_cancel
    ### keymap_options from /usr/share/X11/xkb/rules/base.lst ###

    [terminal]
    #font=DroidSansMono
    #font-size=14

    [launcher]
    icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
    path=/usr/bin/gnome-terminal

    [launcher]
    icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
    path=/usr/bin/weston-terminal

    [launcher]
    icon=/usr/share/icons/hicolor/24x24/apps/firefox.png
    path=/usr/bin/firefox

    [launcher]
    icon=/usr/share/icons/gnome/24x24/apps/arts.png
    path=./clients/flower

    [screensaver]
    # Uncomment path to disable screensaver
    path=/usr/libexec/weston-screensaver
    duration=600

    [input-method]
    path=/usr/libexec/weston-keyboard

    ###  for Laptop displays  ###
    #[output]
    #name=LVDS1
    #mode=1680x1050
    #transform=90

    #[output]
    #name=VGA1
    # The following sets the mode with a modeline, you can get modelines for your preffered resolutions using the cvt utility
    #mode=173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
    #transform=flipped

    #[output]
    #name=X1
    #mode=1024x768
    #transform=flipped-270

最小設定の `weston.ini`:

    ~/.config/weston.ini

    [core]
    modules=desktop-shell.so,xwayland.so

    [keyboard]
    keymap_layout=gb

    [launcher]
    icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
    path=/usr/bin/weston-terminal

    [launcher]
    icon=/usr/share/icons/hicolor/24x24/apps/firefox.png
    path=/usr/bin/firefox

    [output]
    name=LVDS1
    mode=1680x1050
    transform=90

#### XWayland

現在 XWayland は Device-Dependent X になっています。そして Xorg 1.16 でリリースされる予定です。コードは X サーバーのメインの開発ブランチに取り入れられています。スタンドアロンのプログラムになったため DDX にパッチをあてる必要はなくなりました。

Weston の中で X アプリケーションを動かすには、Xwayland を使ってリクエストを処理します。

Note: Weston 1.4 以前では新しい Xwayland をサポートしていません。また、GNOME 3.12 もまだ対応していません。

Wayland の中でネイティブの X アプリケーションを動かしたい場合、このページ を参照してください。その後、以下の設定ファイルを作成・修正してください:

    ~/.config/weston.ini

    [core]
    modules=xwayland.so,desktop-shell.so

これで X アプリケーションを weston で動作させることができます。

wayland で GNOME 3.12 を動かしたい場合は、多少のハックが必要です。このガイド を参照してください。Xwayland の PKGBUILD も含まれています。

## GUI ライブラリ

(公式ウェブサイト も参照してください)

### GTK+

公式リポジトリから gtk3 をインストールしてください、Wayland のバックエンドが有効になっています。

GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになり、Qt の lighthouse と同じ方法でバックエンドを切り替えることができるようになりました。

Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで X11 バックエンドを使いますが、`GDK_BACKEND=wayland` 環境変数を設定することでこれを上書きできます。

### Qt5

qt5-base を -opengl es2 でリビルドするか (現在は使えません、http://lists.qt-project.org/pipermail/development/2013-December/014789.html を参照) もしくは qtbase-git を使う必要があります。それから wayland のプラグイン qtwayland-git をビルドしてください。

Wayland プラグインを使って Qt5 アプリケーションを動作させるには `QT_QPA_PLATFORM=wayland-egl` をセットして下さい。

### Clutter

Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは extra に入っている公式パッケージで有効になっています。

Clutter アプリを Wayland 上で動作させるには、`CLUTTER_BACKEND` 環境変数を `wayland` に設定する必要があります。

### SDL

SDL 2.0.2 から実験的に wayland がサポートされており、Arch Linux ではデフォルトで有効になっています。

SDL アプリケーションを Wayland 上で動作させるには、`SDL_VIDEODRIVER` 環境変数を `wayland` に設定する必要があります。

### EFL

EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の プロジェクトページ を見て下さい。

## ウィンドウマネージャとデスクトップシェル

### KDE

KDE 4.11 beta から Wayland システムコンポジタの下で KWin を動かせるように なっています。今の所 KWin をセッションコンポジタとして使うためのサポートはありません。

### GNOME

バージョン 3.10 から、Gnome は実験的に Wayland をサポートしていますが Mutter を動作させるには xwayland-git をインストールする必要があります。詳しくは GNOME wiki を見て下さい。

    gnome-session --session=gnome-wayland

### i3

i3 の開発者によって Weston 用に i3 と同じ機能・スタイルを実装するシェルプラグインを作成する全く新しいプロジェクトが始められています 。

### Pure Wayland

Warning: Arch Linux で純粋な (X11 を使わない) Wayland システムをインストールする手順です。ソースからコンパイルして `/usr/local` にインストールします。あなたのシステムを破壊するかもしれませんので注意してください。

まず初めに、基本的な Arch Linux のインストールを行い、base と base-devel をインストールして下さい。xorg やそのライブラリはインストールしないで下さい。

#### Wayland, DRM, Pixman, libxkbcommon

    $ pacman -S wayland libdrm pixman libxkbcommon

#### Mesa

    $ sudo pacman -S python2 libxml2 llvm
    $ git clone git://anongit.freedesktop.org/mesa/mesa
    $ cd mesa
    $ CFLAGS=-DMESA_EGL_NO_X11_HEADERS ./autogen.sh --prefix=/usr/local --enable-gles2 --disable-gallium-egl --with-egl-platforms=wayland,drm --enable-gbm --enable-shared-glapi --with-gallium-drivers=r300,r600,swrast,nouveau --disable-glx --disable-xlib
    $ make
    $ sudo make install

#### cairo

Note: glx/gl や xcb ではなく、EGL だけです。

    $ pacman -S libpng
    $ git clone git://anongit.freedesktop.org/cairo
    $ cd cairo
    $ CFLAGS=-DMESA_EGL_NO_X11_HEADERS ./autogen.sh --prefix=/usr/local/  --disable-xcb  --enable-glesv2
    $ make
    $ sudo make install

#### weston

    $ sudo pacman -S gegl mtdev
    (libgl にはオプションから mesa-gl を選択して下さい)
    $ git clone git://anongit.freedesktop.org/wayland/weston
    $ cd weston/
    $ CFLAGS="-DMESA_EGL_NO_X11_HEADERS" ./autogen.sh --prefix=/usr/local/ --with-cairo-glesv2 --disable-xwayland --disable-x11-compositor --disable-xwayland-test
    $ make
    $ sudo make install

## トラブルシューティング

### LLVM assertion failure

LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで mesa をリビルドする必要があります。

これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい:

    $ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so

## 参照

- Arch Linux forum discussion
- Wayland documentation online
- Wayland usability wiki

Category:

- X Server (日本語)