Як передати файл як аргумент у .desktop файл для додатка для вина


11

Я насправді хочу задати два питання:

  1. Де я можу дізнатися більше про доступні ярлики аргументів / параметрів для введення Exec у файли на робочому столі (наприклад,% U,% u,% f ...)

  2. Головне питання, як передавати файл як аргумент на .desktop запуск для застосування вина?

Я знайшов тут пошук цієї пропозиції: z:%fяка мені не корисна, ніби я просто запускаю .desktop файл, не передаючи на нього файл, він припускає, що цей аргумент є z:і починає сканувати z:"диск"


Приклад:

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

Я хочу перенести XML-файл на свій власний .desktop запуск для цього додатка для вина, і я можу таким чином. Проблема полягає в тому, що якщо я натискаю піктограму запуску, щоб викликати цю програму, аргумент z:завжди передається на неї, і це не прийнятно


Що ти намагаєшся робити? Чи можете ви додати приклад?
Бруно Перейра

Привіт Бруно;) Я думав, що це зрозуміло - я створив файл на робочому столі (мета - запуск) для додатка для вина, і я хочу мати можливість передавати файл на ньому. Вище z:%fвирішення проблеми не є корисним, тому що коли я запускаю цей аргумент z:щодо вина , передається на ньому, і я хочу цього уникнути
zetah

Отже, у вас є програма з назвою Windows (тобто), application.exeщо ви хочете передати їй поточний вибраний файл у nautilus, тобто file.txt?
Бруно Перейра

Вибачте, що я повинен був додати приклад у своєму першому дописі. Я додав це зараз
zetah

Я до цього часу оглядався, і єдиний інший варіант для цього - це скрипт, розміщений у execрядку, який перевіряє наявність a %f, якщо він існує, запустіть додаток у файлі, якщо не просто запустіть програму. Догляд за ним чи це не варіант?
Бруно Перейра

Відповіді:


8

Це найкраще, на що я можу (приклад блокнота)

[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

Я очікую кращих відповідей, враховуючи, що я початківець


Дивіться моє вдосконалення нижче щодо передачі декількох файлів.
Харві


1

Поліпшення відповіді на зета. Це працює для передачі декількох файлів програмі. % F змінено на% F (верхній регістр), щоб передати всі файли, що випали, замінивши ^ (для початку рядка) достатньою назвою шляху, щоб зробити його більш імовірним унікальним, 'g' в кінці команди sed, щоб викликати повторну заміну для всіх файлів, що передаються, і, нарешті, $ замість /, так що символи \ escape не потрібні.

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

Я також перемістив програму, яку потрібно виконати, на шлях, у якому в імені шляху немає пробілів, тому я перемістив редактора боксера з:

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

до:

/home/owner/.wine/dosdevices/c:/Progs/Boxer/

1

У цій темі було розміщено багато розкішних рішень. Ось набагато краще рішення, яке стосується декількох файлів та пробілів у назви файлів.

Створіть файл .desktop, як зазвичай, і просто використовуйте цей рядок Exec:

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'"

Редагувати : Якщо ваша програма може обробляти кілька файлів в одному екземплярі (наприклад, переглядач PDF з декількома вкладками), і ви хочете, щоб поточний екземпляр був автоматично зосереджений під час запуску нового файлу, тоді вам потрібно зробити наступне:

  • Додайте цей рядок до файлу .desktop: StartupWMClass=app.exe

  • Використовуйте цю команду Exec:

    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\")"
    

1

У Ubuntu 14.04 бездоганно працює лінія Exec з трубою винного шляху до xargs, яка використовується при правильному котируванні та їх параметрах -0, бездоганно працює в Ubuntu 14.04 для відкриття одиночних та декількох файлів.

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'"

0

Це спосіб, який якраз працював для мене у вікні RHEL 6.3 після деяких спроб та помилок та ознайомлення із специфікацією входу на робочий стіл. Він не специфічний для вина з аргументами, але він повинен працювати з чимось подібним Exec=wine \"filename.exe\".

Сподіваюсь, це допомагає комусь, як це знадобило мене в деяких пошуках, щоб змусити його працювати.

Я думаю, що вам доведеться використовувати подвійні лапки і уникати їх, а також будь-яких спеціальних символів за допомогою зворотної косої риски.

[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;

0

Я щойно написав крихітний сценарій Python, який перетворює контури стилю Unix у формат шляху Wine.

Завантажте zip , витягніть wine-launcher.py у свою домашню папку та відредагуйте .desktop-файл таким чином:

Exec=python ~/wine-launcher.py "program.exe" %F
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.