Как изменить рабочий каталог при открытии файла двойным щелчком на рабочем столе Ubuntu?

Хотел открыть файл (файл .pdb: структура белка, неважно) двойным щелчком мыши.

«Открыть с помощью» вручную направляют на выполнение «pymol» (программы, открывающей формат .pdb) с помощью Ubuntu Tweak.

Однако я обнаружил, что рабочий каталог - это $ HOME.

Как и другие файлы в , каталог, который я открыл, файл имеет решающее значение, и я хочу получить к ним доступ.

Я полагаю, что «pymol» выполняется в $ HOME, а абсолютный путь к «pdb file» (файлу с двойным щелчком) передается в качестве аргумента.

Я полагаю, что это довольно общая проблема, и задаю вопрос:

Как разрешить системе изменить «рабочий каталог» на каталог «где Я щелкнул файл « и выполнить программу?

9
задан 2 March 2013 в 00:36

5 ответов

Вы можете перейти к /usr/share/applications и найти правильный file.desktop, который вызывается всякий раз, когда вы открываете файл определенного типа. Затем отредактируйте его и в строке exec добавьте cd PATH && в начало строки.

0
ответ дан 2 March 2013 в 00:36

Хотя это годы спустя, вот что сработало для меня:

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

% k дает вам путь к каталогу только что запущенного модуля запуска.

0
ответ дан 2 March 2013 в 00:36

Я не понимаю, почему решение там так upvoted, это делает абсолютную другую вещь. Это изменяет рабочий каталог на тех, где .desktop файл, в то время как вопрос собирался изменить рабочий каталог на тех, которые имеют открытый файл (файлы).

Мое решение:

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

Примите во внимание, что установка огибающих переменных для .desktop файлов отличается, как так

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'
1
ответ дан 2 March 2013 в 00:36

Ни одно из вышеприведенных решений не работало на моем 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;

Надеюсь, это поможет вам, ребята: -)

0
ответ дан 2 March 2013 в 00:36

OK -

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

у меня не сработало, поскольку PATH не определен, чтобы указывать на путь% F. Единственные переменные, доступные в любом файле рабочего стола приложения:

  • % f одно имя файла.
  • % F несколько имен файлов.
  • % u один URL.
  • % U несколько URL.
  • % d один каталог. Используется вместе с% f для поиска файла.
  • % D несколько каталогов. Используется вместе с% F для поиска файлов.
  • % n одно имя файла без пути.
  • % N несколько имен файлов без путей.
  • % k 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 из командной строки после первого перехода в каталог, где находятся ваши файлы, но я думаю, что вам нужно решение с графическим интерфейсом, поэтому вам нужно немного отредактировать: -)

0
ответ дан 2 March 2013 в 00:36

Другие вопросы по тегам:

Похожие вопросы: