私は実際に2つの質問をしたいです:
デスクトップファイル(%U、%u、%f ...など)のExecエントリで使用可能な引数/パラメーターショートカットの詳細はどこにありますか
主な質問は、ワインアプリケーションの.desktopランチャーで引数としてファイルを渡す方法ですか?
ここでこの提案を検索しました:z:%f
これは役に立たない、ファイルを渡さずに単に.desktopファイルを実行するように、引数がz:
であると想定し、z:
"drive"のスキャンを開始する
例:
[Desktop Entry]
Name=Some Windows program
Exec=wine "program.exe" z:%f
Type=Application
Terminal=false
MimeType=application/docbook+xml
このワインアプリケーションのカスタム.desktopランチャーにXMLファイルをドロップしたいので、この方法でできます。問題は、このプログラムを呼び出すためにランチャーアイコンをクリックすると、引数z:
が常に渡され、それが受け入れられないことです。
これは私がこれまでのところできることです(メモ帳の例)
[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
私は初心者だと考えてより良い答えを期待しています
最初の質問については、 デスクトップエントリ仕様-Exec
キー をご覧ください。
このスレッドには多くのハック的なソリューションが投稿されました。これは、複数のファイルとファイル名のスペースを扱う、はるかに優れたソリューションです。
通常どおり.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オプションで使用されるwinepathからxargsへのパイプを持つExec行は、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'"
ゼータの答えの改善。これは、プログラムに複数のファイルを渡すために機能します。 %fは%F(大文字)に変更され、ドロップされたすべてのファイルが渡されます。^(行の先頭)を十分なパス名で置き換えて、一意になる可能性が高くなり、末尾の 'g' sedコマンドを使用して、渡されたすべてのファイルに対して置換を繰り返し、最後に/の代わりに$を使用するため、\エスケープ文字は不要です。
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/
これは、試行錯誤を重ねてデスクトップエントリ仕様を読んだ後、RHEL 6.3ボックスで私のために働いた方法です。引数付きのwineに固有のものではありませんが、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;
UnixスタイルのパスをWineパス形式に変換する小さな Pythonスクリプト を作成しました。
Zip をダウンロードし、wine-launcher.pyをホームフォルダーに抽出し、次のように.desktopファイルを編集します。
Exec=python ~/wine-launcher.py "program.exe" %F