2016-04-12 10 views
0

私の質問は、Linuxサーバにデフォルトのディスプレイとして仮想ディスプレイを設定する方法です(カウンターが表示されていなければ、起動されたすべてのGUIアプリケーションがそのディスプレイに表示されるようにします)。 )?ubuntuサーバの仮想ディスプレイ

私はこの使用してみました:

System.out.println("searching graphic devices"); 
System.out.println("is Headless:"+GraphicsEnvironment.isHeadless()); 
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 

int count = 1; 
for(GraphicsDevice screen : ge.getScreenDevices()) 
{ 
    System.out.println("screen N°"+count+" width:"+screen.getDisplayMode().getWidth() 
               +" height:"+screen.getDisplayMode().getHeight()); 
} 
{... create a JFrame and add a JButton that closes the application and prints a message to the console when clicked} 
System.out.println("just 1 robot click:"); 
try 
{ 
    robot = new Robot(); 
    justOneClick(frame.getX()+100, frame.getY()+100); 
} 
catch(AWTException e) 
{ 
    e.printStackTrace(); 
} 

はここで、それは短いようにするには、私の2の問題は、次のとおりです:

autoclickコードを

searching graphic devices 
is Headless:false 
screen N°1 width:1600 height:900 
just 1 robot click: 
Magic button clicked ! 

とここにある:次の出力を生成しxvfb-run java -jar autoclick.jarを、

仮想ディスプレイでアプリケーションを起動するたびにxvfb-runを呼び出す必要があります。つまり、私が起動していないアプリケーションは、仮想ディスプレイで起動されません。

xvfb-runで作成されたディスプレイで別のアプリケーションを起動できません。

私の悪い英語の構文で申し訳ありません、ありがとうございます。

答えて

2

はそれに応じてDISPLAY変数を設定します。

Xvfb :1 -screen 0 1920x1080x24+32 -fbdir /var/tmp & 
export DISPLAY=:1 
java -jar autoclick.jar 
java -jar autoclick.jar 
java -jar autoclick.jar 

(そして再び、そして再び、そして再び...)

に起因してDISPLAY変数を使用すると、その端末で起動されたアプリケーションはすべて仮想Xサーバを使用します。私はxvfb-runがXvfbをセットアップし、プログラムを実行してから、すぐにXvfbを再びシャットダウンすると思います。

+0

まさに私が必要なもの!どうもありがとうございました。 – lieblo

+0

これは、Inverscapeスクリプトでは魅力的です。なぜなら、--verbコマンドラインオプションは、GUIが必要でなくてもすぐに終了するからです。 – itnAAnti

0

正確なニーズに応じて、xvfb-runを使用してxnestを起動し、作成した表示をDISPLAY変数としてエクスポートすることができます。その後、Xfvbとバックグラウンドで仮想Xサーバをセットアップし