在特定的 X 服务器或 VNC 端口中运行应用程序

在特定的 X 服务器或 VNC 端口中运行应用程序

我有一个想要运行的应用程序,但我希望它只能通过某个 VNC 端口可见。

我不想让应用程序显示在普通的 Ubuntu 桌面上。我希望应用程序“在后台”运行,并且只能通过 VNC 查看。当连接到这个“备用 X 服务器”时,最终用户不会看到任何菜单栏、窗口装饰......只有应用程序。

仔细想想,我要求的是一种仅针对特定应用程序的信息亭模式,可通过 VNC 访问。

这可能吗或者我真的到达这里了吗?

谢谢!

请注意,我希望以这种方式运行的应用程序是用 Java 编写的。它是一个 JNLP 文件。

答案1

我已经成功完成了这个任务。下面是具体方法。


安装必要的软件。

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

为 VNC 连接设置密码。

x11vnc -storepasswd

创建一个脚本文件来用 cron 运行。

sudo nano /sflowtrend.sh

这些是文件的内容。

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

编辑 root 的 crontab。

sudo crontab -e

将以下行添加到末尾crontab

@reboot bash /sflowtrend.sh

重新启动,然后尝试连接到您的服务器、端口6789

http://ubuntu-hostname:6789

这对我很有用,我想分享。

玩得开心!


来源

相关内容