2017-11-30 12 views
0

最近、私はX11を使って簡単なウィンドウマネージャを書いています。今私は知りたい:Xサーバ、クライアント、ウィンドウマネージャ内のMenubars

  1. ウィンドウにメニューバーを追加するにはどうすればよいですか? (アプリケーション作成時)

  2. ウィンドウマネージャがウィンドウズメニューバーを検出、管理、表示する方法は?私は、ウィンドウにメニューバーを追加することができますどのように

+0

WMメニューについてお聞きしますか?たとえば、ウィンドウタイトルバーのアイコンをクリックするとポップアップしますか?低レベル(x11/xlib)には、メニューの概念はありません。ちょうど "ウィンドウ"(入力を取得して物を描くのに使用できる画面上の長方形の領域) –

+0

実際に私は各ウィンドウの上にメニューバーを表示しています!ファイル、編集、表示、... –

+0

通常、これはWMジョブではなく、xlibには存在しない上位概念です。好ましい方法はgtkやqtのようなuiツールキットを使うことです。ターゲットシステム上にメニューを実装するグローバルサービスがあることが分かっているなら、このサービスと直接対話することができます(私の古い試みであるノードdbusクライアント:https://github.com/sidorares/node-dbusmenu) –

答えて

1

QtやGtkなどのXツールキットを使用する必要がありますが、原則的に他のウィンドウコンテンツと同様に描画するだけでメニューバーを作成できます。もちろん、後者は非常に退屈でエラーが起こりやすいでしょうが、それは実行可能です(結局)。

ウィンドウマネージャがWindowsのメニューバーを検出、管理、表示する方法は?

通常はありません。特定のWMは、何らかの種類の標準以外のプロトコルを介してクライアントのメニューバーについて知っている可能性があります。このプロトコルは、WMとクライアントの両方でサポートする必要があります。 ICCCMには、メニューバーに関連するAPIはありません。 desktop.org WM specsにメニュー関連のAPIがありますが、それはメニューバーではなく、ティアオフとポップアップメニューに関連しています。 Xツールキットはすでにこれらを適切に処理しているので、アプリケーション作成者は特別なことをすべきではありません。

関連する問題