17

ウィンドウマネージャを書こうとしています。(実際、私OS とコンパイラを作成しましたが、それは重要ではありません。)

XLib と xcb は、少なくともたとえば win32 の標準ではまったく厄介ではありませんが、間違いなく非常に古く、私の人生を楽にするためのまともな抽象化には適していません。それだけでなく、現代の高水準言語には適切なバインディングが明らかに不足しています。

私の質問は次のとおりです。これらすべての低レベルのものは、最近本当に必要ですか? 私にとって厄介なものをすべてカプセル化するライブラリは存在しますか? 啓蒙主義者がそのようなことをしたという漠然とした記憶がありますが、何も見つかりません。それとも、たとえば GDK のような最新のウィジェット ライブラリには、Xlib レイヤーに触れる必要がないほど十分な機能がありますか?

Java バインディングを備えたライブラリは特に興味深いものです...

4

2 に答える 2

9

最近、この低レベルのものはすべて本当に必要ですか?

「低レベルのもの」がC言語を意味する場合は、いいえ、技術的な観点からは必要ありません。XCB のXMLを使用して、任意の言語のバインディングを生成できます。

ただし、「低レベルのもの」によって X プロトコルレベルで処理することを意味する場合は、はい、必要です (髪を引っ張りたくない場合)。Window Manager は X11 プロトコル レベルで動作する必要があるため、「高レベル」のものを使用すると、作業が難しくなるだけです。実際、Xlib があまりにも高レベルであり、その下でマスクが多すぎたため、間違いを犯しやすく、完全な制御が困難または不可能であったため、XCB が作成されました。(また、XCB は X の観点からは「非常に古い」ものではありません。すべての主要な Linux ディストリビューションが最終的に XCB を完全に使用し始めたのは、ここ数年のことです。)

于 2011-04-28T02:27:36.173 に答える
5

これは遅い回答なので、あまり関連性がないかもしれませんが、他の人が探しているかもしれないので、とにかく投稿します...

私は同じ質問を自問し、そのようなものは存在しない、特にJavaには存在しないという結論に達しました。qt などの特定のウィジェット ツールキットでは、既存の表示構造体を使用して、既存の xlib ウィンドウ ハンドルからウィジェットを作成する可能性が提供されますが、X サーバーと通信するという面倒な作業を行うには xlib/xcb を使用する必要があります。 wm固有の操作。他の人が述べているように、GDK や enlightenment などの他のライブラリも、基本的な抽象化のかなり良い仕事を提供します。

それでも、これらすべてが C/C++ を使用しているという事実に満足できず、Java で誰かが私のために仕事をしてくれるまで怠惰なお尻に座っているという選択肢はありませんでした。 Java で独自のモジュラー WM を構築します。 https://github.com/Zubnix/trinityshell

于 2013-01-27T16:59:04.477 に答える