从 xsession 运行 bash 脚本来切换启动程序

从 xsession 运行 bash 脚本来切换启动程序

所以我面前有一个有趣的挑战,运行 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/返回后,我应该能够切换设备启动时的模式

目前,我有两个问题需要解决。

  1. 我的 if/else 语句始终匹配 false……因此,即使 curl 响应是,它也不会启动到信息亭模式true

  2. 当它启动并运行语句后的命令时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 ...在脚本中执行即可。

相关内容