web-dev-qa-db-ja.com

ディスプレイマネージャーなしのGUIを使用したプログラムの起動

端末から直接、ディスプレイマネージャーなしでグラフィカルインターフェイスを使用してプログラムを起動する方法があると聞きました。これは本当ですか?そうであれば、どうすればいいですか?

9
Ben

ディスプレイマネージャーがなくても実行できますが、Xセッションを実行する必要があります。詳細はディストリビューションによって異なりますが、次のコマンドを実行すると、単一のターミナルで最小限のXセッションを取得できるはずです。

xinit

私はこれを何年も行っていませんが、前回行った場合、次のような結果になります。

enter image description here

そこに到達したら、GUIプログラムを通常どおり実行できます。できれば、バックグラウンドで起動することをお勧めします(&)なので、唯一のターミナルへのアクセスを失うことはありません。

5
terdon

GUIアプリケーションをヘッドレスで実行するための基本と、それに接続する方法(vnc)を以下に示します。家族と一緒にRHEL7Centos 7で動作します。 https://github.com/xeor/dockerfiles/tree/master/crashplan/Dockerfileセットアップ、およびスタートアップのinit/setup

# Needed environment variables
export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"

# Needed packages
yum install -y xorg-x11-server-Xvfb x11vnc gtk2 xorg-x11-fonts-*

# Set a password (if variable vncpass is sat, else its `secret`)
mkdir -p ~/.vnc && x11vnc -storepasswd ${vncpass:-secret} ~/.vnc/passwd

# Start up the fake display and run the application you want (the `Java ...` part)
xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" Java .... > log/ui_output.log 2> log/ui_error.log &

# Wait for the app to start, or else, the vnc server will die before starting
sleep 5

# vnc itself
x11vnc -forever -usepw -shared -rfbport 5900 -display $DISPLAY

これで、server:5900に接続してアプリケーションを表示できるようになります。

6
xeor

はい。ディスプレイマネージャーと同じことを行ってください。グラフィカルログイン画面(この場合は不要)を除いて、ディスプレイマネージャーは次の2つのことを行います。

  1. まず、XorgなどのX11「ディスプレイサーバー」を起動します。
  2. 次に、何をどこに描画するかをXorgに指示する「クライアント」を開始します。

startxのようなツールを使用して、コンソールログインから同じ方法でX11を起動できます。 Xorgを起動し、次に~/.xinitrcファイルにリストされているクライアントが続きます。

たとえば、.xinitrcファイルにはstartkdeまたはgnome-sessionを含めることができます。また、個々のコンポーネント(ウィンドウマネージャー、パネル/タスクバー、デスクトップなど)をリストすることもできます。

xinitstartxの間にはいくつかの違いがあることに注意してください–一部のディストリビューションには明白ないくつかの重要な設定があるため、通常は後者を使用する必要がありますxinitは無視します。つまり、xserverrcスクリプトです。)

ウェイランドでは、デスクトップとパネルは「コンポジター」の統合された部分であるため、追加のツールなしで、インターフェース全体が1つのステップで開始されます。たとえば、westonを実行するか、gnome-session --session=gnome-waylandを使用してGNOMEを起動できます。

3
user1686

local Xの表示があれば、ssh X転送を使用してXアプリケーションを起動できます(ssh -X、サーバー構成でも有効にする必要がある場合があります)。

アプリケーションは、ヘッドレスシステムで実行されている間、ローカルで起動して表示されます。適切なライブラリを使用するには、ヘッドレスシステムにXをインストールする必要があります。これは、最新のGNOMEアプリケーションでは機能しない可能性があります。

$DISPLAYを使用して、シェルがリモートのシェル(sshまたはコンソール)であっても、接続されたXディスプレイでアプリを起動できます。 rootでXディスプレイにログインしている人がそうでない場合は、xauthセキュリティを上書きして、とにかく彼らのディスプレイにウィンドウをポップアップすることができます。これは、異なるモニター上に2つの異なるXディスプレイサーバーがある場合にも機能します。

別のポスターはVNCについて言及しています。私もこの目的でNXを使用しましたが、私はそれを好みます。

1
pjc50