曾几何时,
DISPLAY=:0.0 totem /path/to/movie.avi
Run Code Online (Sandbox Code Playgroud)
从我的笔记本电脑 ssh 进入我的桌面后会导致图腾movie.avi在我的桌面上播放。
现在它给出了错误:
Run Code Online (Sandbox Code Playgroud)No protocol specified Cannot open display:
当两台计算机上都稳定时,我重新安装了 Debian 挤压,我想我破坏了配置。
我在谷歌上搜索过这个,但终其一生都无法弄清楚我应该做什么。
(VLC 有一个可以工作的 HTTP 接口,但不如 ssh 方便。)
当我尝试从 cron 作业运行它时,会出现同样的问题。
以下是我认为我需要了解的其他问题:
来自非 X 会话?(意味着 root 没有登录到 X)
如果多人登录 X,我是否可以自动检测谁在哪个屏幕上,从而以编程方式检测我需要在哪个屏幕上启动应用程序?
我可以以用户身份启动应用程序吗?(好吧,我 99.999% 确定这是肯定的)
我可以检测 X 组的用户是否登录到 X 吗?
我正在尝试定期重新启动一些程序(mail-notification和stalonetray),因为它们似乎经常死机。我想设置在 NetworkManager 重新连接时重新启动它们。因此,我让它们由 中的脚本触发/etc/NetworkManager/dispatcher.d/。
我可以创建一个脚本,如下所示。
#!/bin/bash
sudo -u foo_user pkill mail-notificati -x
sudo -u foo_user DISPLAY=:0 mail-notification &
Run Code Online (Sandbox Code Playgroud)
如果我直接以用户身份运行它,效果很好。但是,如果我从 root 的脚本调用它,它就会失败。系统提示我输入密码mail-notification;它无法读取 Gnome 密钥环。
我怎样才能以foo_user各种方式运行这个程序?
我正在尝试运行需要访问我的 X 会话的 cron 作业。我知道我的 X 会话将始终为 :0,因此其中一部分很简单:
/30 * * * * DISPLAY=:0 command
Run Code Online (Sandbox Code Playgroud)
但问题是 gdm3 不再使用$HOME/.Xauthority; 相反,它使用/var/run/gdm3/auth-for-anthony-XXXXXX/databaseX 更改每次登录的位置。
除了$HOME/.Xauthority每次登录时符号链接到 GDM3 文件(或每次登录时编辑 crontab 等——.xsession当然是自动的),还有什么方法可以让 cron 工作正常工作?
需要什么才能让 cron 命令访问会话总线(如果它正在运行)?
它曾经对我有用,在 Debian Stretch(测试)上从切换 systemd 直到最近(可能是一两个月前)。奇怪的是,虽然我强烈怀疑这是由 PAM 配置控制的,但/etc/pam.d最近发生的唯一变化是添加了一些pam_selinux对pam.d/systemd-user.
那么我应该寻找什么?