From d0d10bf1f3d361ec33e1650942ad16de9d2201b8 Mon Sep 17 00:00:00 2001 From: Jannik Buhr <17450586+jmbuhr@users.noreply.github.com> Date: Wed, 12 Oct 2022 23:35:01 +0200 Subject: [PATCH] detect linux os (#29) * detect linux os and open via obsidan command on path * use xdg-open to open obsidian uri * Update lua/obsidian/command.lua Co-authored-by: Pete * Small refactor Co-authored-by: Pete --- CHANGELOG.md | 4 ++++ lua/obsidian/command.lua | 23 +++++++++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b65dc97..bfc4897c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 It's now more readable. - Removed save on write for `:ObsidianNew` and `:ObsidianToday` ([#32](https://github.com/epwalsh/obsidian.nvim/pull/32)). +### Fixed + +- `:ObsidianOpen` now works on Linux. + ## [v1.4.0](https://github.com/epwalsh/obsidian.nvim/releases/tag/v1.4.0) - 2022-10-11 ### Added diff --git a/lua/obsidian/command.lua b/lua/obsidian/command.lua index e78a0a7a..eeaae3b4 100644 --- a/lua/obsidian/command.lua +++ b/lua/obsidian/command.lua @@ -90,13 +90,24 @@ command.open = function(client, data) local encoded_vault = util.urlencode(vault_name) local encoded_path = util.urlencode(tostring(path)) - - local app = "/Applications/Obsidian.app" - if Path:new(app):exists() then - local cmd = ("open -a %s --background 'obsidian://open?vault=%s&file=%s'"):format(app, encoded_vault, encoded_path) - os.execute(cmd) + local cmd = nil + local sysname = vim.loop.os_uname().sysname + if sysname == "Linux" then + cmd = ("xdg-open 'obsidian://open?vault=%s&file=%s'"):format(encoded_vault, encoded_path) + elseif sysname == "Darwin" then + cmd = ("open -a /Applications/Obsidian.app --background 'obsidian://open?vault=%s&file=%s'"):format( + encoded_vault, + encoded_path + ) else - echo.err "could not detect Obsidian application" + echo.err "open command does not support this OS yet" + end + + if cmd ~= nil then + local return_code = os.execute(cmd) + if return_code > 0 then + echo.err "failed opening Obsidian app to note" + end end end