【已解决】ubuntu22.04LTS 下附件文件夹内图片无法渲染(使用 deb 包)

遇到的问题

Ubuntu 22下 最新版的ob,svg文件不显示,链接不显示,在目录下直接打开svg文件也不显示,显示一个找不到图片的地方小图。
感觉少了什么库吧?求教!
Windows下都是好的!

遇到的问题

版本:Obsidian 1.2.8 (snap)
系统:Ubuntu22.04LTS with gnome
问题:只有将附件默认存放路径选项选为仓库根目录“”才能成功渲染图片,选择其他选项,如我在win上常用的"当前文件所在文件夹下指定的子文件夹中"等选项都不可以
使用的内部链接为相对笔记文件的相对链接,禁用wiki链接
猜想:是否需要给予Obsidian 某些文件夹的访问权限?因为在vscode中这些.md笔记文件仍然无法渲染对应路径图片

Hi, 又碰见你了,linux版本的确实有问题,就等他们看下怎么修复了 :joy: :joy:
顺便附上链接,如果问题解决了,并且后面的人有需要:

哈哈你好你好,我现在已经算是因噎废食了,一级文件夹全改成英文了,反正也不用什么特别花里胡哨的功能 :rofl:

尴尬,反正确实是个bug,而且只有英文才行,discord那边有大佬跟我说
" 1. ctrl + shift + i 打開開發者模式,找到該 html 元素,再寫 css snippet 覆蓋他”

我觉得太复杂了,大不了咱还有拼音,哈哈哈

在此处总结有关此问题的信息:

1.论坛里有一些类似的问题提交。 您可以通过关注此问题来节省时间:Linux: Images and PDFs don't load if vault contains accented letters such as é (non english, non ascii, cjk, Umlauts) - #21 by Thibaultmol - Bug reports - Obsidian Forum

我使用的是 Ubuntu 22.04LTS。 虽然我确实将所有设置更改为 en_US.UTF-8,但它对我不起作用。 而我是Ubuntu的新手,所以我将所有文件夹名称更改为英文以避免这个问题。

  1. 此问题是由Electron 框架bug 引起的。 我们必须等待 Electron 团队先修复它。 您可能想通过此链接关注状态:[Bug]: Linux: In french locale, crash on access of user-selected file with accent in filename · Issue #34812 · electron/electron · GitHub

2023 年 5 月 25 日更新

快速修复:使用 deb 包而不是 snap 版本,图片可以正常在非英语路径下加载了

1 个赞

遇到的问题

ubuntu安装的obsidian v1.3.5中,如果插入图片文件名中包含中文,则无法正确显示。
请问是否有谁遇到过这个问题,如何解决的?谢谢

是这样的,太令人惊讶了,也许中文论坛应当同时提供deb包的镜像资源而不是只有snap和flatpack

使用的 Arch Linux 遇到同样的问题。
将语言环境设置加到桌面配置里就解决了。

我使用的 hyprland,编辑~/.config/hypr/hyprland.conf
添加:

# 强制继承 UTF-8 环境变量
env = LANG,en_US.UTF-8
env = LC_ALL,en_US.UTF-8

或者加到终端的环境变量里用终端启动也测试成功了。

echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc

感谢!ubuntu24也有这个问题,按照你的方法解决了 :+1:

大家好,

我开发了一个 Obsidian 插件专门解决这个问题:Linux Image Rendering Fix

问题根源

正如帖子中提到的,这是 Electron/Chromium 的 upstream bug。app:// 协议无法解析包含非 ASCII 字符(中文、俄文、表情符号等)的路径。加上某些 Linux 的 Electron 构建(尤其是 Snap 和 Flatpak)缺少图片编解码器(PNG、JPEG、WebP)。这个问题从 Obsidian v1.0.0 开始已经存在了三年,至今未在应用层面修复。

我的插件如何修复

插件通过 MarkdownPostProcessor 拦截 Markdown 渲染,找到每个 <img> 元素,使用 vault.adapter.readBinary() 直接从磁盘读取图片文件的二进制数据,然后用 Blob URL(blob:...)替换原来的 src。这样就完全绕过了有问题的 app:// 协议,也不依赖 Electron 的编解码器。

特点

  • 自动处理 — 打开页面、切换标签页、修改文件时自动替换图片
  • 支持格式: PNG、JPEG、GIF、WebP、SVG、BMP、ICO
  • Reprocess Images 命令 — 手动刷新当前视图
  • 安全设计 — 只在 vault 内工作,零网络请求
  • 零配置 — 安装即用

安装

Settings → Community Plugins → Browse → 搜索 Linux Image Rendering Fix → Install → Enable

仓库: GitHub | GitLab

许可证: LGPL-3.0,完全免费开源。

已在 Ubuntu 24.04(DEB 包)上测试通过。其他发行版(Pop!_OS、Linux Mint、Fedora、Arch 等)和包格式(Snap、Flatpak、AppImage)同样适用 — 因为根因是 Electron 的上游 bug,与具体发行版无关。

相比其他 workaround 的优势

  • 不需要把文件夹改成英文名
  • 不需要设置 LANG/LC_ALL 环境变量
  • 不需要切换安装方式(Snap → DEB)
  • 一个插件,全部解决

欢迎试用和反馈!有问题可以在 GitHub/GitLab 提 issue。:pray: