24

C私は、主に学習と自分自身への挑戦を目的として、私的使用のための単純なスタッキング ウィンドウ マネージャー (の) を作成したいと考えています。

私はtwmのソース コードに目を通してみましたが、これには付加機能が比較的少ないのですが、ウィジェット ツールキットに基づいていないため、非常に低レベルに見えます。1 GTK+ などのツールキットを使用するのが望ましいでしょうか? のコードとライブラリの一部がtwm古すぎる可能性があるのではないかと心配しています (編集:非推奨)。ウィンドウ マネージャで比較的新しいライブラリを使用する必要があります。理解を深めるために、ウィンドウ マネージャを最初から起動する方法の提案にも関心があります。この目的のためのチュートリアルはあまりありません。

更新:同様のプロジェクトを考えている人のために: Common Lisp とCLX ライブラリを使用することになりました。tinywm-lispがベースとなり、優れたCLFSWMStumpwmが大きな助けになりました。参考までに、CLX — Common LISP X Interface ( PDF 警告) と#xlibFreenode を使用しました。

4

8 に答える 8

24

何をするにしても、Xlib ではなく XCB を使用してください。これは最新で、非同期で、よりシンプルで、X11 プロトコルに直接アクセスできます。

于 2010-08-13T17:01:04.283 に答える
10

C++ で X11 ウィンドウ マネージャーを作成する方法を示す詳細なチュートリアル シリーズを作成しました。

さらに、簡単なウィンドウ マネージャーの例、basic_wm を以下で確認できます。

教育目的で多くのコメントが付けられています。

Xlib と XCB について - 初めて始める場合は、XCB よりも Xlib をお勧めします。XCB はより効率的ですが、はるかに低レベルで冗長です (GUI のアセンブリ言語を考えてみてください)。プロトタイプが動作するようになるまで、時期尚早の最適化で自分に負担をかけたくありません。

于 2014-12-10T04:01:42.957 に答える
6

非常に最小限の WM はwm2です。ソースコードを読んでいないので、それが教育用の例かどうかはわかりません。もちろん、gdkgtkなど、抽象化と描画作業の多くを既に行っているライブラリを使用できます。しかし、このプロジェクトは個人的な学習のみを目的としているため、私は苦労して Xlib を直接使用します。

以下に役立つリンクをいくつか示します。

于 2010-08-12T23:07:53.850 に答える
6

dwmのコードを見てください。コードベースは美しく、理解しやすいです。全体で約2000行です。

于 2011-07-21T06:06:15.577 に答える
2

metacity は、特定の UI 要素に gtk を使用します。HACKING と README を参照してください。

良い Xlib プログラミング ガイドはどこにありますか?も参照してください。

于 2010-08-13T16:57:28.970 に答える
2

理解のために、ウィンドウマネージャーを最初から起動する方法の提案にも興味があります

aewm ウィンドウ マネージャを参照してください。コードは小さく、基本は非常にうまく機能します。C で書かれており、Xlib を使用しています。

http://www.red-bean.com/decklin/aewm/

于 2010-11-30T22:43:44.683 に答える
2

http://code.google.com/p/partiwm/は、ウィンドウ マネージャー (スタックではなくタイリング) を最初から作成しようとする試みです。コードを一通り読むと役立つ場合があります。

于 2010-08-12T22:34:01.807 に答える
0

Xmonadは、開始するのに適した場所かもしれません。

于 2010-09-25T09:27:19.570 に答える