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
を設定しても、これは解決されません。
現在の解決策:コマンドはターミナルで実行しても機能するので、ターミナルでコマンドを実行するだけでデスクトップエントリを作成できます。
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
を通じてプロセスが実際には終了していないことに気付いたので、ランチャーが実際に閉じていることを確認できます。ランチャーを開きます。