Ubuntu 11.04で Gtk2のテストが失敗する問題

以前買った GTK本をいまさら読んでいるのですが、ただ Cで書くのも
面白くないので Perlでも書いてみようと思って Gtk2をインストール
しようとしたのですが、テストでこけたのでそれについて。

失敗するテスト

失敗するのは t/GtkScrolledWindow.tです。

  % prove -b -t t/GtkScrolledWindow.t
  #   Failed test 'The object isa Gtk2::HScrollbar'
  #   at t/GtkScrolledWindow.t line 40.
  #     The object isn't a 'Gtk2::HScrollbar' it's a 'Glib::Object::_Unregistered::OsScrollbar'

  #   Failed test 'The object isa Gtk2::VScrollbar'
  #   at t/GtkScrolledWindow.t line 41.
  #     The object isn't a 'Gtk2::VScrollbar' it's a 'Glib::Object::_Unregistered::OsScrollbar'
  # Looks like you fa

こんな具合に期待したオブジェクトが取得できていない、という結果が得られます。

問題点

Ubuntu 11.04でスクロールバーが変わったことが問題でした。
Ubuntu 11.04からは overlay-scrollbarというスクロールバーに
切り替わっており、スクロールバーに関するオブジェクトを取得しようと
すると, HScrollbarや VScrollbarではなく OsScrollbarというオブジェクトが
返ってきたというわけです。

解決策

/etc/X11/Xsession.dに以下のようなファイルを作成し、ログインしなおせば
overlay-scrollbarが無効化されます。これにより Gtk2のテストもパスする
ようになります。私の場合はファイル名は 80overlayscrollbars としました。

export LIBOVERLAY_SCROLLBAR=0


私は overlay-scrollbarがあまり好ましくなかったので、
ちょうど良かったです。