開発者、システム管理者、ディストリビューター向けの新規事項

GNOME 3.12 は、GNOME 技術を使って作業する人向けの新機能や機能強化をたくさん導入しています。

新しい GTK+ ウィジェット

GTK+ ツールキットに新しく三つのインターフェースウィジェットが 3.12 で追加されました。

  • GtkActionBar: 新しいコンテナーです。GtkHeaderBar のように中央に子を配置できます。これは、ウィジェットの下部で使用することを想定し、選択したコンテンツにかかわるアクションを表示できます。

  • GtkPopover: メニューやダイアログの代替物として、一時的なビューに使用できる新しいウィジェットです。

  • GtkFlowBox: 子をリフローグリッドとして表示できるコンテナーです。水平方向、垂直方向どちらにも使用できます。

通知 API の統合

GNOME 3.12 では、新しい通知 API を導入しました。GIO に含まれ、GNotificationと呼ばれます。新 API は libnotify に取って代わるものであり、開発者は今後 libnotify にたいしてリンクする必要がなくなります (GNotificationorg.freedesktop.Notifications D-Bus インターフェースにフォールバックできます)。

新 API は整然と GTK+ に統合されており、GApplication および GAction と連携して動作します。新 API では、libnotify の多くの機能に加えていくつかの新機能も提供し、たとえばアプリケーション終了後も通知を維持する、などが可能になります。さらに、ユーザーが通知をアクティベートしたときにアプリケーションを再起動することもできます。

GNotification API の使用方法に関する詳細については、How Do I のページを参照してください。

新しい強力なプロセス起動 API

強力なプロセス起動 API が新しく 3.12 で導入されました。GSubprocess と呼ばれます。新 API では、アプリケーションの起動にgapplication コマンドラインユーティリティを使用できるようになります。アプリケーションにたいして、起動時にファイルを開く、アクションを開始する、などの指示を与えることができます。また、利用可能なアプリケーションおよびそのアクションの一覧を取得することもできます。コマンドラインユーティリティには bash 補完も完備しています。

GApplication は、便利な --gapplication-service など、コマンドラインのハンドリングもサポートするようになりました。

開発者ドキュメントの改善

3.12 では、GTK+ の API リファレンスに大幅な改善を加えています。ドキュメントを編成し直し、より論理的な構成となるようにしました。概要セクションを整理し、読みやすくなりました。また、ウィジェットのスクリーンショットもすべてアップデートしました。

ドキュメントのマークアップも多くのライブラリで改良しました。GTK+GLibGDK-Pixbuf、およびClutter では、Markdown に移行しました。これにより、見た目も整理され、ソースでのメンテナンスも行いやすくなりました。

最終的に、フォーマットの改良はすべてのドキュメントにたいして行い、見やすや、読みやすさの向上につながりました。

テスト用に Wayland が利用可能に

3.12 では、Wayland の完全な統合に向けて大きな進展がありました。たとえば、libinput ライブラリを新規に作成し、ログインとセッション管理機能を新しくしました。Wayland に関心のある開発者、つまり Wayland 環境で自分のソフトウェアをテストしたい方は、最新の開発成果を試すことができます。

Wayland 下で gnome-shell を起動するには、次のコマンドを端末で実行します。

gnome-session --session=gnome-wayland

また、GDK_BACKEND を指定することで、個別のアプリケーションを Wayland で起動することもできます。次のコマンドを実行します (application-name は、アプリケーションの実行ファイル名に置き換えてください)。

GDK_BACKEND=wayland application-name

アプリケーションが Wayland での起動に失敗した場合は、X11 へフォールバックしようとします。

Wayland 上の GNOME の詳細については、GNOME Wayland の Wiki ページを参照してください。

Tracker の更新

検索エンジン、検索ツール、メタデータストレージシステムである Tracker は、3.12 で多くの改良点があります。

  • マルチメディアファイルに関連付けられたアートデータを処理するための libmediaart という新規ライブラリが、Tracker のコードをベースに作成されました。libmediaart は、メディアファイルに保存されたアートデータをキャッシュでき、またアートデータの検索、およびアーティスト、アルバム、メディアアイテムのキャッシュサイズ削減の一貫した方法を提供します (libmediaart はサムネイル生成のためのものではありません)。

  • もう一つの新規ライブラリ、libtracker-control が検索管理用に追加されました。

  • パッシブ抽出機能を新規に設け、特定のメタデータ抽出 (たとえば画像の向きなど) が、リソース変更のシグナルをリスンすることにより可能となりました。以前はリソースに関する情報の挿入が一度に行われていました。これは、特定のメタデータの挿入が行われなくても、ファイルデータ (たとえばファイルの名前やサイズなど) の挿入が行われることを意味します。

  • インデクシング時に RDF タイプに優先度をつけられるようになりました。これにより特定の状況向けにインデクシングを調整することができます。

  • tracker:normalize() および tracker:unaccent()SPARQL 関数をサポートしました。

  • 新コマンド、tracker-sparql --tree を用意し、データベースオントロジーを表示できるようになりました。これにより、開発者がクラス階層の明確な図を取得できるようになります。

  • ICU を使用した、メタデータ用エンコーディング検出をサポートしました。

  • Tracker データベースの GraphUpdated シグナルの遅延を設定できるようになりました。このシグナルは、データーベースにおけるリソースの変化 (たとえば、新規ファイルが追加されたなど) を通知するのに使用されます。以前は、この遅延は常に 1 秒でした。

Lua による Grilo 拡張

Grilo メディア発見フレームワークでは、Lua の強力ながらもシンプルなパターンマッチング機能を利用して、オンラインメディアソースを追加できるようになりました。実装例を含めた詳細については、これを扱った Bastien Nocera のブログポストを参照してください。

クライアントサイドデコレーションの成熟

クライアントサイドデコレーションにより、アプリケーションウィンドウがウィンドウマネージャーからいくつかの機能を引き継げるようになりました。この機能は、前回のリリースの GtkHeaderBar ウィジェットにより初めて導入されました。その後、GtkHeaderBar は大きな成熟を見せました。このウィジェットは一貫した高さを持ち、タッチデバイスでヘッダーバーをドラッグすることでウィンドウを動かすことができます。ヘッダーバーには、標準的な閉じるボタンなど様々なウィンドウコントローラーに加えてアプリケーションメニューを持たせることもできます。

Python バインディングの改良

GNOME の Python バインディングが 3.12 で改良されました。

  • Python の関数用ドキュメンテーション文字列は、引数および戻り値の型情報を含めた正確なシグニチャを表示できるようになりました。

  • 関数の末尾引数のデフォルトが、暗黙の None となるようになりました。

  • すべてのコールバックコネクション関数は、可変数のユーザーデータ引数を受け付けられるようになりました。

  • Python から GTK+CSS を使用する方法を解説したデモを新しく用意しました。

  • GObject.threads_init の呼び出しは、マルチスレッドプログラミングでもう必要ではありません。

さらに、メモリおよびパフォーマンス上の改善を大幅に行いました。

移植性の強化

様々な Unix 系オペレーティングシステムにおける移植性が 3.12 で大きく改善しました。150 を超える FreeBSD の問題が報告され、修正されました。またテストビルドも定期的に実行されています。他のオペレーティングシステム向けの作業も継続して行われています。また、新しい対応プラットフォームポリシーが、GLib に導入されました。

この取り組みの詳細については、Ryan Lortie がブログで解説しています

他の改良点

開発者、システム管理者向けの 3.12 でのその他の改良には次のものがあります。

  • たいていの GTK+ コンテナーは背景を描画できるようになりました。

  • モデルベースメニューは、特定の条件下でアイテムを非表示にできます。

  • GtkBox は、GtkHeaderBarと同じように中央に子を配置できるようになりました。

  • 高 DPI ディスプレイを Clutter でサポートしました。GTK+GNOME 設定デーモンの共有する同じ設定が使用されます。