Membuka file .jar dengan `pkexec` dan menggunakan Entri Desktop untuk menjalankan perintah

Oct 19 2019

Saya menulis skrip bash yang mengotomatiskan pemasangan TLauncher (peluncur Minecraft) dan manajemen ketergantungan dasar pada USB yang menjalankan Lubuntu 18.04.

Bagian dari skrip bash membuat entri desktop di bawah /usr/share/applicationsuntuk memudahkan peluncuran dari menu Lubuntu.

Ini entri yang saya gunakan:

[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

Perintah berfungsi dan meluncurkan TLauncher jika dijalankan di terminal. Namun, saya merasa saya kehilangan sesuatu ketika saya meletakkan perintah di Entri Desktop.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

Ketika saya mencoba membuka entri dari menu Lubuntu, kursor menunjukkan ada sesuatu yang sedang dimuat, tetapi kemudian tidak ada yang terjadi tidak peduli berapa lama saya menunggu. Saya juga tidak yakin bagaimana men-debug entri Desktop. Saya mencoba xdg-openmasuk, tetapi saya tidak mendapatkan output di terminal dan tidak ada yang terjadi -ya, TLauncher tidak diluncurkan.

Saya mencoba meletakkan perintah di file bash terpisah yang terlihat seperti:

#!/bin/bash

pkexec env DISPLAY=:0 XAUTHORITY=/home/me/.Xauthority /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

Menjalankannya di terminal bash testscript.shberfungsi dan meluncurkan TLauncher.

Tetapi ketika saya meletakkannya di entri desktop menggantikan execdari entri di atas seperti:

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

Tidak bekerja.

Skrip shell memiliki izin yang sesuai.

Saya merasa seperti saya salah menulis nilai Entri Desktop execatau itu pkexectidak seharusnya berfungsi dari Entri Desktop seperti yang saya coba untuk membuatnya berfungsi.

Saya ingin dapat meluncurkan TLauncher dari entri desktop melalui menu dan memiliki popup gui yang meminta kata sandi agar perintah dapat dijalankan root.

Edit:

Menggunakan jalur lengkap alih-alih ~juga menghasilkan hasil yang sama -yaitu, itu tidak berfungsi dan masalah di atas tetap ada.

Pengaturan Terminal=truetidak menyelesaikan ini untuk saya.

Jawaban

2 solidwaffle Oct 19 2019 at 07:35

Solusi saat ini: Karena perintah berfungsi saat dijalankan di terminal, cukup minta Entri Desktop menjalankan perintah dengan terminal:

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"

Catatan:

Saya pikir saya bisa membangun ini untuk memastikan bahwa ketika peluncur ditutup, itu benar-benar ditutup karena saya perhatikan melalui ps auxbahwa proses sebenarnya tidak dimatikan seperti yang saya harapkan menyebabkan perilaku aneh saat saya membuka peluncur berikutnya.