我正在编写一个 bash 脚本来自动安装TLauncher(我的世界启动器)以及运行 Lubuntu 18.04 的 USB 上的基本依赖管理。
bash 脚本的一部分会在下面创建一个桌面条目,/usr/share/applications
以便从 Lubuntu 菜单轻松启动。
这是我正在使用的条目:
[Desktop Entry]
Encoding=UTF-8
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
Icon=~/.minecraft/icons/default.png
Type=Application
Terminal=false
Name=Minecraft
GenericName=minecraft
StartupNotify=false
Categories=Game
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
如果在终端中运行该命令,则该命令有效并会启动 TLauncher。但是,当我将命令放入桌面条目时,我觉得缺少了一些东西。
当我尝试从 Lubuntu 菜单中打开条目时,光标显示正在加载某些内容,但无论我等待多久都没有任何反应。我也不确定如何调试桌面条目。我尝试xdg-open
输入,但终端中没有输出,也没有发生任何事情 - 即 TLauncher 没有启动。
我尝试将命令放入一个单独的 bash 文件中,如下所示:
#!/bin/bash
pkexec env DISPLAY=:0 XAUTHORITY=/home/me/.Xauthority /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
在终端中运行它bash testscript.sh
可以工作并启动 TLauncher。
但是当我将它放在桌面条目中替换exec
上面条目中的 时,如下所示:
Exec=/bin/bash /path/to/testscript.sh
这是行不通的。
shell 脚本具有适当的权限。
我觉得要么是我写的桌面条目的exec
值错误,要么是pkexec
桌面条目不应该按照我试图使其工作的方式工作。
我希望能够通过菜单从桌面条目启动 TLauncher,并有一个 gui 弹出窗口要求输入密码,以便命令运行为root
.
编辑:
使用完整路径代替~
也会产生相同的结果 - 即它不起作用并且上述问题仍然存在。
设置Terminal=true
并不能为我解决这个问题。
答案1
当前的解决方案:由于该命令在终端中运行时有效,因此只需让桌面条目使用终端运行该命令即可:
Exec=lxterminal -e "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel /home/me/.minecraft/tlauncher.jar"
笔记:
我想我可以以此为基础,确保当启动器关闭时,它实际上是关闭的,因为我注意到ps aux
进程实际上并没有像我期望的那样被杀死,下次打开启动器时会导致奇怪的行为。