neovide / neovide

No Nonsense Neovim Client in Rust
https://neovide.dev
MIT License
12.95k stars 526 forks source link

Transparency Settings Not Working as Expected in Neovide 0.12.1 (invisible selection) #2304

Closed D00mch closed 9 months ago

D00mch commented 9 months ago

Describe the bug

In previous versions of Neovide with multigrid off by default, setting the entire Neovide window to be transparent worked correctly. The cursorcolumn, cursorline, and selection were visible. Here's how I set up transparency:

vim.g.neovide_transparency = 0
vim.g.transparency = 0.88
vim.g.neovide_background_color = ("#0f1117" .. string.format("%x", math.floor(((255 * vim.g.transparency) or 0.8))))

However, in Neovide 0.12.1, the cursorcolumn, cursorline, and selection become invisible with these settings.

To Reproduce I showed the config above. Initially, this config was found on the Neovide site

Expected behavior I want the whole window to be transparent (including the toolbar), and I want the cursorcolumn, cursorline, and selection to be visible

Screenshots

No transparency, cursorcolumn, cursorline are visible

image

vim.g.neovide_transparency = 0 -> cursorcolumn, cursorline are invisible

image

Desktop (please complete the following information):

Please run neovide --log and paste the contents of the .log file created in the current directory here:

neovide_rCURRENT.log

fredizzimo commented 9 months ago

See this:

And the fix, which will soon be merged in

D00mch commented 9 months ago

Thank you! Sorry for not being able to find it. Should we close the issue to avoid duplication?

GNRSN commented 9 months ago

@fredizzimo I built from #2168 but it did not fix this issue? The new background blur on main looks great though!

As I understand it, vim.g.neovide_transparency at 0 just removes all backgrounds? This results in features that use backgrounds, e.g. cursorline, vim-illuminate, selection in menus, serach result highlights, virtual cursor in UI plugins like Noice, being invisible/unusable.

Or is there some other way to achieve transparent background (as bg = nil does in a terminal) without loosing all backgrounds? AFAIK pumblend and winblend effects floats only?

Looking at a terminal like Alactritty, they have a boolean option for if transparency applies to all backgrounds or only the default color

fredizzimo commented 9 months ago

@GNRSN, can you open a new issue for full transparency? I'm going to close this issue, since the original use case with a value of 0.88 should work fine.

But to give a quick answer, we really need more support from Neovim

But we could add an option to only apply the transparency to the background colors with the Normal highlight group, or bg=background, essentially the ones that ends up using the default background in the UI protocol https://neovim.io/doc/user/ui.html#ui-event-hl_attr_define. That might work for some limited use cases and work almost like the terminal.

There's also guibg=none, but the UI protocol abstracts it away, and says:

For absent color keys the default color should be used But, since it maps to the background color, it would still be transparent with the new option set.But it does not behave the same way as blend=100, like one would expect.