Linux のみ: アプリケーション用に 2 つのウィンドウを開きたいと考えています。1 つはコンピューターのメイン画面で、もう 1 つは仮想 X11 セッションで、リモート デスクトップからのみアクセスできるようにしたいと考えています。X11の専門家がこれがどのように行われるか教えてもらえますか?
4 に答える
この機能への プログラムインターフェイスは、と呼ばれているよう$DISPLAY
xlib
XOpenDisplay()
です。Display
2つ(またはそれ以上)のオブジェクトを管理する必要があります。
さまざまな高レベルのインターフェイスツールキット(qt、...)が、より抽象化されたインターフェイスを提供する可能性があります。それはあなたにかなりの苦痛を救うでしょう。
幸運を。
私は質問について少し不明確ですが、ここに架空の設定があります:
私は自分のコンピューター (これをルート セッションと呼びます) に座っており、シェルを持っています。この場合、値が「127.0.0.1:0.0」の環境変数 DISPLAY があります。
2 番目のセッションが開始されます。このマシンの表示変数が何であるかを知る必要があります。ローカルホストにもある場合は、「127.0.0.1:1.0」のようになります。他のホストで「echo $DISPLAY」を実行すると、これが通知されます。「:1.0」または「127.0.0.1」のない何かが報告された場合、それは問題ありません。アドレスが指定されていない場合は、localhost が暗示されます。
次に、ルート セッションに戻る前に、「xhost」を実行して、他のソースがこのホストでウィンドウを表示できるようにする必要があります。(免責事項:私があなたに言うことはひどく安全ではないので、安全でないネットワークにいる場合は xhost のマニュアルページを読むことをお勧めします). 他のディスプレイの xterm に「xhost +」と入力します。このコマンド (特に「+」オプション) は、任意のホストがこのディスプレイにウィンドウをポップアップできるようにします。
ルート セッション シェルに戻って (bash だと思います)、"export DISPLAY="127.0.0.1:1.0" を実行します。次に、"xterm" を実行します。セッション。
これが役立つことを願っています。
不明な点がある場合は、「X windows DISPLAY 変数」で検索してください。
プログラミングしているレベルによって異なります。Xlib を直接呼び出している場合は、最初の引数XCreateWindow
が aDisplay *
であることを知っていると思います。もちろん、それがウィンドウを作成する場所を X11 に伝える方法です。 詳細についてはhttp://tronche.com/gui/x/xlib/window/XCreateWindow.htmlを参照してください。
使用しているのが他の言語/フレームワーク/などである場合は、それらがどれであるかについて言及すると役立ちます。