端末から直接、ディスプレイマネージャーなしでグラフィカルインターフェイスを使用してプログラムを起動する方法があると聞きました。これは本当ですか?そうであれば、どうすればいいですか?
ディスプレイマネージャーがなくても実行できますが、Xセッションを実行する必要があります。詳細はディストリビューションによって異なりますが、次のコマンドを実行すると、単一のターミナルで最小限のXセッションを取得できるはずです。
xinit
私はこれを何年も行っていませんが、前回行った場合、次のような結果になります。
そこに到達したら、GUIプログラムを通常どおり実行できます。できれば、バックグラウンドで起動することをお勧めします(&
)なので、唯一のターミナルへのアクセスを失うことはありません。
GUIアプリケーションをヘッドレスで実行するための基本と、それに接続する方法(vnc
)を以下に示します。家族と一緒にRHEL7
とCentos 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に接続してアプリケーションを表示できるようになります。
はい。ディスプレイマネージャーと同じことを行ってください。グラフィカルログイン画面(この場合は不要)を除いて、ディスプレイマネージャーは次の2つのことを行います。
startx
のようなツールを使用して、コンソールログインから同じ方法でX11を起動できます。 Xorgを起動し、次に~/.xinitrc
ファイルにリストされているクライアントが続きます。
たとえば、.xinitrcファイルにはstartkde
またはgnome-session
を含めることができます。また、個々のコンポーネント(ウィンドウマネージャー、パネル/タスクバー、デスクトップなど)をリストすることもできます。
(xinit
とstartx
の間にはいくつかの違いがあることに注意してください–一部のディストリビューションには明白ないくつかの重要な設定があるため、通常は後者を使用する必要がありますxinitは無視します。つまり、xserverrc
スクリプトです。)
ウェイランドでは、デスクトップとパネルは「コンポジター」の統合された部分であるため、追加のツールなしで、インターフェース全体が1つのステップで開始されます。たとえば、weston
を実行するか、gnome-session --session=gnome-wayland
を使用してGNOMEを起動できます。
local Xの表示があれば、ssh X転送を使用してXアプリケーションを起動できます(ssh -X、サーバー構成でも有効にする必要がある場合があります)。
アプリケーションは、ヘッドレスシステムで実行されている間、ローカルで起動して表示されます。適切なライブラリを使用するには、ヘッドレスシステムにXをインストールする必要があります。これは、最新のGNOMEアプリケーションでは機能しない可能性があります。
$DISPLAY
を使用して、シェルがリモートのシェル(sshまたはコンソール)であっても、接続されたXディスプレイでアプリを起動できます。 rootでXディスプレイにログインしている人がそうでない場合は、xauth
セキュリティを上書きして、とにかく彼らのディスプレイにウィンドウをポップアップすることができます。これは、異なるモニター上に2つの異なるXディスプレイサーバーがある場合にも機能します。
別のポスターはVNCについて言及しています。私もこの目的でNXを使用しましたが、私はそれを好みます。