我创建了一个 shell 脚本,假设它是
echo hi
sleep 5
echo bye
exit
然后我创建了一个.desktop
文件来启动 shell 脚本。双击它就可以正常工作:
[Desktop Entry]
Version=1.0
Name=Test
Comment=Bash Cript
Exec=bash /example/test.sh
Terminal=true
Type=Application
Categories=Utility;Application;
将 .desktop 文件拖放到 Unity Launcher 后,我就可以单击它。一次。 首次启动后,图标保留在启动器中,但单击它不会执行任何操作。
鼠标中键单击可再次启动该应用程序
我究竟做错了什么?
答案1
它做工作
...甚至测试过,但启动器图标在您点击后约 7 秒内无响应。如果您在这 7 秒后再次点击,它将再次工作。
此“中断”是由图标等待窗口出现而引起的。但事实并非如此,因为出现的窗口gnome-terminal
是由启动器图标“声明”的gnome-terminal
,而您的“自制”图标无法将该窗口识别为“自己的”。
解决方案?
你可以通过在启动器中添加一行来解决问题(14.04)
StartupWMClass=gnome-terminal
或 (16.04):
StartupWMClass=gnome-terminal-server
然而,仅出于测试目的这样做,不将其用作永久解决方案;拥有多个文件,可能在主命令中.desktop
声明相同文件是一个坏主意,它会导致Unity 启动器中出现冲突。WM_CLASS
gnome-terminal
更好的解决方案
最好将您的脚本作为右键单击选项添加到现有gnome-terminal
启动器:
- 将全局
gnome-terminal
启动器从/usr/share/applications
复制到
~/.local/share/applications
:
cp /usr/share/applications/gnome-terminal.desktop ~/.local/share/applications
使用以下命令打开文件
gedit
:gedit ~/.local/share/applications/gnome-terminal.desktop
更改此行:
Actions=New;
进入:
Actions=New;My Script;
并添加以下部分:
[Desktop Action My Script] Name=My Script Exec=gnome-terminal -e "bash /absolute/path/to/your/script.sh"
到文件末尾。然后注销并重新登录,您将在
gnome-terminal
启动器中以 quicklist- 快捷方式使用脚本。