[解決済み】LinuxのネイティブGUI APIは何ですか?
質問
Windows (Win32 API) と OS X (Cocoa) は、ウィンドウ、イベント、その他の OS 関連の処理を行う独自の API を持っています。Linuxのそれに相当するものが何なのか、明確な答えが返ってきたことがないのですが?
GTK+という声も聞きますが、GTK+はクロスプラットフォームです。ネイティブであるわけがない。
どのように解決するのですか?
Linuxでは、グラフィカル・ユーザー・インターフェースは、オペレーティング・システムの一部ではありません。ほとんどのLinuxデスクトップで見られるグラフィカル・ユーザ・インターフェイスは Xウィンドウ・システム これは、スクリーン、キーボード、ポインターを扱うデバイスに依存しない方法を定義しています。
X Windowは通信のためのネットワークプロトコルを定義しており、このプロトコルを話す方法を知っているプログラムであれば、誰でも使うことができます。という C ライブラリがあります。 Xlib は、このプロトコルの使用を容易にするもので、Xlib は一種の その ネイティブGUI APIです。Xlib は X Window サーバにアクセスする唯一の方法というわけではありません。 XCB .
などのツールキット・ライブラリは GTK+ (で使用 GNOME ) と Qt (で使用される KDE Xlibの上に構築されたXlibは、プログラミングが容易であるため、使用されています。例えば、アプリケーション間で一貫したルック&フィールを実現し、ドラッグ&ドロップを使いやすくし、モダンなデスクトップ環境に標準的なコンポーネントを提供する、などです。
Xが内部でどのように画面に描画するかは、実装に依存します。 X.org には、デバイスに依存しない部分と、デバイスに依存する部分があります。前者はウィンドウなどの画面資源を管理し、後者はグラフィックカードのドライバ(通常はカーネルモジュール)と通信を行います。通信は ダイレクトメモリアクセス または システムコール をカーネルに送信します。ドライバは、コマンドをカード上のハードウェアが理解できる形に変換します。
2013年現在では、新しいウィンドウシステムである ウェイランド が使えるようになりつつあり、多くのディストリビューションがいつかは移行するとしていますが、まだ明確なスケジュールはありません。このシステムはOpenGL/ES APIをベースにしており、将来的にはLinuxではOpenGLが"native GUI API"となることを意味します。現在、GTK+とQTをWaylandに移植する作業が行われており、現在普及しているアプリケーションやデスクトップシステムには最小限の変更で済むようになっています。移植できないアプリケーションは、OS XがXquartzを通じてX11アプリケーションをサポートするように、X11サーバを通じてサポートされる予定です。GTK+の移植は 1年以内に完成予定 一方、Qt 5はすでにWaylandを完全にサポートしています。
さらに問題を複雑にしているのは、Ubuntuが新しいシステムとして ミール というのも、Waylandに問題があることがわかったからです。このウィンドウシステムもOpenGL/ES APIをベースにしています。
関連
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++