Как передать файл в качестве аргумента в файл .desktop для приложения Wine

Я действительно хочу задать два вопроса:

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

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

Я нашел здесь поиск предложение: 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 для этого приложения Wine, и я могу это сделать. Проблема в том, что если я нажимаю на значок запуска, чтобы вызвать эту программу, аргумент z: всегда передается ей, и это не приемлемо

10
задан 11 December 2011 в 02:59

7 ответов

В этой теме было много хакерских решений. Вот гораздо лучшее решение, которое работает с несколькими файлами и пробелами в именах файлов.

Создайте файл .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\")"
    
0
ответ дан 11 December 2011 в 02:59

По первому вопросу вы можете взглянуть на Desktop Entry Specification - клавиша Exec

.
0
ответ дан 11 December 2011 в 02:59

Я только что написал крошечный Python-скрипт , который конвертирует пути в стиле Unix в формат Wine path.

Загрузите zip , распакуйте wine-launcher.py в вашу домашнюю папку и отредактируйте файл .desktop следующим образом:

Exec=python ~/wine-launcher.py "program.exe" %F
0
ответ дан 11 December 2011 в 02:59

Линия Exec с каналом winepath для 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
ответ дан 11 December 2011 в 02:59

Это лучшее, что я могу пока (пример Блокнота)

[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

Я ожидаю лучших ответов, учитывая, что я новичок

0
ответ дан 11 December 2011 в 02:59

Улучшение ответа Зетов. Это работает для передачи нескольких файлов в программу. % 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/
0
ответ дан 11 December 2011 в 02:59

Именно так у меня и работал на 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
ответ дан 11 December 2011 в 02:59

Другие вопросы по тегам:

Похожие вопросы: