2011-01-15 7 views
6

Windowsでは、どのフレームワークを使用するにしても、最終的にすべてのフレームワークでuser32 :: CreateWindowEx APIを呼び出して実際にデスクトップにウィンドウを作成する必要があります。可能な限り簡単なUbuntu GUIアプリケーション

UbuntuやLinuxシステムでは、WxやQt、GTK +などのウィジェットフレームワークを使ってGUIアプリケーションを作成するという選択肢があるようですが、これらのフレームワークはすべて、より基本的なものをラッピングしているように感じます。これらはすべてLinux上のXと直接対話しますか?私はUbuntuが非Xウィンドウマネージャに移行していると思ったので、それでは何を使う予定ですか?

これらのフレームワークで使用されているウィンドウマネージャにアクセスするために使用するライブラリはありますか?

答えて

5

これらはすべてXlibです.X以外のサーバーに切り替える場合は、Xlib(またはXlibラッパー)が必要になります。

+2

と覚えては、Xlibは今libxcb(HTTPのラッパーです。 org /) – bdonlan

+2

XCBは元のXlibとは異なりスレッドセーフです。 – ismail

+0

しかし、これはまだ最低のものが落ちることはありませんか?つまり、XlibやXCBなどを使わずに、自分自身のXクライアントを完全に作り直すことができますか? XlibとXCBの両方が**ラッパーでもあると言えるでしょう - つまり、Xプロトコルの周りです。そして本当にすべてのラッパーから自分自身を解放したい場合は、独自のバージョンのプロトコルを構築することから始めるべきです。私はここで間違っていますか? –

0

Xは慎重に指定されたネットワークプロトコルで動作するため、必要に応じてこのプロトコルを直接サーバーに話すことができます。実際には、GUIツールキットはXlib(おそらくXt)をラップします。伝統的にXlibはそれまでと同じくらい低かったが、今やXlibは、よりクリーンな低レベルのXプロトコルライブラリ "xcb"の上に再実装された。

1

原則として、X11プロトコルと関連するすべての拡張機能(ICCCM、デスクトップコンベンションなど)を学ぶことで、独自のXライブラリを作成できますが、それは大きな課題です。あなたがそれをした場合、あなたは最低レベルのシステムコール(send、recv、...)を使用します。

一部の言語(SML、Common Lisp、Ocaml)の実装によっては、XlibまたはXCB Cライブラリを使用せずにX11プロトコルを実装することを選択できました。しかし、それは私がそれをお勧めしないような大きな仕事です。

Ubuntuが話すWaylandはまだ成熟していませんが、GTKやQtのようなツールキットライブラリは徐々にサポートしています(X11のサポートに加えて)。

今日、X11ベースのものの代わりにWebベースのアプリケーションを開発するオプションもあります。ときには、HTTP + XHTML + AJAXは、X11をゼロから再コードする方が簡単です。 //xcb.freedesktop:

しかし、単体のグラフィックスタックの書き込みを開始していない...それはあまりにも大きな課題である...

+0

最も単純なグラフィカルユーザアプリケーションはおそらくQtやGTK上のhello worldウィンドウですが、QtとGTKの両方はたくさんの荷物を運んでいます。なぜなら、X11プロトコルは大きかったからです(今日使用しているハードウェアとは異なるハードウェア向けに設計されています!いくつかの人々はその設計(そして、政策ではなく、政策を支持するという目標)にも疑問を呈するかもしれない。ウインドウマネージャーを気にする必要はありません。 QtまたはGtkのツールキットがそれを行います。 –

関連する問題