web-dev-qa-db-ja.com

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

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

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

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

[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メニューからエントリを開こうとすると、カーソルが何かを読み込んでいることを示していますが、どれだけ待っても何も起こりません。デスクトップエントリのデバッグ方法もわかりません。エントリをtoxdg-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

それは動作しません。

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

デスクトップエントリのexec値を間違って記述している、またはpkexecがデスクトップエントリから動作するように設計されていないように思われます。

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

編集:

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

Terminal=trueを設定しても、これは解決されません。

3
solidwaffle

現在の解決策:コマンドはターミナルで実行しても機能するので、ターミナルでコマンドを実行するだけでデスクトップエントリを作成できます。

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を通じてプロセスが実際には終了していないことに気付いたので、ランチャーが実際に閉じていることを確認できます。ランチャーを開きます。

2
solidwaffle