Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trouble with the magick rock #18

Closed
benlubas opened this issue Sep 16, 2023 · 42 comments
Closed

Trouble with the magick rock #18

benlubas opened this issue Sep 16, 2023 · 42 comments

Comments

@benlubas
Copy link
Contributor

benlubas commented Sep 16, 2023

I'm on MacOS on apple silicon (unsure if that's relevant)

I've installed the magick rock with luarocks --local --lua-version 5.1 install magick

I added

package.path = package.path .. ";" .. vim.fn.expand("$HOME") .. "/.luarocks/share/lua/5.1/?/init.lua;"
package.path = package.path .. ";" .. vim.fn.expand("$HOME") .. "/.luarocks/share/lua/5.1/?.lua;"

to my nvim/init.lua file, and I've checked that the magick folder exists at ~/.luarocks/share/lua/5.1/magick

However, I don't have anything other than the magick/ folder in the ~/.luarocks/share/lua/5.1/ directory. This concerns me b/c it seems from the package.path code above that there should be a lua file there (but I have no idea).

I have ImageMagic via brew, the which magick => /opt/homebrew/bin/magick

Despite all of this, I still get this error when I launch nvim:

Error detected while processing /Users/benlubas/github/.dotfiles/nvim/init.lua:
image.nvim: magick rock not found, please install it and restart your editor

I've also tried with both nvim 9.2, and the latest nightly. same error.
I've also tried the minimial-setup.lua file in this repo.

@benlubas
Copy link
Contributor Author

I have this working on PopOS. So must be a missing dependency on the Mac side.

@3rd
Copy link
Owner

3rd commented Sep 18, 2023

I think it's ok, the files should only be in ~/.luarocks/share/lua/5.1/magick.
I'm not sure what's happening on mac, can you try to load the magick rock in Lua outside of Neovim?

@benlubas
Copy link
Contributor Author

This works when I just run it with luajit:

package.path = package.path .. ";" .. "/Users/benlubas/.luarocks/share/lua/5.1/?/init.lua"
package.path = package.path .. ";" .. "/Users/benlubas/.luarocks/share/lua/5.1/?.lua"

local ok, err = pcall(require, "magick")

if ok then
  print("that worked")
else
  print("that failed")
end

@benlubas
Copy link
Contributor Author

after looking at this more, the real error is .luarocks/share/lua/5.1/magick/wand/lib.lua:220: Failed to load ImageMagick (MagickWand)

Which is still only happening in NeoVim. I don't get that when I run the thing with luajit

@benlubas
Copy link
Contributor Author

Problem is definitely something do with homebrew installing it somewhere unexpected.

@benlubas
Copy link
Contributor Author

benlubas commented Sep 19, 2023

Edit: using this solution might break when homebrew updates/moves things around. For a more permanent fix, see solutions at the bottom of the thread

So the exact command that someone else might run to fix it might vary. But this is the one that I used:

sudo ln -sv /opt/homebrew/Cellar/imagemagick/7.1.1-15_1/lib/libMagickWand-7.Q16HDRI.dylib /usr/local/lib/libMagickWand-7.Q16HDRI.dylib

You just need to link the libMagick dylib file that your neovim is looking for to a spot nvim can find it.
The way that I found this file was by going into the magick rock and adding some print statements.

I hope that helps someone in the future.

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 8, 2023

Hi @benlubas, since you mentioned having this working on pop-os, which I'm also running, may I ask if there where any major steps to make it work?
I can't see to get this to work. The individual pieces should be in place. The kitty image kitten displays images, the imagemagick luarock is found and image.nvim successfully uses it to create a cropped version of the image in the /tmp folder, from which it can indeed be displayed manually outside of nvim with the image kitten, but image.nvim doesn't show anything.

PS: I'm excited about what you are doing with molten-nvim! Looks like it will complement quarto-nvim immensly! Asking if you can show code results and plots directly under the cells is probably the question I get the most.

@benlubas
Copy link
Contributor Author

benlubas commented Oct 8, 2023

It sounds like you have the dependencies all setup, so I wouldn't worry about that.

what does your config look like, and what file are you opening to try to see an image?

@jmbuhr

PS: You can send those people to Molten starting in a day or two. I just finished up a PR that makes the last set of breaking changes that I wanted to make, going to merge it after a day or two of driving it to make sure I didn't break the whole thing :P

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

I tried it as part of my quarto-nvim-kickstarter config and with the minimal setup: https://github.com/3rd/image.nvim?tab=readme-ov-file#try-it-out-with-a-minimal-setup

@benlubas
Copy link
Contributor Author

benlubas commented Oct 9, 2023

Did you add the quarto file type to the file type list for the markdown integration if you're opening a quarto document. Because that's not a supported file type out of the box with the minimal config.

@3rd
Copy link
Owner

3rd commented Oct 9, 2023

Should we enable it by default?

@benlubas
Copy link
Contributor Author

benlubas commented Oct 9, 2023

Eh, I'm more in favor of just letting people know they can enable it so it's clear that they can add any filetype that uses the markdown parser, not just the ones that we list.

But I that's not a strong opinion

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

I did, but the minimal example is plain markdown anyways.

@benlubas
Copy link
Contributor Author

benlubas commented Oct 9, 2023

I guess one other quick thing to check, sometimes I have to make an edit to the file to get an image to show up in markdown. Like pressing o<esc> above the image, just to move the image link down a line.

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

sorry to hijack this thread, btw.

starting kitty from the terminal itself shows the following errors when opening the minimal example:

$ kitty --config /dev/null 
[282 18:12:19.795825] [PARSE ERROR] Malformed GraphicsCommand control block, invalid key character: 0x55
[282 18:12:19.795837] [PARSE ERROR] Unsupported screen mode:  2026 (private)
...

image

The same png displays fine with kitty +kitten icat, as shown in the terminal below.

@benlubas
Copy link
Contributor Author

benlubas commented Oct 9, 2023

what kitty version are you on? 0x55 is U which is the command for unicode placeholder which was introduced in version 28 I think

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

0.21.2

@benlubas
Copy link
Contributor Author

benlubas commented Oct 9, 2023

Update, latest is 30.x lol

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

That works indeed! I had assumed that you were also on the latest version from the pop-os apt repo, which is 0.21.

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

Thanks! :) Exciting times for terminal data science!

@benlubas
Copy link
Contributor Author

benlubas commented Oct 9, 2023

Great! Glad that worked. I put up a PR to add this requirement to the readme as I wasn't aware of it either

@jmbuhr
Copy link
Contributor

jmbuhr commented Oct 9, 2023

Uh, it also works in Wezterm out of that box, since that supports the kitty graphics protocoll!

@benlubas
Copy link
Contributor Author

I'll refer you to this comment.

#23 (comment)

As much as I want to use wezterm, I had a much worse experience with it. That said, I haven't tried it in a while, so maybe it works better now?

@ad-chaos
Copy link

adding export DYLD_LIBRARY_PATH=/opt/homebrew/lib/ to .zshrc also solves the problem

@phcerdan
Copy link

phcerdan commented Oct 26, 2023

I had imagemagick installed in a non default location ($HOME/.local). I solved this adding

export PKG_CONFIG_PATH="$HOME/.local/lib/pkgconfig:$PKG_CONFIG_PATH"

I found this error because I see a lua error when opening vim in a corner, bad formatted, saying that couldn't find ImageMagick.pc.
I wonder if image.nvim could capture these lua errors and show them properly in :messages. Or in a :checkhealth.

This was referenced Nov 15, 2023
@ray-x
Copy link

ray-x commented Nov 27, 2023

For anyone using fish/zsh+kitty under MacOS

eval "$(luarocks path --bin)"   # you can also add LUA_PATH based on your own setup
set -gx DYLD_LIBRARY_PATH /opt/homebrew/lib  # you should see libMagickxxxx lib files in this folder

@3rd 3rd pinned this issue Nov 27, 2023
@MichaelC001
Copy link

after looking at this more, the real error is .luarocks/share/lua/5.1/magick/wand/lib.lua:220: Failed to load ImageMagick (MagickWand)

I tried run lib.lua. get these error messages

image

@neuromaancer
Copy link

I tried literally everything above, but it still doesn't work.

@3rd
Copy link
Owner

3rd commented Nov 29, 2023

@neuromaancer what's your Neovim version?
do you have a working Neovim + luarocks setup?

@neuromaancer
Copy link

Mine is the stable version of nvim (0.9.4) and the lastest version of luarocks (3.9.2), but I used luarocks --local --lua-version 5.1 install magick to install magick.

@3rd
Copy link
Owner

3rd commented Nov 30, 2023

version should be ok, other people seem to have it working on mac #91 (comment)
can your nvim load any luarock? maybe there's something weird going on with package.path

@neuromaancer
Copy link

Yeah, actually, it didn't load the magick, but I tried to symlink the lib mentioned by @benlubas

@exploitJ
Copy link

exploitJ commented Dec 2, 2023

I've installed pkg-config via homebrew and now it works.

@isvicy
Copy link

isvicy commented Dec 9, 2023

I've installed pkg-config via homebrew and now it works.

this works for me.

@spicyzboss
Copy link

set DYLD_LIBRARY_PATH to "(brew --prefix)/lib" that solved the issue for me

@eo1989
Copy link

eo1989 commented Jan 26, 2024

Has anyone managed to get image.nvim to run with linuxbrew via wsl2? Tried the export DYLD_LIBRARY_PATH without success. Have magick installed via luarocks and homebrew (imagemagick), via luarocks I went ahead and installed the same version into the local and system scope (tried to cover all the bases in case I missed something). Plugin still shows ascii/gibberish when neo-tree previews a png, or molten/quarto try to run a visual. nvim nightly, kitty 0.32.0, ubuntu 20.04.3 LTS Jammy.

@3rd
Copy link
Owner

3rd commented Jan 28, 2024

@eo1989 does this help? #93 (reply in thread)

@eo1989
Copy link

eo1989 commented Jan 29, 2024

No unfortunately it makes no difference.

@liyiyuian
Copy link

liyiyuian commented Jan 30, 2024

set DYLD_LIBRARY_PATH to "(brew --prefix)/lib" that solved the issue for me

This one works for me. Just for people who might have the same setup to mine.

  • MacOS 14.2.1 (M3 Max)
  • NVIM v0.9.5
  • Lua@5.1 (installed with brew)
  • luarocks (installed with brew)
  • magick is installed with `luarocks --local --lua-version=5.1 install magick

Actually, I have tried everything above, and still not able to get the image. But after trying everything, Neovim is able to load the magick.

@lampnis
Copy link

lampnis commented Sep 3, 2024

Edit: using this solution might break when homebrew updates/moves things around. For a more permanent fix, see solutions at the bottom of the thread

So the exact command that someone else might run to fix it might vary. But this is the one that I used:

sudo ln -sv /opt/homebrew/Cellar/imagemagick/7.1.1-15_1/lib/libMagickWand-7.Q16HDRI.dylib /usr/local/lib/libMagickWand-7.Q16HDRI.dylib

You just need to link the libMagick dylib file that your neovim is looking for to a spot nvim can find it. The way that I found this file was by going into the magick rock and adding some print statements.

I hope that helps someone in the future.

This linking trick worked like a charm. Beforehand needed to install rock using 5.1 argument for lua version. I was doing this on WSL kali linux distribution.

@dlyongemallo
Copy link

I encountered the "magick rock not found" error on Ubuntu 24.04 (noble). I had previously gotten this plugin working on Ubuntu 22.04 (jammy), by explicitly setting $PKG_CONFIG_PATH, but this stopped working when I did a release upgrade to 24.04. Anyone else encounter this?

@3rd
Copy link
Owner

3rd commented Nov 2, 2024

Hello, added a new processor configuration option now that defaults to magick_rock, but also supports magick_cli for a rock-free version. Please try it out if you can, looking for feedback on whether it should become the default.
Should be extend with other image processors?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests