如何使我的 bash 脚本看起来 100% 像 GUI 应用程序(这样用户永远看不到终端)

如何使我的 bash 脚本看起来 100% 像 GUI 应用程序(这样用户永远看不到终端)

我使用 kdialog 创建了一个 bash 脚本(它在 Kubuntu 12.04 上运行)。 GUI 用于每次用户交互(第一次交互之后)。但是,即使用户不需要读取终端输出或在终端中输入任何内容,脚本仍然必须从终端启动,并且终端仍然可见。有没有一种简单的方法可以进入下一步并使我的 bash 脚本看起来 100% 像 KDE Gui 应用程序?

从下面 slm 和 Ilya Ananyev 的最初答案中,我发现制作 .desktop 文件可以完成此任务。这对我来说真是太神奇了,这就是我一直在寻找的简单答案。 (我想要一个可以在午餐时间完成的任务,并让我的 bash 脚本看起来像一个真正的 GUI 应用程序。)对于这个问题的其他读者来说,.desktop 文件也可能是正确的答案。

但是,在我的具体情况下,该脚本是安装程序脚本。所以我发现自己陷入了第二十二条军规。如何安装 .desktop 文件来启动我的安装程序,而用户无需先运行 .desktop 文件的另一个安装程序?

此外,就我而言,该脚本由最终用户使用不是计算机知识。最终用户在我的推荐下购买了一台预装了 Linux 的计算机。我的目标是让他们安装我的软件而根本不需要去终端。 (很可能他们以前从未见过命令提示符——其中一些人甚至还不知道如何使用鼠标!)

因此,看来我的解决方案需要某种神奇的方式来安装 .desktop 文件,以便用户可以单击它来启动我的安装程序脚本。

总结来说,我的主要要求是:

  1. 一种在不显示终端的情况下启动脚本的方法。.desktop 文件将完成此任务。
  2. 一种在执行期间保持终端隐藏的方法(因为我完全依赖 kdialog)。.desktop 文件将通过Terminal=falseset 来完成此操作。
  3. (可选)用户输入 sudo 密码的安全方式。我知道 kdialog 密码输入对话框,但用法例子我见过不安全的。kdesudo 可能是一个解决方案,但它会多次重新提示输入密码,忽略通常/默认的 sudo 超时 X 分钟。所以它对我来说不起作用。
  4. 很简单,可以在我的午餐时间实施。.desktop 文件将完成此任务。
  5. 将我现有的 bash 脚本与 kdialog 结合使用。.desktop 文件将完成此任务。
  6. 不需要用户在运行我的脚本之前执行额外的设置步骤。事实证明,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

此外(如果您想编写某种安装程序),您可以在安装脚本中创建它。

相关内容