在 Mint 上从命令行启动桌面启动器

在 Mint 上从命令行启动桌面启动器

我可以从命令行启动桌面启动器吗?例如,我的 ~/Desktop 目录中有一个用于 slack 的桌面启动器:

vadim@my-pc ~/Desktop $ cat slack.desktop 
[Desktop Entry]
Name=Slack
Comment=Slack Desktop
GenericName=Slack Client for Linux
Exec=/usr/bin/slack --proxy-server="10.1.50.8:8080"
Icon=/usr/share/pixmaps/slack.png
Type=Application
StartupNotify=true
Categories=GNOME;GTK;Network;InstantMessaging;
MimeType=x-scheme-handler/slack;
Name[en_US]=slack

在 Exec 参数中,我可以指定启动应用程序的各种选项,例如代理服务器。我发现在桌面启动器的参数中准确指定代理很方便。

现在我希望能够使用桌面启动器中的所有启动选项从命令行启动 slack。我知道我可以创建一个 shell 脚本文件,并在其中指定我想要的所有启动选项,并从桌面启动器和命令行运行该文件,但是有没有办法只运行松弛桌面从命令行文件?

答案1

您可以使用类似的工具xdg-open (目前已损坏), kde-open,gnome-open,gtk-launch或您的桌面环境的等效项。 (xdg-open貌似应该是通用的……)

(似乎除了gtk-launch(其他工具包可能存在更多类似的工具)之外的所有内容都遭受相同的错误xdg-open- 它在编辑器中打开 .desktop 文件而不是运行它)

软件包:(确切名称因发行版而异)(基于 CentOS 7)

  • gtk3 用于 gtk 启动
  • 用于 xdg-open 的 xdg-utils
  • kde-open 的 kde 运行时
  • libgnome 用于 gnome-open

答案2

如果您确实想要这个,我建议您编写一个小函数,从 .desktop 文件中提取可执行文件名称并运行它。将这些行添加到 shell 的初始化文件中(例如~/.bashrc):

runDesktop () {
  eval "$(awk -F= '$1=="Exec"{$1=""; print}' "$1")"
}

然后,您可以使用 .desktop 文件运行您的 .desktop 文件runDesktop ~/Desktop/slack.desktop。当然,通常的警告关于eval申请。

你可以尝试让它多一点复杂的复杂的:

runDesktop () {
  comm=( $(awk -F= '$1=="Exec"{$1=""; print}' "$1") )
  "${comm[0]}" "${comm[@]:1}" &
  disown
}

答案3

dex应用程序可能是执行此操作的最简单方法。

sudo apt install dex然后dex ~/Desktop/some-application.desktop或者因为许多/大多数系统应用程序都在/usr您可以使用dex /usr/share/applications/some-application.desktop.

相关内容