Executa a aplicação no servidor X específico ou na porta VNC

3

Eu tenho um aplicativo que gostaria de executar, mas gostaria que fosse visível apenas através de uma determinada porta VNC.

Eu não quero que o aplicativo apareça na área de trabalho normal do Ubuntu. Eu quero que o aplicativo seja executado "em segundo plano" e seja visível somente por meio do VNC. E quando conectado a este "servidor X alternativo", o usuário final não veria nenhuma barra de menu, nenhuma decoração de janela ... Apenas o aplicativo.

Venha para pensar sobre isso, o que eu estou pedindo é uma espécie de modo de quiosque para apenas um determinado aplicativo, acessível através de VNC.

Isso é possível ou estou realmente chegando aqui?

Obrigado!

Observe que o aplicativo que desejo executar dessa maneira é escrito em Java. É um arquivo JNLP.

    
por SirCharlo 02.10.2012 / 16:59

1 resposta

1

Eu consegui isso com sucesso. Veja como.

Instale o software necessário.

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer xvfb x11vnc vnc-java blackbox xterm

Defina uma senha para a conexão VNC.

x11vnc -storepasswd

Crie um arquivo de script para ser executado com o cron.

sudo nano /sflowtrend.sh

Estes são os conteúdos do arquivo.

#!/bin/bash

log="/sflowtrend.log"

echo "Closing existing sFlowTrend windows gracefully." > $log
DISPLAY=:1 wmctrl -c "sFlowTrend"
sleep 5


echo "Killing all existing instances of java, Xvfb, and x11vnc." >> $log
for i in {1..3} ; do
        killall -q java
        killall -q x11vnc
        killall -q Xvfb
        echo "Iteration $i of kill cycle complete." >> $log
        sleep 2
done

echo >> $log

Xvfb :1 -screen 0 1200x800x24+32 -ac &
echo "Fake X launched." >> $log

x11vnc -display :1 --nocursor --httpdir /usr/share/vnc-java --httpport 6789 --usepw --forever --quiet --shared &
echo "VNC launched." >> $log

DISPLAY=:1 blackbox &
echo "BlackBok launched." >> $log

DISPLAY=:1 javaws /home/administrator/Downloads/sFlowTrend.jnlp &
echo "sFlowTrend (Java) launched." >> $log

echo >> $log

echo "Sleeping for one minute." >> $log
sleep 10
echo "Sleeping for fifty seconds." >> $log
sleep 10
echo "Sleeping for forty seconds." >> $log
sleep 10
echo "Sleeping for thirty seconds." >> $log
sleep 10
echo "Sleeping for twenty seconds." >> $log
sleep 10
echo "Sleeping for ten seconds." >> $log
sleep 10

echo >> $log

DISPLAY=:1 wmctrl -r "sFlowTrend" -b add,fullscreen
echo "sFlowTend now running in fullscreen." >> $log

echo >> $log

echo "Have fun!" >> $log

Edite o crontab da raiz.

sudo crontab -e

Adicione a seguinte linha ao final do crontab .

@reboot bash /sflowtrend.sh

Reinicialize e tente conectar-se ao seu servidor, porta 6789

http://ubuntu-hostname:6789

Isso funcionou para mim e eu queria compartilhar.

Divirta-se!

Fontes

por SirCharlo 04.10.2012 / 14:58