web-dev-qa-db-fra.com

Exécuter l'application sur un serveur X ou un port VNC spécifique

J'ai une application que j'aimerais exécuter, mais j'aimerais qu'elle ne soit visible que via un certain port VNC.

Je ne veux pas que l'application apparaisse sur le bureau Ubuntu normal. Je veux que l'application s'exécute "en arrière-plan" et ne soit visible que via VNC. Et lorsqu'il est connecté à ce "serveur X alternatif", l'utilisateur final ne verra aucune barre de menu, aucune décoration de fenêtre .. Juste l'application.

À bien y penser, ce que je demande, c'est une sorte de mode kiosque pour une application donnée, accessible via VNC.

Est-ce possible ou suis-je vraiment en train d'atteindre ici?

Merci!

Notez que l'application que je souhaite exécuter de cette manière est écrite en Java. C'est un fichier JNLP.

3
SirCharlo

J'ai réussi ceci. Voici comment.


Installez le logiciel nécessaire.

Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java7-installer xvfb x11vnc vnc-Java blackbox xterm

Définissez un mot de passe pour la connexion VNC.

x11vnc -storepasswd

Créez un fichier de script à exécuter avec cron.

Sudo nano /sflowtrend.sh

Ce sont les contenus du fichier.

#!/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

Éditez la crontab de la racine.

Sudo crontab -e

Ajoutez la ligne suivante à la fin de la crontab.

@reboot bash /sflowtrend.sh

Redémarrez et essayez de vous connecter à votre serveur, port 6789

http://ubuntu-hostname:6789

Cela a fonctionné pour moi et je voulais partager.

S'amuser!


Sources

1
SirCharlo