LINUX.ORG.RU

А научите готовить nvim-qt, пожалуйста

 , ,


0

1

Всем здравствуйте.

Долго пользовался neovide, пытаюсь освоить nvim-qt.

До сих пор в ~/.config/nvim/init.lua был примерно такой фрагмент для настройки разных GUI (сильно не бейте, Lua читаю со словарём, поэтому пока местами Vimscript):

if vim.fn.has("gui_running") == 1 then
	if vim.g.fvim_loaded then
		vim.cmd([[
			if g:fvim_os == 'windows' || g:fvim_render_scale > 1.0
				set guifont=Courier\ New:h16
			else
				set guifont=Courier\ New:h32
			endif

			nnoremap <silent> <C-ScrollWheelUp> :set guifont=+<CR>
			nnoremap <silent> <C-ScrollWheelDown> :set guifont=-<CR>
			nnoremap <A-CR> :FVimToggleFullScreen<CR>
		]])

		vim.opt.clipboard = "unnamedplus"
	elseif vim.g.gui_dotnvim then
		-- https://github.com/dontpanic92/dotnvim
		vim.opt.guifont = "Courier New:h12"
	elseif vim.g.neoray then
		vim.opt.guifont = "Courier New:h12"
		vim.cmd([[
			NeoraySet CursorAnimTime 0.08
			NeoraySet Transparency   0.95
			NeoraySet TargetTPS      120
			NeoraySet ContextMenu    TRUE
			NeoraySet BoxDrawing     TRUE
			NeoraySet ImageViewer    TRUE
			NeoraySet WindowSize     100x40
			NeoraySet WindowState    centered
			NeoraySet KeyFullscreen  <M-CR>
			NeoraySet KeyZoomIn      <C-ScrollWheelUp>
			NeoraySet KeyZoomOut     <C-ScrollWheelDown>
		]])
	elseif vim.g.neovide then
		vim.opt.guifont = "Courier New:h12:#e-alias"
	elseif vim.g.nvui then
		vim.opt.guifont = "Courier New:h12"
		vim.cmd([[
			nnoremap <A-CR> :NvuiToggleFullscreen<CR>
		]])
	elseif vim.g.nvy then
		vim.opt.guifont = "Courier New:h12"
	end
end

Оказалось, что, в случае nvim-qt, в эту логику внедриться нельзя: nvim-qt не читает ни init.lua, ни ginit.lua – и приходится держать рядом отдельный ginit.vim специально для данного фронтэнда. Без перспектив однажды переписать всё на Lua.

Nvim 0.7.2 (у меня лапки Debian), Nvim-qt 0.2.16.

ЧЯДНТ?

★★★★★

Последнее исправление: Bass (всего исправлений: 2)

у меня лапки Debian

Поставь пакет от разработчиков, буквально в соседнем от основного репозитория лежит. Плагины для Nvim слишком быстро развиваются, даже для debian testing.

Чем не подошёл neovide?

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)

Оказалось, что, в случае nvim-qt, в эту логику внедриться нельзя: nvim-qt не читает ни init.lua, ни ginit.lua – и приходится держать рядом отдельный ginit.vim специально для данного фронтэнда. Без перспектив однажды переписать всё на Lua.

ЧЯДНТ?

https://github.com/equalsraf/neovim-qt/issues/1128 - тут показан костыльный прием от мейнтейнера nvim-qt.

Но в целом суть такова что nvim-qt - это древнючий проект, запиленный кажется сразу или почти сразу после ответвления neovim от vim, и там не собираются переписывать легаси.

Lrrr ★★★★★
()
Ответ на: комментарий от Bass

Я про nvim. С neovide я обленился и взял appimage, хотя по нормальному надо было собрать через cargo deb.

Nvim тут: https://github.com/neovim/neovim-releases/releases

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Ответ на: комментарий от einhander

Чем не подошёл neovide?

Вот теперь могу аргументированно ответить. Neovide требует наличия OpenGL и потому не работает ни с Xvnc, ни с Cygwin/X, ни с VcXsrv, ни с Xming.

Причём зачастую это сопровождается невразумительными сообщениями вида:

2025-11-07 10:37:36 - Neovide panicked with the message 'called `Option::unwrap()` on a `None` value'. (File: src/renderer/opengl.rs; Line: 248, Column: 28)
   0: <unknown>
   1: <unknown>
   2: <unknown>
   3: <unknown>
   4: <unknown>
   5: <unknown>
   6: <unknown>
   7: <unknown>
   8: <unknown>
   9: <unknown>
  10: <unknown>
  11: <unknown>
  12: <unknown>
  13: <unknown>
  14: <unknown>
  15: <unknown>
  16: __libc_start_call_main
             at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  17: __libc_start_main_impl
             at ./csu/../csu/libc-start.c:360:3
  18: <unknown>

А вот nvim-qt как раз работает.

Bass ★★★★★
() автор топика
Ответ на: комментарий от Bass

У меня под WSL neovide запускался, правда, в рендеринге были какие-то косяки. Впрочем, запустил его лишь пару раз, на прошлой работе выдали ноут с вендой, сначала думал работать на нём в WSL, но потом оказалось, что по многим причинам проще уволиться, чем мучиться.

Chiffchaff
()
Ответ на: комментарий от einhander

Наверное, уже умеет.

Но здесь несколько аргументов:

  1. Собственный X11-сервер и Wayland-композитор появились в Windows несколько позже, чем WSL.

  2. Мне не очень нравится идея держать постоянно работающей дополнительную («приватную») виртуальную машину Hyper-V только для того, чтобы я изредка имел возможность «отрисовать окошко». Это перерасход ресурсов.

  3. Наконец, мне нравится контролировать то, что я использую. Cygwin/X и аналоги легко настраиваются — это просто сборки того же самого Xorg, но под другую платформу. Изучать, как именно настраивается майкрософтовское поделие, какие пакеты летают по какому RDP-протоколу, как это «поженить» с X11 forwarding в PuTTY — мне лень.

Кроме того, я за сегодня уже разобрался, как именно запускать под WSL программы, требующие современного OpenGL:

  1. Любая поддержка OpenGL на стороне X-сервера должна быть выключена (ключ -nowgl).

  2. На стороне клиента должен использоваться direct rendering context (LIBGL_ALWAYS_INDIRECT=0).

  3. На стороне клиента должна быть включена чисто программная отрисовка через llvmpipe (LIBGL_ALWAYS_SOFTWARE=1).

В этом случае прекрасно работают не только Neovide, но и другие программы, требующие OpenGL >= 3.x (Kitty, WezTerm,..).

Bass ★★★★★
() автор топика