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