java - pk使用 `pkexec` 打开 .jar 文件并使用桌面条目运行命令

标签 java bash ubuntu desktop ubuntu-18.04

我正在编写一个 bash 脚本来自动安装 TLauncher (Minecraft launcher)以及运行 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 并不能为我解决这个问题。

最佳答案

当前解决方案:由于该命令在终端中运行时有效,因此只需让桌面条目使用终端运行该命令即可:

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 注意到进程实际上并未按照我期望的方式被终止下次打开启动器时会导致奇怪的行为。

关于java - pk使用 `pkexec` 打开 .jar 文件并使用桌面条目运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57916833/

相关文章:

java - 将一个 LinkedList 插入另一个 LinkedList

Java加密等于不起作用

java - Jersey 的@ManagedAsync 注释是什么?

linux - 如何检查用户指定的名称是否引用目录?

python - 如何使用python ubuntu从远程服务器读取excel文件

java - Ubuntu 中 Tomcat7 上的 JAVA 应用程序中的 SSL 证书错误

java - PreparedStatement 不适用于 substring_index?

linux - 获取前 5 行并放入另一个文件的 bash 脚本

SVN 提交后 Hook 错误 255

node.js - 在 Ubuntu 20 ec2 实例中设置 Ionic 环境时出错