![如何在设备插件上启动 GUI 应用程序?](https://linux22.com/image/1003173/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%AE%BE%E5%A4%87%E6%8F%92%E4%BB%B6%E4%B8%8A%E5%90%AF%E5%8A%A8%20GUI%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
如何自动启动 GUI 程序以便当设备插入 Ubuntu 16.04 时它保持打开状态?
我的目标是让我的 Cintiq 显示器打开时启动 gnome-pie 程序,然后让该程序在显示器关闭时终止。
我尝试使用 udev 和 systemd 来调用一个脚本,然后启动该程序。脚本运行,但应用程序不运行。
这是我的 udev 行:
ACTION=="add", ATTR{product}=="DTK-2100", ATTR{idProduct}=="00cc", ATTR{idVendor}=="056a", TAG+="systemd"
...以及我的 systemd 文件内容。
[Service]
Type=forking
Restart=no
ExecStart=/bin/sh /home/user/xsetwacom.sh
[Install]
WantedBy=default.target
WantedBy=sys-devices-pci0000:00-0000:00:1a.2-usb5-5\\x2d2.device
最后这是我的脚本:
#!/bin/bash
sleep 4
export DISPLAY=:0
export XAUTHORITY=/home/user/.Xauthority
xsetwacom set "Wacom Cintiq 21UX2 Pad pad" Button 1 key Shift ctrl l
xsetwacom set "Wacom Cintiq 21UX2 Pad pad" Button 14 key Shift ctrl r
/home/user/touch-toggle1_ubuntu.sh
gnome-pie & disown
除“gnome-pie & disown”之外的所有东西都运行正常,但我不知道为什么。
有人能帮我解决这个问题吗?我想利用这种行为的可能性包括 USB 驱动器、相机、扫描仪、网络摄像头以及几乎任何其他需要某种 GUI 交互的东西。
答案1
事实证明我处理问题的方法是正确的。不幸的是,我发现虽然我可以启动大多数程序,但 gnome-pie 不是其中之一。
我还了解到,如果不断断开/重新连接,即使应用程序启动,这种方法有时也会出现错误并且无法正常工作。
考虑到没有其他人会以这种方式使用 gnome-pie,找到让它正常工作的解决方案可能不会发生。
希望将来适用于 Linux 的 Wacom 驱动程序能够更新以包含径向菜单。
答案2
Udev 不适用于 GUI 工具之类的用途...它是一个低级守护进程。
目前,最好的解决方案是编写一个脚本(例如python
& pyudev
),监视 udev 事件以启动您想要的任何内容。