.desktopファイルの「Path」変数を、デスクトップファイルが配置されている場所に相対するように設定するにはどうすればよいですか?


11

デスクトップファイルが置かれている場所を基準にして.desktopファイルに「パス」変数を​​設定したいのですが、どうにかできません。

宣言しないか、空白に設定しないと、どこから実行しても、ホームフォルダーがデフォルトになります。ファイルシステム内の現在の場所に関連する値を受け入れません。


この問題が発生しました。回避策を見つけましたが、何をしているのかによっては根本的に複雑になることもあります。現時点で回避策を使用していますか?そうでない場合、私はそれを助けることができるかもしれません。私はこれについて多くを説明するxdgドキュメントを見つけていません。
bambuntu

OPまだ答えを探していますか?その場合は、閉鎖のマークが付いているため、質問を再投稿する必要があります。よろしく、
リングテール

回答:


3

.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。これにより、同じスクリプトを使用して、そのディレクトリで起動するプログラムをラップできます。


14

Execでインラインbashミニスクリプトを使用すると、これを回避できます。これにより、コマンドを実行する前に、.desktopファイルのパスがPATHに追加されます。

Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"

%kは、デスクトップファイル自体のパスに置き換えられます。このdirnameコマンドは、ファイル名の部分を切り取り、ディレクトリのみを残します。PATHがこのように設定さyour_commandれると、フルパスなしで呼び出すことができます。


1
私は素早くクリックして間違ったものに投票しましたが、あなたの解決策は完璧です。
CrandellWS

1
これは、この他の質問/回答で素晴らしい仕事ができるstackoverflow.com/a/3464561/1815624
CrandellWS

2

私はこれを使用しました:

Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME'

%kは、パスを含む.desktopファイルのフルネームです。次に、dirnameによって使用され、場所を取得し、その場所にディレクトリを変更します。最後に、適切な場所に配置されたので、スクリプトを見つけて実行します。


0

名前にスペースが含まれるディレクトリ名の場合、これは最終的にうまくいきました:

Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k

/unix//a/144428/61349へのクレジット


0

これは私にとってはうまくいったUbuntu 14.04:

Exec=bash -c "cd %k && ./app.run"

最新の仕様では、%kはデスクトップファイルの場所を指していると書かれています。

%k-URI(たとえばvfolderシステムから取得した場合)またはローカルファイル名としてのデスクトップファイルの場所、または場所が不明の場合は空。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.