我有一个名为foo.txt
. 我想将我自己的程序与 mime 类型相关联,.txt
以便我的程序打开一个终端并将其内容显示foo.txt
为标准输出。我更喜欢 Ruby,但 BASH 脚本也可以。
一个工作示例:我可以使用firefox
. 我想txt
用我自己的可执行文件以同样的方式打开文件。
我不知道我怎样才能真正让它工作?
示例 2:我可以.txt
使用 Geany/Mousepad/Atom/Code 等打开文件。假设我制作了一个类似鼠标垫的工具。我的程序应该如何处理.txt
mimetype?
到目前为止,我已经用 Ruby 制作了一个小型 GUI 程序并使其可执行并尝试foo.txt
用我的程序打开(我使用了 Nemo 文件管理器)。我已经在我的 Ruby 程序中捕获了参数和标准输入,因此它会显示参数和标准输入(如果有)。但是如果我.txt
用它打开文件,我的程序甚至不会显示窗口!
我应该如何实现结果?
介绍
当使用应用程序打开文件时,该文件只是作为参数传递给应用程序。
所以当你打开firefox-nightly
/bin/
和位于p.html
时/home/user/
,它与运行基本相似/bin/firefox-nightly /home/user/p.html
。创建可执行文件
如问题中所述:
让我们按照 OP 的要求创建一个 Ruby 程序,它将作为参数传递的文件的内容复制到
/tmp/tempfile-#{n}
. 请注意,如果可以接受命令行参数,任何编程语言都可以工作。让我们调用我们的程序copycat.rb,并将其移动到 /tmp/ 目录。
我们当然可以在这样的终端上运行程序:
如果存在任何重复的临时文件,这会将所有内容复制
/tmp/AFile
到计数在/tmp/tempfile-#{n}
哪里。#{n}
创建应用程序条目
现在要从文件管理器中使用我们的程序打开它,我们需要创建一个应用程序条目。为此,我们有 2 个选项。第一个选项是:
在 中创建一个名为 copycat.desktop 的文件
$HOME/.local/share/applications
,内容如下:不要忘记将
%u
选项添加到以 Exec 开头的行。测试
好吧,为了测试,让我们创建一个名为“hello world”或任何您想要的内容的简单文件。打开文件管理器,然后单击文件上的辅助鼠标按钮,然后选择“打开方式”或类似选项。因为是 GUI 相关的,所以我会添加一些示例图片。
Nautilus,“使用其他应用程序打开”:
Nautilus,“查看所有应用程序”:
“山寨”:
完成后,您可以看到
tempfile-#{n}
创建的/tmp/
我在这里使用的文件管理器是 Nautilus,但这也适用于其他文件管理器,只是文本可能不同。
第二个选项是使应用程序可供所有用户使用。为此,您必须将文件从
$HOME/.local/share/applications/copycat.desktop
to移动/usr/share/applications
并将所有权更改为 root。这就是在 Linux 中使用自定义可执行文件打开的方式。可以以相同的方式创建和打开类似的 GUI 应用程序。
简约,但经过测试。
您可以从第一个 xterm 调用此脚本。不要看
case-esac
,但要注意xterm
和-e
& 符号。