Когда файл открывается приложением, файл просто передается приложению в качестве аргумента.
Таким образом, когда вы открываете firefox -nightly , расположенный в /bin/
с p.html
, расположенным в /home/user/
, это в основном похоже на запуск /bin/firefox-nightly /home/user/p.html
.
Как упоминалось в вопросе:
So far I have made a small GUI program with Ruby and made it executable and tried to open foo.txt with my program (I used the Nemo file manager).
Давайте создадим программу на Ruby по запросу OP, которая будет копировать содержимое файла, переданного в качестве аргумента, в /tmp/tempfile-#{n}
. Обратите внимание, что любой язык программирования будет работать, если он может принимать аргументы командной строки.
#!/usr/bin/env ruby
# Errors
ERR_NO_FILE = 2
FILE = $*[0]
begin
tempfile, counter = File.join(%W(/ tmp tempfile)), 0
tempfile.replace(File.join(%W(/ tmp tempfile-#{counter += 1}))) while File.exist?(tempfile)
IO.write(tempfile, IO.read(FILE))
rescue Errno::ENOENT
exit!(ERR_NO_FILE)
rescue Interrupt, SystemExit, SignalException
exit!(0)
rescue Exception
abort($!.backtrace.join(?\n))
end if FILE
И давайте назовем нашу программу copycat.rb и переместим ее в каталог /tmp/.
Мы наверняка сможем запустить программу на таком терминале:
/tmp/copycat.rb /tmp/AFile
Это скопирует все содержимое /tmp/AFile
в /tmp/tempfile-#{n}
. Где #{n}
— это счетчик на случай существования дублирующегося временного файла.
Теперь, чтобы открыть это с помощью нашей программы из файлового менеджера, нам нужно создать запись приложения. Для этого у нас есть 2 варианта. первый вариант:
Создайте файл с именем copycat.desktop в $HOME/.local/share/applications
со следующим содержимым:
[Desktop Entry]
Version=1.0
Type=Application
Name=CopyCat
Comment=Copy the contents of a file to /tmp/tempfile#{n}
Exec=/tmp/copycat.rb %u
Icon=edit-copy
Path=
Terminal=false
StartupNotify=false
Actions=
Categories=Copy;Utility
Не забудьте добавить опцию %u
к строке, начинающейся с Exec.
Что ж, для проверки давайте создадим простой файл с именем «hello world» или с чем угодно. Откройте файловый менеджер, нажмите вторую кнопку мыши на файле и выберите «Открыть с помощью» или аналогичный вариант. Поскольку это связано с графическим интерфейсом, я добавлю несколько примеров изображений.
Nautilus, «Открыть с помощью другого приложения»:
Наутилус, «Просмотреть все приложения»:
«КопияКэт»:
По завершении вы увидите tempfile-#{n}
, созданный в/tmp/
Файловый менеджер, который я здесь использовал, называется Nautilus.но это должно работать и с другими файловыми менеджерами, просто текст может отличаться.
Второй вариант — , чтобы сделать приложение доступным для всех пользователей. Для этого вам нужно переместить файл из $HOME/.local/share/applications/copycat.desktop
в /usr/share/applications
и сменить владельца на root.
Вот как работает в Linux открытие с помощью пользовательского исполняемого файла. Аналогичное приложение с графическим интерфейсом можно создать и открыть таким же образом.