問題タブ [xembed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gtk - Gtk::Socket 内の埋め込みウィンドウにフォーカスを移します
Gtk::Box に配置されている Gtk::Socket 内に gvim を埋め込んでいます。埋め込まれた gvim ウィンドウにフォーカスを当てて、埋め込まれたウィンドウを実際にポイントしてクリックするのと同じことを達成するにはどうすればよいですか?
Gtk::Socket ウィジェットで使用->grab_focus()
しても効果はありません。
XEMBED 仕様 ( http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html#idm139742761059984 ) によると、エンベダー (Gtk::Socket) は aXEMBED_FOCUS_IN
またはXEMBED_WINDOW_ACTIVATE
シグナルを子ですが、Gtk::Socket にはこのためのインターフェイスがないようです。
Gtk::Plug および Gtk::Socket の例に基づいて私がやろうとしていることの簡単な例は、https : //github.com/gauteh/plug-socket-grab-focus にあります。
これがバグの場合は、https ://bugzilla.gnome.org/show_bug.cgi?id=729248 で報告されています。
d - 親が変更されたウィンドウ クローズ イベントを確認する
X11 用の xlib トレイバーを作成しようとしています。トレイの仕様に記載されているように、XEMBED を使用してトレイ アイコンを埋め込みます。ただし、トレイ アイコンでアプリケーションを閉じると、コンテナー ウィンドウから削除されますが、黒いコンテナー ウィンドウの四角形とコード内のエントリはまだ存在します。
転送されたすべてのアクセラレータを追跡し、クライアント ウィンドウが終了したときにそれらを削除するのは、組み込み者の責任です。
ただし、埋め込みウィンドウが終了したときに、アプリケーションはイベントや通知を受け取りません。
私は基本的にドック要求イベントのみを受け取り、その後は何も受け取りません。ドック要求イベントが発生すると、トレイ ウィンドウを含むパネルの子ウィンドウを作成し、次のように親を変更します。
パネルへの追加は問題なく機能しますが、いつ削除するかを確認する方法がわかりません。
アプリケーションがこれらのトレイ アイコンのクローズ イベントを受け取るようにするにはどうすればよいですか? または、親を変更したウィンドウがまだ存在するかどうかを確認するにはどうすればよいですか?
x11 - C、Xlib の freedesktop XEmbed systray クライアント コード
freedesktop 仕様 [0] に沿って、ストレート C と Xlib を使用して systray アイコンを実装しようとしています。Windows をデスクトップ マネージャーのシステム トレイ [1] に埋め込むことができないようですが、他のアプリではできるようです。これをデバッグする方法はわかりませんが、最小限のサンプル コードを以下に示します。
ストレートな Xlib と C を使用したサンプル コードを見つけることができませんでした。私が見たすべての提案は、Gtk/Qt/Mono/whatever などのフレームワークに関するものでした。仕様に従ってここで起こっていること、そして私が間違っていること。
どんな助けでも大歓迎です。この問題は言語にとらわれず、プロトコルを誤解していることに関係していると思うので、この XEvent の問題を解決するのに役立つ限り、どの言語での回答も受け入れられます。
[0] https://specifications.freedesktop.org/systemtray-spec/systemtray-spec-0.2.html
[1] systray パッチhttp://dwm.suckless.org/patches/systrayで dwm を使用しています
c++ - Gtk::Plug を Gtk ソケットに埋め込むにはどうすればよいですか?
窓があります。このウィンドウには 2 つのボタンが必要です。1つはプラグで、もう1つは普通です。
私は次のことをします
plug.cc
main.cc
これはコンパイルされますが、私は得る
gtk_socket_add_id: assertion '_gtk_widget_get_anchored (GTK_WIDGET (socket))' failed
Gtk::Plug のインスタンスをソケットに埋め込むにはどうすればよいですか?