Как работает опция "открыть с помощью" при нажатии правой кнопки мыши в большинстве графических интерфейсов Linux?

Я пытался сделать программу, которая живет в /usr/bin, и в настоящее время он отлично работает с терминала (потому что каждый учебник для начинающих учит вас, как использовать команды терминала), но он не работает, когда я пытаюсь запустить его из файлового менеджера.

Я хочу знать, какую команду / данные / все, что отправляет Nautilus/Caja/Dolphin/PCManFM, когда файл дважды щелкается или щелкается правой кнопкой мыши и выбирается опция "Открыть с помощью", и какая программа в любом язык должен был бы сделать, чтобы получить путь к файлу, которым он должен манипулировать из этого. Единственный язык, на котором я знаю, как это сделать - это скрипт BASH, а синтаксис BASH не позволяет мне искать информацию о том, что делает мой код.

Этот предмет в целом очень трудно найти, поэтому я буду признателен за любую информацию о нем.

РЕДАКТИРОВАТЬ: уточнить, когда я нажимаю здесь:

изображение контекстного меню

Какие данные отправляются в программу "bleh", и как она должна использовать эти данные?

Мне не нужно повторять это...

2 ответа

Ваше приложение должно поставляться с файлом.desktop, и эти файлы размещаются в стандартном месте.

Смотрите спецификацию здесь: http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html и некоторые пояснения здесь: http://library.gnome.org/admin/system-admin-guide/stable/mimetypes-registering.html.en

Что особенно важно, чтобы ответить на ваш вопрос - это раздел "Регистрация типов MIME".

Хорошо, я понял это сам.

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

Моя проблема была вызвана тем, что моя программа пыталась работать с двумя разными целями одновременно: имя файла, отправленное ему файловым менеджером, и мой (нерелевантный) домашний каталог. Я сам указал новый целевой каталог, и теперь он работает нормально.

РЕДАКТИРОВАТЬ: Это может быть характерно для TCL. Если это так, то я прошу прощения за размещение этого вопроса.

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