一部のWMでは、ボタンの背景の色など、ウィンドウの表示方法に影響を与えるテーマを選択できます。
裸のXlib呼び出しを使用してウィンドウを描画する場合、これらのテーマの影響を受ける設定に準拠するにはどうすればよいですか?つまり、考えられるすべてのWMに対して特定のコードを作成することになっていますか?それは一般的にどのように解決されますか?
いくつかのテーマタイプがあり、それらは一緒に再生されることもありますが、混同しないでください。
一部のデスクトップ環境では、これらすべてのテーマが「デスクトップ」テーマにバンドルされているか、少なくともすべてを選択するためのフロントエンドが提供されています。ただし、これらのテーマはデスクトップ環境からも互いに独立しています。設定ファイルを使用して設定することができます。
アプリケーションをユーザーの好みに合わせるには、まず、アイコンテーマを順守する必要があります。ポインターテーマは、ストックマウスアイコンのみを使用し、独自のアイコンをXサーバーにアップロードしない限り、Xサーバーによって処理されます。
2番目に明らかなのはカラーテーマですが、残念ながらカラーテーマの標準はありません。Gtk+とQtの両方のフレームワークがこの機能を独立して提供します(デスクトップテーマの構成者は両方を理解して操作し、一貫性を提供します)。ユーザーがGtk+カラーとQtカラーのどちらを好むか(たとえば、GnomeまたはKDEを実行している)を見つけるために魔法をかけ、そこから色をいくらか抽出することができます。
ただし、最も難しいのは、ユーザーが選択したUIツールキットのテーマに忠実なUI要素のルックアンドフィールを提供することです。まず、Gtk +とQtのどちらかを再度決定する必要があります(テーマ化可能な他のツールキットも存在しますが、通常、ユーザーやEnlightenmentのようなニッチなプレーヤーはテーマを設定しません)。次に、同じ機能を再実装する必要があります。興味深いことに、多くのテーマにはGtk +に独自のテーマエンジンが付属しており、テーマエンジンに作業を任せることができます。すでにいくつかの関係者によって取り上げられたアプローチ。例:
私の提案は、車輪の再発明ではなく、基本的な描画操作を超えるGUI要素にQt(または必要に応じてGtk +)を使用することです。私の経験から、プリミティブな描画でさえ、通常、XlibよりもQtの方が優れていることに注意してください。ユーザーは(見た目だけでなく)期待するルックアンドフィールを手に入れ、インターフェイスはリッチで安定しており、これらすべてを書く時間を大幅に節約できます。