問題タブ [x11]
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.
c - X11 で WM_DELETE_WINDOW をインターセプトしますか?
私が書いているアプリケーション ( AllTrayWM_DELETE_WINDOW
)の特定の選択されたウィンドウに投稿されたメッセージを傍受して、アプリケーションがそれを受信する代わりにそれに基づいて行動できるようにしたいと思います。私は現在、可能であれば GDK レベルでこれを試すことを検討していますが、Xlib ソリューションもあれば満足しています。それは可能であるように思われますが、私はそれを成功させる方法を理解していないようです.gdk_display_add_client_message_filter
現在、これを理解するために使用しようとしている 2 つのプログラム (C で記述)があります。そうすることに失敗しているようです。正確には何もしていないようです。これに関するドキュメントが間違っていることを理解していますか、それとも何か追加する必要がありますか (または、このために GDK を完全に使用しないようにする必要がありますか)?WM_DELETE_WINDOW
背景は次のとおりです。AllTray を書き直す前は、X ボタン自体のマウス クリックをインターセプトしようとする方法があったようです。一部のウィンドウ マネージャーでは、これは適切に機能し、他のウィンドウ マネージャーではまったく機能しませんでした。その他のウィンドウ マネージャーでは、ユーザーが手動で構成し、ウィンドウを閉じるボタンの場所を AllTray に指示する必要がありました。私が探しているのは、を含まず、現在の標準に準拠し、ウィンドウが閉じられたときに ClientMessageLD_LIBRARY_PRELOAD
を送信するウィンドウマネージャー/アプリケーションの組み合わせで機能するソリューションです。WM_DELETE_WINDOW
更新:私はまだ答えを探しています。私が現在取っているルートは、ウィンドウの親を変更して自分で管理しようとすることですが、うまく機能させることができません。再親化すると、それを元に戻すことはできないようです。非常に基本的なものが欠けている可能性がありますが、実際に自分のウィンドウに再び表示させて画面に戻す方法がわかりません。
更新 2 : わかりました、別のレンガの壁にぶつかりました。X サーバーのドキュメントには、ウィンドウのイベント マスクに StructureNotifyMask を設定して、MapNotify イベントと ReparentNotify イベントの両方を受け取るように記載されています。私はどちらかを受け取ることに興味があります。私が現在考えているのは、イベント レシーバーとして機能するウィンドウを作成し、興味深いことのイベントを取得したら、それらを作成して再ペアレント化することです。ただし、これは単に機能していないようです。実際に受け取るイベントは PropertyNotify イベントだけです。そのため、このルートもあまりうまくいっていないようです。
events - Linux 入力ハックはどこから始めればよいですか?
Mac で「Shift」キーを押しながらマウスでスクロールすると、垂直方向のスクロール モーションが水平方向のスクロール アクションに解釈されます。これは、Linux で作業しているときに最も見逃された機能であり、Linux に導入したいと思っています (徹底的に調べたところ、まだ誰も行っていないようです)。
ある種のランタイム プラグインを使用して、または少なくとも他のすべてのアプリケーションを再コンパイルして機能を利用する必要がない方法で、これを実行できることを願っています。私の質問は次のとおりです。そのようなプラグインを作成できるライブラリはどれですか? 機能がそれほど複雑である必要はないように思われるため、ある種のスクリプトを作成するとよいでしょうが、必要に応じて C および C++ でコーディングできます。
XEvIE (廃止) や XTrap (同様に放棄されたようです) などの X ソリューションを調べました。少なくとも概念実証として、今のところ GTK / GNOME のみに限定させていただきます。
これがプラグインとして実行できない場合、どのオープンソース プロジェクト (Xfree86? GNOME? 他の誰か?) にアプローチして、この機能を試してみるべきですか?
-- 更新 (解決策あり!):
パッケージ「xbindkeys」と「xautomation」をインストールします。次に、 ~/.xbindkeysrc.scm ファイルに次のように記述します。
次に xbindkeys を実行します
import - ディスプレイが関連付けられていない状態で X11 ウィンドウを起動するにはどうすればよいですか
たとえば、ディスプレイが関連付けられていない状態で Firefox を起動し、最終的に でスクリーンショットを撮りたいと思いimport
ます。
実際、cronjobsで定期的に作成できますか?
現在、ssh -X 接続を作成しています。バックグラウンドで開始されたウィンドウの xwininfo を取得すると、すべて問題ありません。しかし、私はそれを自動化したい。
linux - 追加情報を Pixmap に添付するには?
Windows および MacOS のメタファイル (WMF/EMF および PICT/PDF) では、メタファイルに付随する任意の情報を添付できます。これは、アプリケーション固有のものである可能性があります。Linuxで同じ結果を得るにはどうすればよいですか? 私は GDK や Qt を使用していません。単純な XLib、Xt、および Motif を使用しています。
アイデアは、アプリケーションから (選択を介して) 何かをコピーして、たとえば PIXMAP として他の誰かに送信したいということです。ただし、送信した情報をカスタム形式でエンコードしたいので、同じオブジェクトを取得したときに、この情報を取得してアプリケーションでオブジェクトを編集できるようにします。
c++ - xlibを使用してトップレベルのX11ウィンドウを識別する方法は?
X11 セッションですべてのトップ レベルのデスクトップ ウィンドウのリストを取得しようとしています。基本的に、ウィンドウ マネージャーのアプリケーション切り替え UI (通常、ユーザーが ALT + TAB を押すと開く) に表示されるすべてのウィンドウのリストを取得したいと考えています。
これまで X11 プログラミングを行ったことはありませんが、これまでのところ、次のようなコードを使用して、ウィンドウ リスト全体を列挙することができました。
enumerateWindows()
最初にルート ウィンドウで呼び出されます。
これは、何百ものウィンドウに関する情報を出力する限り、機能します。私が必要としているのは、特定Window
のウィンドウがトップレベルのデスクトップ アプリケーション ウィンドウであるかどうかを判断するために、どのプロパティを調べることができるかを調べることです (公式の用語が何であるかはわかりません)。 )、 か否か。
誰でもこれに光を当てることができますか?私が見つけた X11 プログラミングのリファレンス ドキュメントはすべて、ひどく無味乾燥で理解しにくいものでした。おそらく、誰かがより良いリソースを指し示すことができますか?
linux - Linuxでの標準メニュー項目の場所
ほとんどのデスクトップ環境で.desktopファイルを確実に検出するには、どこに.desktopファイルを配置する必要がありますか?そのような場所はありますか?さらに、ユーザーのホームディレクトリに配置して、そのユーザーだけが表示できるようにする標準的な場所はありますか?
windows - XWindowsアプリケーションをWindowsサーバーからリモートで実行する
これは奇妙な質問のように思えるかもしれませんが、私が現在取り組んでいるプロジェクトにはある程度の価値があります。
XMing(またはCygwinx)を実行しているWindows2003サーバーがあります。X11転送を有効にしてsshを使用してUbunutuからサーバーに接続しています。Windows 2003サーバー(xeyesなど)でXアプリケーションを起動すると、アプリケーションはローカルのUbuntuマシンではなくWindowsサーバーに表示されます。
Xmingは完全に実装されたXサーバーであるため、リモートクライアントへのXアプリケーションの提供をサポートすると想定しました。これが機能しない理由はありますか?
c - ConkyをLXDEとPCManFMで動作させるのを手伝ってください
ご存知かもしれませんが、ConkyまたはPCManFM(デスクトップマネージャーの側面)のいずれかにバグがあり、次のいずれかの状況でConkyウィンドウが消えます。
- .conkyrc(Nautilusの通常の構成)で「own_window_typeoverride」をフラットアウトに設定しても、Conkyウィンドウはまったく表示されません。
- .conkyrcで「own_window_typedesktop」を設定するとConkyウィンドウが表示されますが、デスクトップをクリックすると消えます。
- .conkyrcで「own_window_typenormal」を設定すると、Conkyウィンドウが表示されます。デスクトップをクリックしても消えませんが、 LXPanelの「Minimizeallwindows」プラグイン(「Showdesktop」に相当)を使用すると消えます。これは、キーボードショートカットを使用している場合にも発生します。
これには、 PCManFMのデスクトップ管理を非アクティブ化する(壁紙の設定にfehを使用し、アイコンにiDeskを使用するなど)、または別のファイルマネージャーを完全に使用するなど、いくつかの回避策がありますが、これらはすべて標準以下のソリューションであることに気付きました。私はPCManFMが本当に好きで、Conkyが本当に好きです。男は何をしますか?:-/
そこで、LXPanelのソースを掘り下げて、修正を格納する可能性のある関連するコードを見つけました。ファイルはsrc/plugins/wincmd.cです。
「すべてのウィンドウを最小化」ボタンをクリックすると、すべてのウィンドウ(クラス)名が静的文字列「Conky」と比較され、一致した場合、そのウィンドウは最小化されないという考えがあります。シンプルで、うまくいくはずです。しかし、問題は、Cコードに触れてから数年が経ち、Xlibをあまり使っていないことです。
これまでに、次の変更を行いました。
これは正しくコンパイルされますが、新しいlxpanelを実行して[すべてのウィンドウを最小化]をクリックすると、Conkyは以前と同じように消えます。
誰かがこのファイルを調べて、私の変更が意味をなすかどうかを確認できれば、私は非常に感謝しています。
ありがとうSO!:)