所以我面前有一个有趣的挑战,运行 Ubuntu 16.04。
我最初创建了一个 .xsession 文件,该文件Exec=google-chrome --kiosk http://some-url.com
作为信息亭设备启动运行。
上面提到的 .xsession 文件存在于/usr/share/xsessions/
,并在 的 lightdm 配置文件中设置为默认会话/usr/share/lightdm/lightdm.d.conf/50-ubuntu.conf
。
效果很好。
迎接新挑战:
我希望能够远程切换设备是否以信息亭模式启动。
为了做到这一点,我修改了 Exec 命令以运行我编写的 bash 脚本来确定是否作为信息亭启动。
从.xsession 文件执行以下脚本:
#! /bin/bash
KIOSK_MODE=$(curl http://some-url.com/bootInKioskMode/)
if [ $KIOSK_MODE = "true" ] ; then
google-chrome --kiosk http://some-url.com
else
gnome-session --session=ubuntu &
unity
fi
我的想法是,因为我可以控制什么http://some-url.com/bootInKioskMode/返回后,我应该能够切换设备启动时的模式
目前,我有两个问题需要解决。
我的 if/else 语句始终匹配 false……因此,即使 curl 响应是,它也不会启动到信息亭模式
true
。当它启动并运行语句后的命令时
else
,它实际上并不匹配默认启动。顶部菜单栏缺失,屏幕右上角的图标和设置选项也缺失。
其他值得一提的事情:
我确实知道它已连接到互联网,并且 curl 请求通过测试正常启动(将其输出并保存到文件)。
我已将其设置为自动登录到没有 sudo 权限的信息亭用户,并且已经在这些条件下运行测试。
任何帮助我都会感激不尽。到目前为止,我已经花了几个小时在谷歌上搜索并尝试了不同的东西,但还没有太多的运气。
谢谢。
答案1
重新分解你的问题。你可以很容易地编写一个简单的 Perl 脚本来监听一个约定的端口(例如30201
)参见此示例来自 thegeekstuff.com。让服务器部分接受 3 个命令:“kiosk”、“desktop”和“quit”。 “kiosk”和“desktop”设置/清除类似 的标志/var/run/kiosk-mode
。在 中启动服务器/etc/init
。然后,您只需if [[ -f /var/run/kiosk-mode ]] ; then ...
在脚本中执行即可。