我可以从命令行启动桌面启动器吗?例如,我的 ~/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
.