デスクトップファイルが置かれている場所を基準にして.desktopファイルに「パス」変数を設定したいのですが、どうにかできません。
宣言しないか、空白に設定しないと、どこから実行しても、ホームフォルダーがデフォルトになります。ファイルシステム内の現在の場所に関連する値を受け入れません。
デスクトップファイルが置かれている場所を基準にして.desktopファイルに「パス」変数を設定したいのですが、どうにかできません。
宣言しないか、空白に設定しないと、どこから実行しても、ホームフォルダーがデフォルトになります。ファイルシステム内の現在の場所に関連する値を受け入れません。
回答:
.desktopファイル内にCWDを設定することはできません。アプリケーションに特定のCWDを持たせたい場合、次のようなシンプルなラッパースクリプトをアプリケーションに記述する必要があります。
#!/bin/sh
(cd /where/you/want/it/to/be && exec your_program)
あなたは置き換えることができますyour_program
とそこ$@
と同じように、引数としてyour_programでスクリプトを実行しますrun-in-dir.sh your_program
。これにより、同じスクリプトを使用して、そのディレクトリで起動するプログラムをラップできます。
Execでインラインbashミニスクリプトを使用すると、これを回避できます。これにより、コマンドを実行する前に、.desktopファイルのパスがPATHに追加されます。
Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"
%kは、デスクトップファイル自体のパスに置き換えられます。このdirname
コマンドは、ファイル名の部分を切り取り、ディレクトリのみを残します。PATHがこのように設定さyour_command
れると、フルパスなしで呼び出すことができます。
名前にスペースが含まれるディレクトリ名の場合、これは最終的にうまくいきました:
Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k
/unix//a/144428/61349へのクレジット