双击ubuntu桌面打开文件时如何更改工作目录?


10

想要通过双击打开文件(.pdb文件:蛋白质结构格式,没关系)。

手动将“打开方式”定向为使用Ubuntu Tweak执行“ pymol”(打开.pdb格式的程序)。

但是,我发现工作目录$ HOME。

由于我打开目录中的其他文件,因此我要访问它们至关重要。

我猜想“ pymol”是在$ HOME上执行的,而“ pdb文件”(双击文件)的绝对路径是作为参数传递的。

我猜这是一个普遍的问题,并提出一个问题:

我怎样才能让系统更改“工作目录”“目录,我点击文件”和执行程序?

Answers:


16

尽管这是几年后的事,但这对我有用:

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

%k提供您刚启动的启动器目录的路径。


1
%k无效(也没有%d),但我确实需要bash -c部分
Marc Van Daele

1
很高兴我可以间接帮助您。您需要bash -c部分来~正确定义。如果使用直接的/ home / marc路径,则不需要bash -c。
TuxForLife

1
bash -c完成了这项工作。非常感谢我:)
Muthu

2
%k解析为完整路径,包括桌面文件,因此cd "%k"将无法使用。但是你可以使用cd "$(dirname %k)"
ivant

我很困惑,为什么您使用“%k”进入目录,然后&&执行的命令相对于~
vdegenne

5

以上解决方案均不适用于我的debian。也%d已弃用。请参阅桌面条目规范

因此,我正在使用以下bash脚本运行pymol。首先,您需要创建以下bash脚本文件并将其保存在中/usr/local/bin/run_pymol.sh。我将文件保存在其中,/usr/local因为似乎xdg-open无法理解HOME目录是什么,等等。

#!/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

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的名称。然后对其进行编辑,然后在该exec行中将其添加cd PATH &&到该行的开头。


-1

好 -

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

对我不起作用,因为PATH未定义为指向%F的路径。任何应用程序桌面文件中唯一可用的变量是:

  • %fa个文件名。
  • %F个文件名。
  • %ua个网址。
  • %U个网址。
  • %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解决方案,因此您必须进行一些编辑:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.