我正在尝试打开一个未知类型的文件 (Pokemon Gold.gbc)。我双击它并收到消息“无法显示‘/home/josh/Downloads/Pokemon ROMS/Pokemon Gold.gbc’。该文件属于未知类型。”我单击“选择应用程序”,然后单击“显示其他应用程序”。但是,并非所有应用程序都列在那里,我想要的应用程序 (VBA-M [软件包名称 vbam-gtk]) 也没有列出。我怎样才能让所有已安装的应用程序都显示在此菜单中,这样我就不必从所需程序打开文件,只需在 nautilus 中双击文件即可启动它?
更新:我发现该应用程序可以从
/usr/bin/vbam
或来自
/usr/share/applications/VBA-M
或命令行:
gvbam
其他详细信息:我从 Sourceforge 获得的 .deb 文件安装了此包,而不是从存储库安装(存储库中的 GameBoy 模拟器不令人满意)。
那么至少有一种方法可以让我选择可执行文件来打开未知文件吗?
更新 2:
我尝试了下面第一个答案中的所有方法,但都无济于事。作为临时解决方案,我将文件扩展名从 .gbc 更改为 .gb,到目前为止一切似乎都运行良好。但是,我不想保持这种状态,因为我不知道这是否会导致任何问题。
答案1
解决方案:
在终端中运行gedit ~/.local/share/applications/mimeapps.list
。在打开的文本文档中,在“[Added Associates]”下方添加一行application/octet-stream=gvbam.desktop;
,该行应位于顶部。这应该会强制使用 VBA-M 打开 .gbc 文件(Ubuntu 将其识别为八位字节流)。
您还必须按照以下步骤告诉 VBA-M 在启动时加载 rom:
- 在终端中运行
gksudo gedit /usr/share/applications/gvbam.desktop
- 在打开的文件中,替换
Exec=gvbam
为Exec=gvbam %U
接下来,您需要sudo update-desktop-database
在终端中运行以“应用”编辑。
当您在右键菜单中单击“使用其他应用程序打开...”,然后单击“显示其他应用程序”时,VBA-M 现在应该在列表中,并且游戏应该可以正确打开。
如果文件未被识别为 GameBoy Color Rom 或无法打开,请重命名扩展名。例如,如果扩展名是“.gbc”(即 GameBoy Color),则将其重命名为“.gb”(即 GameBoy)应该会使其被识别为 GameBoy Rom。
我如何得出结论
在终端中运行gksudo gedit /usr/share/applications/gvbam.desktop
。在“Exec=gvbam”行中,%U
随后添加。因此,最后整行应该是Exec=gvbam %U
。
虽然这做过将 VBA-M 添加到“其他应用程序”列表中(这样我就可以将 VBA-M 设置为 .gbc 的默认程序),游戏实际上并没有运行;事实上,VBA-M 窗口完全无法显示在任何地方。我认为这是因为 VBA-M 目前的工作方式;在终端中,我运行了gvbam "Pokemon Gold.gbc"
,结果抛出了以下错误:
The program 'gvbam' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
(Details: serial 474 error_code 11 request_code 154 minor_code 3)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
为了进一步测试,我下载了另一个 rom,并选择塞尔达传说:众神的三角力量。已经按照上述说明将 VBA-M 添加到应用程序列表中,我将其选为 Zelda 游戏的默认文件,这是一个 .gba 文件;游戏加载正常。我注意到在文件的属性中,.gbc 的类型是unknown (application/octet-stream)
,而 .gba 的类型是Game Boy Advance ROM (application/x-gba-rom)
;显然,GameBoy Color roms 关联中缺少其他东西,而 GameBoy Advance roms 中没有缺少这些东西。
我尝试将其添加gbc
为关联文件类型application/octet-stream
,这似乎解决了 .gbc 文件无法打开的问题。但是,我随后将其删除,并再次尝试打开 .gbc,它仍然有效;我不确定我做了什么,但现在它可以正常工作了。
原始答案
这篇文章得到了点赞,既然有人认为这篇文章很好,我就把它留在这里,供其他关心的人参考。话虽如此,上面的信息可能与问题更相关。
首先,您必须确保文件扩展名的 MIME 类型尚不存在。打开终端并输入:
grep 'gbc' /etc/mime.types
如果没有输出,或者给出的输出不包含您的扩展,则必须添加 MIME 类型。
在终端中,通过运行 打开 mime.types 文件gksudo gedit /etc/mime.types
。在此文件中,将以下行添加到“application”部分:
应用程序/gbc gbc
两个 gbc 之间应该有额外的空格 - 只需确保将第二个 gbc 与其他扩展对齐即可。我会展示,但我不确定如何在 askubuntu 上做到这一点。
资料来源: