Membuka file .jar dengan `pkexec` dan menggunakan Entri Desktop untuk menjalankan perintah
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/applications
untuk 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-open
masuk, 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.sh
berfungsi dan meluncurkan TLauncher.
Tetapi ketika saya meletakkannya di entri desktop menggantikan exec
dari 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 exec
atau itu pkexec
tidak 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=true
tidak menyelesaikan ini untuk saya.
Jawaban
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 aux
bahwa proses sebenarnya tidak dimatikan seperti yang saya harapkan menyebabkan perilaku aneh saat saya membuka peluncur berikutnya.