在桌面外打开 .desktop 文件会立即注销

在桌面外打开 .desktop 文件会立即注销

这是我第一次向 Ask Ubuntu 提出问题,因此我谨提前感谢您的耐心。

我的情况是这样的:我有一个*.desktop文件(我写的)用来执行一个 shell 脚本。我最初打算把这个文件放进去,~/.config/autostart让它在启动时自动运行;然而,这会导致 Ubuntu 桌面闪动一瞬间,然后把我注销。我可以双击桌面上的文件,它会像预期的那样启动脚本。如果我把文件*.desktop~/Desktop目录中取出,放在其他任何地方,在 Nautilus 中双击它也会导致我立即被注销。

*.desktop文件设置为执行以 开始的 shell 脚本bashgnome-terminal我这样做的原因并不一定重要,所以请假设这就是我需要的方式。如果我sleep 10在第一个 shell 脚本的开头添加内容,则启动文件 10 秒后我就会被注销*.desktop,无论它是如何启动的。问题似乎在于gnome-terminal从第二个脚本启动了一个新窗口,但我不明白这是怎么回事或为什么会这样。桌面条目:

[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application

初始化系统:

#!/bin/bash
nohup gnome-terminal --title=Autocapture --maximize -e "bash -c 'bash /Autocapture/Startup/StartAutocap.sh';bash"
wmctrl -a "Autocapture"           # Give focus to new terminal window
kill -9 $PPID                     # Close this terminal

启动Autocap.sh:

#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py

这应该(如果从桌面启动,则成功)启动一个全屏gnome-terminal窗口bashmodule.py在该 bash 会话中启动“ ”程序。它还会关闭gnome-terminal启动并分离子进程的第一个窗口。

抱歉,第一篇帖子太长了。我只是想了解这里出了什么问题以及如何修复它。任何帮助都非常感谢!

答案1

虽然我有自己的理论,但我不敢宣称我确切地(甚至只是稍微知道)这是如何或为什么起作用的。我猜想这与启动器*.desktop执行其目标的方式有关。也许我在脚本执行结束时已经关闭了 gnome-terminal 窗口后试图将其关闭,结果却杀死了我的会话?也许反之亦然?我不敢声称自己知道,但我邀请任何知道的人请回答这个问题并解释一下以便其他人可以从我的错误中吸取教训。

删除该行kill -9 $PPID解决了问题

如果从启动器执行该脚本*.desktop,则初始gnome-terminal窗口将关闭,只留下第二个窗口。如果从命令行执行该脚本(例如$ bash InitSystem),则初始gnome-terminal窗口不会关闭。

相关内容