fix: use vault+file URI format for Obsidian, more reliable than path=

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-02 11:57:47 +02:00
parent fe8b8bb125
commit 1cfb9c127b
+6 -1
View File
@@ -239,7 +239,12 @@ async def open_file(body: dict, user: dict = Depends(current_user)):
dest = os.path.join(vault, os.path.basename(p))
shutil.copy2(p, dest)
open_target = os.path.join(vault, os.path.basename(all_paths[0]))
uri = f"obsidian://open?path={quote(open_target, safe='/')}"
vault_name = os.path.basename(vault.rstrip("/")) if vault else ""
file_name = os.path.basename(open_target)
if vault_name:
uri = f"obsidian://open?vault={quote(vault_name)}&file={quote(file_name)}"
else:
uri = f"obsidian://open?path={quote(open_target, safe='/')}"
obsidian_bin = shutil.which("obsidian") or "/usr/bin/obsidian"
subprocess.Popen([obsidian_bin, uri])
elif mode == "folder" and shutil.which("dolphin"):