pk用pkexec打开.jar文件并使用桌面项运行命令

时间:2019-09-13 03:09:28

标签: java bash ubuntu desktop ubuntu-18.04

我正在编写一个bash脚本,用于在运行Lubuntu 18.04的USB上自动安装TLauncher (Minecraft launcher)和基本依赖性管理。

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脚本具有适当的权限。

我感觉是我在错误地写出Desktop Entry的exec值,或者pkexec不能以我试图使其工作的方式在Desktop Entry中起作用。

我希望能够通过菜单从桌面条目中启动TLauncher,并有一个gui弹出窗口询问密码,以便使命令以root的身份运行。

编辑:

使用完整路径而不是~也会产生相同的结果-即,它不起作用,并且仍然存在上述问题。

设置Terminal=true并不能解决我这个问题。

1 个答案:

答案 0 :(得分:1)

当前解决方案:由于该命令在终端中运行时有效,因此只需让Desktop Entry在终端上运行该命令即可:

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所注意到的那样,进程实际上并没有像我预期的那样导致异常行为被杀死。下次我打开启动器。