Seu*_*ong 11 desktop-environments .desktop
想通过双击打开一个文件(.pdb 文件:蛋白质结构格式,没关系)。
“打开方式”被手动引导以使用 Ubuntu Tweak 执行“pymol”(一个打开 .pdb 格式的程序)。
但是,我发现工作目录是$HOME。
由于目录中的其他文件我打开文件至关重要,我想访问它们。
我猜“pymol”是在 $HOME 上执行的,而“pdb 文件”(双击文件)的绝对路径作为参数传递。
我想这是有点普遍的问题并提出一个问题:
我怎样才能让系统更改“工作目录”的“目录,我点击文件”和执行程序?
Tux*_*ife 19
尽管这是多年后的事,但这对我有用:
Exec=bash -c 'cd "%k" && ~/path/to/your/file'
Run Code Online (Sandbox Code Playgroud)
%k为您提供刚刚启动的启动器目录的路径。
小智 6
上述解决方案都不适用于我的 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 $@
Run Code Online (Sandbox Code Playgroud)
其次,赋予该文件可执行权限。打开终端并键入以下命令以授予权限并进行确认。
% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh
Run Code Online (Sandbox Code Playgroud)
最后,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;
Run Code Online (Sandbox Code Playgroud)
希望对大家有帮助:-)
我不明白为什么那里的解决方案如此受欢迎,它做了完全不同的事情。它将工作目录更改为 .desktop 文件所在的目录,而问题是将工作目录更改为打开文件的目录。
我的解决方案:
Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'
Run Code Online (Sandbox Code Playgroud)
请记住,为 .desktop 文件设置环境变量是不同的,如下所示
Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'
Run Code Online (Sandbox Code Playgroud)
您可以找到打开特定文件类型时调用的/usr/share/applications正确名称。file.desktop然后编辑它并在行中exec添加cd PATH &&到行的开头。
小智 0
好的 -
Exec=cd PATH && <application-name> %F
Run Code Online (Sandbox Code Playgroud)
对我来说不起作用,因为 PATH 未定义为指向 %F 的路径。任何应用程序桌面文件中唯一可用的变量是:
就是这样:%d 是您要查找的单个目录,因为更改为多个目录是没有意义的。因此,转到 /usr/share/applications 并编辑文件 application-name.desktop (在您的情况下为 pymol.desktop);您必须具有超级用户权限才能执行此操作。然后找到以“Exec=”开头的行。大概是这样写的
Exec=<application-name> %F
Run Code Online (Sandbox Code Playgroud)
(在你的情况下 Exec=pymol %F)。将此行更改为
Exec=cd %d && <application-name> %F
Run Code Online (Sandbox Code Playgroud)
保存该桌面文件,下次单击 .pdb 文件时,您的工作目录应该是该 .pdb 文件所在的目录,以便 pymol 可以看到其中的所有文件。
当然,您也可以在首先导航到文件所在的目录后从命令行启动 pymol,但我猜您想要一个 GUI 解决方案,所以您必须进行一些编辑:-)
| 归档时间: |
|
| 查看次数: |
22404 次 |
| 最近记录: |