Ubuntuのデスクトップをダブルクリックしてファイルを開くときに作業ディレクトリを変更するにはどうすればよいですか?


10

ダブルクリックでファイル(.pdbファイル:タンパク質構造形式、問題ありません)を開きたい。

「open with」は、Ubuntu Tweakで「pymol」(。pdb形式を開くプログラム)を手動で実行するように指示されています。

ただし、作業ディレクトリ$ HOMEであることがわかりました

私がファイルを開いたディレクトリのファイルは重要なので、それらにアクセスしたいのです。

"pymol"は$ HOMEで実行され、 "pdbファイル"(ダブルクリックされたファイル)の絶対パスが引数として渡されると思います。

これはやや一般的な問題だと思い、質問します。

「作業ディレクトリ」「ファイルをクリックしたディレクトリ」に変更してプログラムを実行するにはどうすればよいですか。

回答:


16

これは数年後ですが、ここで私のために働いたものです:

Exec=bash -c 'cd "%k" && ~/path/to/your/file'

%kは、起動したばかりのランチャーのディレクトリのパスを提供します。


1
%kは機能しませんでした(または%dも)が、bash -cパーツが必要でした
Marc Van Daele 2016

1
間接的にお役に立てて嬉しいです。~正しく定義するには、bash -cの部分が必要です。直接/ home / marcパスを使用する場合、bash -cは必要ありません。
TuxForLife 2016

1
bash -cは仕事をしました。:)
Muthu '28

2
%kは、デスクトップファイルを含む完全なパスに解決されるため、機能しcd "%k"ません。しかし、あなたは使うことができますcd "$(dirname %k)"
ivant 2016

私は混乱しています。なぜ「%k」を使用してディレクトリに移動し、直後のコマンド&&が関連する何かを実行しているの~ですか?
vdegenne

5

上記の解決策はどれも私のdebianでは機能しませんでした。また%d、非推奨です。デスクトップエントリの仕様を参照してください。

したがって、私は次のbashスクリプトを使用してpymolを実行しています。まず、次のbashスクリプトファイルを作成して、に保存する必要があります/usr/local/bin/run_pymol.sh。HOMEディレクトリなどがわからない/usr/localのでファイルを保存しxdg-openました。

#!/usr/bin/env bash
# change working directory
cd `dirname $1`
# run pymol
/usr/bin/env pymol $@

次に、そのファイルに実行権限を与えます。ターミナルを開き、次のコマンドを入力して許可を与え、確認します。

% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh

最後に、pymol.desktopファイルを次のように変更すると、pymolは最初に指定されたファイルが配置されているディレクトリで起動します。

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=PyMOL Molecular Graphics System
GenericName=Molecular Modeller
Comment=Model molecular structures and produce high-quality images of them
Type=Application
Exec=/usr/local/bin/run_pymol.sh %U
TryExec=pymol
Icon=pymol
MimeType=chemical/x-pdb
Categories=Education;Science;Chemistry;

それが皆さんのお役に立てば幸いです:-)


3
私は置くことができPath=/my/path、それはうまくいきました。Path - If entry is of type Application, the working directory to run the program in.
Ripster、2015年

2

なぜそこまでの解決策がそれほど賛成されたのか理解できません。作業ディレクトリを.desktopファイルがあるディレクトリに変更しますが、問題は、作業ディレクトリをファイルが開いているディレクトリに変更することです。

私の解決策:

Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'

.desktopファイルの環境変数の設定は、次のように異なることに注意してください。

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'

0

特定のファイルタイプを開くたびに呼び出される/usr/share/applications適切な場所に移動して見つけることができfile.desktopます。次に、それを編集して、execcd PATH &&の先頭に追加します。


-1

OK -

Exec=cd PATH &&  <application-name> %F

PATHが%Fのパスを指すように定義されていないため、私にとってはうまくいきませんでした。アプリケーションのデスクトップファイルで使用できる変数は次のとおりです。

  • %fa単一のファイル名。
  • %F複数のファイル名。
  • %ua単一URL。
  • %U複数のURL。
  • %da単一ディレクトリ。%fと組み合わせて使用​​して、ファイルを見つけます。
  • %D複数のディレクトリ。%Fと組み合わせて使用​​して、ファイルを検索します。
  • %naパスのない単一のファイル名。
  • %Nパスのない複数のファイル名。
  • %ka URIまたはデスクトップファイルの場所のローカルファイル名。
  • %vデバイスエントリの名前。

あります:%dは、複数のディレクトリに変更しても意味がないため、探している単一のディレクトリです。/ usr / share / applicationsに移動して、ファイルapplication-name.desktop(あなたの場合はpymol.desktop)を編集します。そのためにはスーパーユーザー権限が必要です。次に、「Exec =」で始まる行を見つけます。たぶん

Exec=<application-name> %F

(あなたの場合、Exec = pymol%F)。この行を

Exec=cd %d && <application-name> %F

そのデスクトップファイルを保存します。次に.pdbファイルをクリックしたとき、作業ディレクトリはこの.pdbファイルがあるディレクトリである必要があります。これにより、pymolはそこにあるすべてのファイルを見ることができます。

もちろん、最初にファイルがあるディレクトリに移動した後、コマンドラインからpymolを起動することもできますが、GUIソリューションが必要だったので、少し編集する必要があります:-)

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