You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell的openBrowser打开Gimp而非浏览器,如何调整使其打开浏览器?

解决Haskell程序用浏览器打开SVG文件的问题

你遇到的问题是openBrowser调用系统默认程序打开SVG时启动了Gimp,而图形文件管理器双击能正常用浏览器打开。这是因为终端环境下的MIME类型关联和图形会话规则不一致,或是openBrowser的调用方式未触发正确的关联逻辑,可通过以下方法解决:

方法一:直接指定浏览器命令打开

放弃依赖openBrowser,直接调用系统浏览器的命令打开SVG文件,确保用浏览器启动:

首先添加导入:

import System.Process (callCommand)

修改main函数:

main = do
  TLIO.writeFile "test.svg" $ renderText $ svg contents
  callCommand "firefox test.svg"  -- 可替换为chromium、chrome等你系统中已安装的浏览器

方法二:传递file://协议的完整URL给openBrowser

部分程序对本地路径的处理逻辑和图形环境不同,传递file://开头的完整URL可触发正确的关联:

先导入模块获取当前工作目录:

import System.Directory (getCurrentDirectory)

修改main函数:

main = do
  TLIO.writeFile "test.svg" $ renderText $ svg contents
  cwd <- getCurrentDirectory
  let fileUrl = "file://" ++ cwd ++ "/test.svg"
  openBrowser fileUrl >>= print

方法三:修正终端环境的MIME类型关联

检查终端下SVG文件的默认关联程序,若被设为Gimp则修改为浏览器:

在终端执行命令查看当前关联:

xdg-mime query default image/svg+xml

若输出为Gimp对应的.desktop文件(如gimp.desktop),执行以下命令修改为浏览器:

xdg-mime default firefox.desktop image/svg+xml  -- 替换为你常用浏览器的.desktop文件名

修改后重新运行Haskell程序,openBrowser就会用浏览器打开SVG文件。

内容的提问来源于stack exchange,提问作者Jogger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:20:36