試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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

  1. 一部のGTK+ 3アプリケーションのウィンドウ装飾について
    1. 装飾部分の角の丸みとウィンドウの影について
  2. GNOME 3に含まれるパッケージのバージョンについて
  3. WestonとXWayland
  4. Google Chromeとlibudev0
  5. Sylpheedで使える迷惑メールフィルタbsfilter関係のメモ
  6. Mesaのバージョン
  7. gkrellm-cpufreqとPPAのパッケージについて

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

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

画像は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に切り替える)と外側に黒い領域が出てしまうが、コンポジット非対応環境で起動し直すことで、角の丸みや影はないものの、問題が出ない形で(コンポジット非対応環境向けに)描画される。

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

GNOME 3に含まれるパッケージのバージョンについて

2014年11月時点のGNOME 3の最新バージョンは3.14系だが、UbuntuではUnityなど色々な事情により3.12系や3.10系のプログラムが含まれている(GTK+も3.12系で、gnome-look.orgで配布されているテーマの新しいものは3.14系向けのため、GTK+ 3.12系では表示が崩れる)。

  • ppa:gnome3-team/gnome3-staging
  • ppa:gnome3-team/gnome3

のPPAリポジトリを用いてバージョン3.14を入れることはできる(戻すにはppa-purgeを用いる)ようだが、幾つかの問題点もあり、全ての人におすすめできるものではない。

WestonとXWayland

WaylandのディスプレイサーバWeston(パッケージ名「weston」)がインストールされた状態でCtrl-Alt-F[数字]を押すかchvt(sudoで使用)で端末画面に移ってテキストログインした後でweston-launch*2を実行すると生(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ごと落ちる!!)などの問題点もある。

Google Chromeとlibudev0

過去にもlibudev.so.0が無くて起動しない問題があったが、Google Chromeの動作に限ってはシステムのlibudev.so.1(の実体)をlibudev.so.0という名前でそのまま使っても問題はないようだ。
下は該当するシンボリックリンクを作成する作業例。

(64bit/amd64版)
gksudo -- ln -s /lib/x86_64-linux-gnu/libudev.so.1.4.0 /lib/x86_64-linux-gnu/libudev.so.0

(32bit/i386版)
gksudo -- ln -s /lib/i386-linux-gnu/libudev.so.1.4.0 /lib/i386-linux-gnu/libudev.so.0

なお、Google Chromeのもとになっている自由なソフトウェアChromiumのパッケージではlibudev1のほうが(直接)使われている。

Sylpheedで使える迷惑メールフィルタbsfilter関係のメモ

メールクライアントSylpheedで迷惑メールフィルタとして使えるbsfilterを以前パッケージとしてではなく本家から入手して配置していたのだが、14.10にしたタイミングでまた動かなくなっていた*4
2014年11月時点の最新バージョンは1.0.19となっており、配布ファイルbsfilter-1.0.19.tgz内のbsfilter/bsfilterで古いファイルを置き換えたところ正常に動くようにはなったが、このbsfilterはかなり前からDebian/Ubuntuでは同名のパッケージが用意されていたことが今更になって分かったので、今後Ubuntuを使っている限りは手動での入手・配置は今後はやめてディストリのパッケージを使うことにした(今回もパッケージとして入れていればバージョン1.0.19が入ったので問題にはならなかった)。

Mesaのバージョン

Mesaライブラリのバージョンは10.1から10.3に上がっている。

(Radeon HD 4200での情報取得例)
$ glxinfo | grep OpenGL | grep -v extensions:
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD RS880
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.0
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 10.3.0
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.3.0
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.0

gkrellm-cpufreqとPPAのパッケージについて

今更ではあるが、GKrellMでcpufreqの情報をリアルタイムに表示するプラグイン「gkrellm-cpufreq」がUbuntu 13.10から標準でパッケージになっていることに気付いた。にも関わらず14.10までPPAリポジトリへアップロードしていたため、13.10からの分は削除した。

関連URL:

使用したバージョン:

  • GTK+ 3.12.2
  • Devhelp 3.12.1
  • Linux 3.16
  • Mesa 10.3
  • Weston 1.5.0
  • xorg-server 1.16.0
  • uim 1.8.6
  • GIMP 2.8.10

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

*2:「-launch」に注意

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

*4:以前にもRubyのバージョンによって動かなくなったことがあった