Cara meneruskan file sebagai argumen dalam file .desktop untuk aplikasi anggur

11

Saya sebenarnya ingin mengajukan dua pertanyaan:

  1. Di mana saya dapat menemukan lebih banyak tentang pintasan argumen / parameter yang tersedia untuk entri Exec dalam file desktop (seperti% U,% u,% f ...)

  2. Pertanyaan utama, bagaimana cara mengirimkan file sebagai argumen pada .desktop launcher untuk aplikasi wine?

Saya menemukan pencarian di sini saran ini: z:%fyang tidak berguna bagi saya, seolah-olah saya hanya menjalankan file .desktop tanpa melewati file di atasnya, itu mengasumsikan argumen itu z:dan mulai memindai z:"drive"


Contoh:

[Desktop Entry]
Name=Some Windows program
Exec=wine "program.exe" z:%f
Type=Application
Terminal=false
MimeType=application/docbook+xml

Saya ingin menjatuhkan file XML di peluncur .desktop kustom saya untuk aplikasi anggur ini dan saya bisa dengan cara ini. Masalahnya adalah jika saya mengklik ikon peluncur untuk membangkitkan program ini, argumen z:selalu disampaikan dan itu tidak dapat diterima

zetah
sumber
Apa yang kamu coba lakukan btw? Bisakah Anda menambahkan contoh?
Bruno Pereira
Hai Bruno;) Saya pikir sudah jelas - saya membuat file desktop (purpose - launcher) untuk aplikasi anggur dan saya ingin dapat mengirimkan file ke dalamnya. z:%fSolusi di atas tidak baik karena setiap kali saya meluncurkan argumen aplikasi anggur z:ini diteruskan dan saya ingin menghindarinya
zetah
Jadi Anda memiliki program windows bernama (yaitu) application.exeyang ingin Anda lewati file yang dipilih saat ini di nautilus yaitu file.txt?
Bruno Pereira
Maaf saya harus menambahkan contoh di posting pertama saya. Saya menambahkannya sekarang
zetah
Saya telah melihat-lihat ini sampai sekarang dan satu-satunya pilihan lain untuk ini adalah skrip yang ditempatkan di execbaris yang memeriksa %f, jika ada meluncurkan aplikasi pada file, jika tidak hanya meluncurkan aplikasi. Merawatnya atau itu bukan pilihan?
Bruno Pereira

Jawaban:

8

Ini yang terbaik yang saya bisa sejauh ini (contoh Notepad)

[Desktop Entry]
Name=Notepad
Exec=sh -c "echo %f | sed 's/^\//z:\//' | xargs wine /home/zetah/.wine/drive_c/windows/notepad.exe"
Type=Application
Terminal=false
Categories=Wine
MimeType=text/plain

Saya mengharapkan jawaban yang lebih baik mengingat saya pemula

zetah
sumber
Lihat peningkatan saya di bawah ini untuk melewatkan banyak file.
Harvey
1

Peningkatan pada jawaban zetah. Ini berfungsi untuk mengirimkan banyak file ke program. % F diubah menjadi% F (huruf besar) untuk meneruskan semua file yang dijatuhkan, menggantikan ^ (untuk awal baris) dengan cukup nama path untuk membuatnya lebih unik, 'g' di akhir dari perintah sed untuk menyebabkan penggantian mengulangi untuk semua file yang disahkan dan akhirnya $ bukannya / sehingga karakter \ escape tidak diperlukan.

Exec=sh -c "echo %F | sed 's$/home$z:/home$g' | xargs wine /home/owner/.wine/dosdevices/c:/Progs/Boxer/b.exe"

Saya juga memindahkan program yang akan dieksekusi ke jalur di mana pathname tidak memiliki spasi, jadi saya memindahkan editor boxer saya dari:

/home/owner/.wine/dosdevices/c:/Program Files/Boxer Text Editor/

untuk:

/home/owner/.wine/dosdevices/c:/Progs/Boxer/
Harvey
sumber
1

Ada banyak solusi peretasan yang diposting di utas ini. Berikut adalah solusi yang jauh lebih baik yang berhubungan dengan banyak file dan spasi dalam nama file.

Buat file .desktop seperti yang biasa Anda lakukan, dan cukup gunakan baris Exec ini:

Exec=/usr/bin/env bash -c "printf 'z:%%q\\n' %F | WINEPREFIX='/home/<your username>/.wine' xargs wine 'C:\\Path\\to the executable\\app.exe'"

Sunting : Jika aplikasi Anda dapat menangani banyak file dalam satu instance (misalnya, penampil PDF multi-tab) dan Anda ingin instance saat ini menjadi fokus otomatis setiap kali Anda meluncurkan file baru maka Anda perlu melakukan hal berikut:

  • Tambahkan baris ini ke file .desktop: StartupWMClass=app.exe

  • Gunakan perintah Exec ini:

    Exec=/usr/bin/env bash -c "(printf 'z:%%q\\n' %F | WINEPREFIX='/home/<your username>/.wine' xargs wine 'C:\\Path\\to the executable\\app.exe' &); xdotool windowactivate \$(xdotool search --sync --onlyvisible --class \"app.exe\")"
    
Caleb
sumber
1

Baris Exec dengan pipa winepath ke xargs, digunakan dengan penawaran yang tepat dan opsi -0, bekerja dengan sempurna di Ubuntu 14.04 untuk membuka file tunggal dan banyak.

Exec=/usr/bin/env sh -c "winepath -w -0 %F | WINEPREFIX='/home/your_user_name/.wine' xargs -0 wine 'C:\\\\Program Files\\\\Some Vendor\\\\SomeProgram.exe'"
lbo
sumber
0

Ini adalah cara yang hanya bekerja untuk saya di kotak RHEL 6.3 setelah beberapa coba-coba dan membaca Spesifikasi Entri Desktop. Ini tidak spesifik untuk anggur dengan argumen tetapi harus bekerja dengan sesuatu seperti Exec=wine \"filename.exe\".

Semoga ini bisa membantu seseorang karena butuh beberapa pencarian untuk membuatnya bekerja.

Saya pikir Anda harus menggunakan tanda kutip ganda dan menghindarinya serta setiap karakter khusus menggunakan garis miring terbalik.

[Desktop Entry]
Version=1.0
Name=Ansys User Lic Prefs 12.1
GenericName=Ansys User Lic Prefs 12.1
Comment=Ansys User License Prefs 12.1
Encoding=UTF-8
Exec=anslic_admin \"\-userprefs121\"
Icon=ansysLogo_16x16.png
Terminal=false
Type=Application
Categories=Ansys;
pengguna80295
sumber
0

Saya baru saja menulis skrip Python kecil yang mengubah jalur gaya Unix menjadi format jalur Wine.

Unduh zip , ekstrak wine-launcher.py ke folder home Anda dan edit file .desktop Anda seperti ini:

Exec=python ~/wine-launcher.py "program.exe" %F
Ivan Filho
sumber