![如何修复 Ubuntu 16.04 Unity 桌面文件的间歇性双击行为](https://linux22.com/image/8088/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20Ubuntu%2016.04%20Unity%20%E6%A1%8C%E9%9D%A2%E6%96%87%E4%BB%B6%E7%9A%84%E9%97%B4%E6%AD%87%E6%80%A7%E5%8F%8C%E5%87%BB%E8%A1%8C%E4%B8%BA.png)
我尝试过并测试过@terdon 的 .desktop昨天归档。这里是:
“一种更简洁的方法是编写一个 .desktop 文件来启动脚本,然后双击该文件。例如:
[Desktop Entry] Exec=/home/user/yourscript.sh Terminal=true Type=Application
将该文件保存
foo.desktop
在您的~/Desktop
文件夹中。现在它将显示为一个图标,双击它将使您的脚本在终端中运行。显然,您需要更改/home/user/yourscript.sh
为脚本的实际路径
当我按照 @terdon 的建议步骤操作时,我的 Ubuntu 16.04 Unity 桌面文件的双击行为是间歇性的。有时它会成功,有时则无法启动桌面条目的执行行中指向的 bash 脚本。
为什么会发生这种情况以及如何解决此问题?
这是/home/venker/.local/share/applications/fsu.desktop
失败的
[Desktop Entry]
Exec=/home/venker/Debug/My_NVR_Recorder.exe.cfg
Terminal=true
Type=Application
这是/home/venker/Debug/My_NVR_Recorder.exe.cfg
有效的:
#!/bin/bash
/home/venker/Debug/Generic.cfg -start /home/venker/Debug/My_NVR_Recorder.exe "Recorder Manage"
这是/home/venker/Debug/Generic.cfg
有效的:
#!/bin/bash
if [ $1 == "-start" ]; then
exec /usr/lib/mono/4.5/mono-service.exe $2 & >& /dev/null
else
pkill "$3"
mystring="/tmp/${2}.lock"
rm "$mystring"
fi
以上3个文件受rwxr_xr_x保护。
以下是有效的脚本文件 /home/venker/Debug/My_NVR_Recorder.exe.cfg 的示例:
#!/bin/bash
exec /usr/lib/mono/4.5/mono-service.exe /home/venker/Debug/My_NVR_Recorder.exe &
答案1
以下是我如何消除双击 fsu.desktop 的间歇性行为。
这是 fsu.desktop。
[Desktop Entry]
Name=FSU79
Exec=/usr/bin/gnome-terminal -e "bash -c /home/wendy/Debug/My_HDR_Recorder.exe.cfg"
Terminal=false
Type=Application
这是/home/wendy/Debug/Generic.cfg
#!/bin/bash
if [ $1 == "-start" ]; then
cd /home/wendy/Debug
exec /usr/lib/mono/4.5/mono-service.exe $2 & >& /dev/null
else
pkill "$3"
exe=$(echo $2 | grep -oE "[^/]+$")
mystring="/tmp/${exe}.lock"
rm "$mystring"
fi
这是/home/wendy/Debug/My_HDR_Recorder.exe.cfg
#!/bin/bash
nohup /home/wendy/Debug/Generic.cfg -start /home/wendy/Debug/My_HDR_Recorder.exe "Recorder Manage"
[编辑 2016 年 6 月 2 日晚上 9:35 有人可以让我们的架构师或我知道这完全消除了双击 fsu.desktop 的间歇性行为的原因吗?先感谢您。]