`pkexec`で.jarファイルを開き、デスクトップエントリを使用してコマンドを実行する

Oct 19 2019

TLauncher(Minecraftランチャー)のインストールとLubuntu18.04を実行しているUSBへの基本的な依存関係管理を自動化するbashスクリプトを書いています。

bashスクリプトの一部は、/usr/share/applicationsLubuntuメニューから簡単に起動できるようにデスクトップエントリを作成します。

これが私が使用しているエントリです:

[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

このコマンドは機能し、ターミナルで実行するとTLauncherを起動します。ただし、デスクトップエントリにコマンドを入力すると、何かが足りないと感じます。pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

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.shTLauncherを起動します。

しかし、デスクトップエントリに配置すると、exec上記のエントリのを次のように置き換えます。

Exec=/bin/bash /path/to/testscript.sh

それは動作しません。

シェルスクリプトには適切な権限があります。

デスクトップエントリのexec値を間違って書いているか、pkexecそれを機能させようとしている方法でデスクトップエントリから機能しないように感じます。

メニューを介してデスクトップエントリからTLauncherを起動し、コマンドをとして実行するためにパスワードを要求するGUIポップアップを表示できるようにしたいと思いますroot

編集:

代わりにフルパスを使用して~も同じ結果が得られます。つまり、機能せず、上記の問題が残ります。

設定Terminal=trueは私にとってこれを解決しません。

回答

2 solidwaffle Oct 19 2019 at 07:35

現在の解決策:コマンドはターミナルで実行すると機能するため、デスクトップエントリにターミナルでコマンドを実行させるだけです。

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、次にランチャーを開いたときに奇妙な動作を引き起こすと予想される方法でプロセスが実際に強制終了されていないことに気付いたので、ランチャーが実際に閉じられるようにするために、これを基に構築できると思います。