![如何使我的 bash 脚本看起来 100% 像 GUI 应用程序(这样用户永远看不到终端)](https://linux22.com/image/33432/%E5%A6%82%E4%BD%95%E4%BD%BF%E6%88%91%E7%9A%84%20bash%20%E8%84%9A%E6%9C%AC%E7%9C%8B%E8%B5%B7%E6%9D%A5%20100%25%20%E5%83%8F%20GUI%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%88%E8%BF%99%E6%A0%B7%E7%94%A8%E6%88%B7%E6%B0%B8%E8%BF%9C%E7%9C%8B%E4%B8%8D%E5%88%B0%E7%BB%88%E7%AB%AF%EF%BC%89.png)
我使用 kdialog 创建了一个 bash 脚本(它在 Kubuntu 12.04 上运行)。 GUI 用于每次用户交互(第一次交互之后)。但是,即使用户不需要读取终端输出或在终端中输入任何内容,脚本仍然必须从终端启动,并且终端仍然可见。有没有一种简单的方法可以进入下一步并使我的 bash 脚本看起来 100% 像 KDE Gui 应用程序?
从下面 slm 和 Ilya Ananyev 的最初答案中,我发现制作 .desktop 文件可以完成此任务。这对我来说真是太神奇了,这就是我一直在寻找的简单答案。 (我想要一个可以在午餐时间完成的任务,并让我的 bash 脚本看起来像一个真正的 GUI 应用程序。)对于这个问题的其他读者来说,.desktop 文件也可能是正确的答案。
但是,在我的具体情况下,该脚本是安装程序脚本。所以我发现自己陷入了第二十二条军规。如何安装 .desktop 文件来启动我的安装程序,而用户无需先运行 .desktop 文件的另一个安装程序?
此外,就我而言,该脚本由最终用户使用不是计算机知识。最终用户在我的推荐下购买了一台预装了 Linux 的计算机。我的目标是让他们安装我的软件而根本不需要去终端。 (很可能他们以前从未见过命令提示符——其中一些人甚至还不知道如何使用鼠标!)
因此,看来我的解决方案需要某种神奇的方式来安装 .desktop 文件,以便用户可以单击它来启动我的安装程序脚本。
总结来说,我的主要要求是:
- 一种在不显示终端的情况下启动脚本的方法。.desktop 文件将完成此任务。
- 一种在执行期间保持终端隐藏的方法(因为我完全依赖 kdialog)。.desktop 文件将通过
Terminal=false
set 来完成此操作。 - (可选)用户输入 sudo 密码的安全方式。我知道 kdialog 密码输入对话框,但用法例子我见过不安全的。kdesudo 可能是一个解决方案,但它会多次重新提示输入密码,忽略通常/默认的 sudo 超时 X 分钟。所以它对我来说不起作用。
- 很简单,可以在我的午餐时间实施。.desktop 文件将完成此任务。
- 将我现有的 bash 脚本与 kdialog 结合使用。.desktop 文件将完成此任务。
- 不需要用户在运行我的脚本之前执行额外的设置步骤。事实证明,KDE 用户可以单击位于任何位置的 .desktop 文件。因此,我的用户可以将 .desktop 文件下载到他们的 ~/Downloads 文件夹中并从那里启动它。
答案1
我希望我理解正确:您只需要现有脚本的启动器。如果是这样,请尝试为您的脚本编写一个小的 .desktop 文件并将其放置在 ~/.local/share/applications 或 /usr/share/applications 中。这是一个例子:
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Sample Application Name
Comment=A sample application
Exec=application
Icon=application.png
Terminal=false
此外(如果您想编写某种安装程序),您可以在安装脚本中创建它。