Ubuntu 14.10における幾つかの個人的なメモ(主にGTK+とWayland関係)

Last modified: 2021-08-02

当時の記事から一部の古い内容を除いて公開する。

一部のGTK+ 3アプリケーションのウィンドウ装飾について

幾つかのGTK+ 3アプリケーションでは、ウィンドウの装飾がこれまでとは異なり、ウィンドウの一部として存在する形(クライアント側の装飾)となる。1

gtk3-clientside-decoration

画像はGTK+ 3.12のgtk3-widget-factory(パッケージgtk-3-examplesに含まれる)。使用テーマはAdwaita

左上の丸はメニューのボタンで右上の “X” (“閉じる” ボタン)の左が設定ボタンとなるが、このあたりの外観についてはGTK+ 3のテーマによって異なる。ウィンドウマネージャの装飾はなく、X11上ではウィンドウマネージャのテーマを変更しても外観は変わらない。

最近のGNOME 3アプリケーションではボタンなどが並ぶバー(“ヘッダバー” と呼ばれ、GTK+ 3.10からGtkHeaderBarクラスとして利用可能)の中に、メニューを出すボタンやウィンドウタイトル,閉じるのボタンがまとめて配置される形となっており、省スペースとなっている(メインの表示内容に場所が広く使えるようになっている)。ダブルクリックによるウィンドウの最大化/最大化解除の他、サイズ変更は従来のアプリケーションと同様に行える。最小化はヘッダバー部分のコンテキストメニューから行う。

装飾部分の角の丸みとウィンドウの影について

コンポジット対応の環境(X11ではCompiz,KWin,xfwm4などの対応ウィンドウマネージャ使用時・Waylandでは標準で対応)が利用可能な場合に該当プログラムを起動すると、上の画像のようにウィンドウ装飾部分の角が丸みをおびた形になるとともに、ウィンドウの影も描画される。このプログラムが動作している状態でコンポジット機能が動作していない状態に切り替える(例:CompizからOpenboxに切り替える)と外側に黒い領域が出てしまうが、コンポジット非対応環境で起動し直すことで、角の丸みや影はないものの、問題が出ない形で(コンポジット非対応環境向けに)描画される。

gtk3-widget-factory

画像はGTK+ 3.12向けのバージョンの “Zukitwo”。 なお、1枚目の画像はCompizが動作している状態でキャプチャしたもので、ウィンドウの後ろに白一色のウィンドウをGIMPで作成して表示しているが、X11上のコンポジット対応環境で該当プログラムを起動してそのウィンドウのキャプチャを行うと、影の部分で周り(背面)のウィンドウや壁紙の内容が入ってしまう。これが嫌な場合はコンポジット非対応ウィンドウマネージャに切り替えた後で起動して上の画像のような形にキャプチャするのが良さそう。 また、ドキュメントビューアDevhelpをCompiz環境でネガ反転して閲覧したい場合にも、周りに白い枠が出てしまうのを防ぐのに役立つ。この場合のウィンドウのサイズ変更は装飾部分のコンテキストメニューから “サイズの変更” を選択後行える。

devhelp-openbox-to-compiz

WestonとXWayland

WaylandのディスプレイサーバWeston(パッケージ名weston)がインストールされた状態でCtrl-Alt-F[数字]を押すかchvt(sudoで使用)で端末画面に移ってテキストログインした後でweston-launch2を実行すると生(DRMバックエンド)のWestonの環境に入れる3が、WaylandのX11互換(X11向けのGUIプログラムを動かす)機能は従来はWeston側のモジュール部分のみが提供されており、このモジュールから呼び出されるXサーバである “XWayland” はxorg-serverのバージョン1.16以上からの対応 となっているため、X11向けのプログラムは公式のバージョンのパッケージとしてのxorg-serverでは実際には動作していなかった。

Ubuntu 14.10ではバージョン1.16系が入っているためにこの機能が利用でき、X11向けのプログラムが動作する。ただしパッケージxwaylandをインストールする必要があり、また、XWaylandを用いるためのモジュールを有効にするために

## テキストログイン後に実行
$ weston-launch -- --modules=xwayland.so

として起動するか、もしくはWeston用の設定ファイルを編集する。

[一部]ファイル名:${XDG_CONFIG_HOME}/weston.ini もしくは[ホームディレクトリ]/.config/weston.ini など
# XWaylandにはxwayland.soが必要
[core]
modules=xwayland.so,desktop-shell.so

# 日本語キーボードのレイアウト
[keyboard]
keymap_layout=jp

# 端末で使用したいフォントを指定
[terminal]
font=[端末に使用したいフォント名]
font-size=[フォントサイズの値]

Weston+XWayland上のX11アプリケーションにおける日本語入力については

  • GTK+ 2アプリケーションでuimのimmoduleを選択した状態での動作
  • X11バックエンド使用時のGTK+ 3アプリケーションでuimのimmoduleを選択した状態での動作(不安定?)
  • uim-ximを起動後のXIMによるEmacs上の動作

を確認し、JISかな入力での “ろ” と “ー” の区別もできている。

なお、GPUを用いた3Dゲームなどの用途では記事公開当時はXサーバを直接使用した場合よりも動作が遅く、GPUの性能がプログラムを快適に動かすのに十分なレベルの場合を除き、X11環境でコンポジット無効のウィンドウマネージャを用いて動かすのが好ましかった(WaylandはCompiz同様にGPU資源をある程度使ってしまう)。

また、当時はXWayland自体もまだ動作が安定していない印象があり、GIMPのツールオプションウィンドウと相性が悪い(Westonごと落ちる)などの問題点もあった。


  1. これまで、Wayland環境でGTK+ 3アプリケーションを動かすと、ウィンドウに装飾がなく扱いにくかった ↩︎

  2. “-launch” に注意 ↩︎

  3. X11環境に戻るにはCtrl-Alt-F7を押すか sudo chvt 7を端末アプリケーションで実行する ↩︎