Nvui: A NeoVim GUI written in C++ and Qt

Related tags

GUI nvui
Overview

NVUI

first

Featuring

  • Custom Titlebar (toggleable, see :h nvui-titlebar)
  • External Command Line (nvui --ext_cmdline)
  • Configurable positions, sizes, colors, border width, border color, etc.
  • For more information see :h nvui-cmdline

ext_cmdline

  • External Popup Menu (nvui --ext_popupmenu)
  • Configurable colors, background colors, icon sizes, alignment, border width, border color, etc.
  • For more information see :h nvui-popup

ext_popupmenu

  • Cross-platform Qt, DirectWrite on Windows
  • Font Fallback (see guifont in the bottom left)
  • Configurable through "set guifont"

fallback

  • External Multigrid Support (:h nvui-multigrid)
  • nvui --ext_multigrid
  • Smooth Scrolling
  • smoothscroll

  • Animated Windows
  • windows

  • Animated Cursor (no VFX... yet)
  • Customizable cursor height (see :h NvuiCaretExtendTop and :h NvuiCaretExtendBottom)
    • Ex. :NvuiCaretExtendTop 200, :NvuiCaretExtendBottom 100 (see below)

caretextend

Documentation

:h nvui (vim/doc/nvui.txt)

Comments
  • Can't trigger fcitx

    Can't trigger fcitx

    My system information

    Linux 5.13.12-arch1-1 x86_64 GNU/Linux
    

    Issue I met

    I am a Chinese user. And I used fcitx as the Chinese input method. However, I can't trigger the input panel like other neovim GUI or the TUI when I am using the nvui.

    • Normal behavior in terminal

    image

    • In nvui

      It just outputs English nor creates the fcitx input panel.

    My fcitx version:

    fcitx version: 4.2.9.7
    
    opened by Avimitin 15
  • Opening Chadtree results in an error

    Opening Chadtree results in an error

    Opening Chadtree causes this error for me

    terminate called after throwing an instance of 'msgpack::v1::insufficient_bytes'
      what():  insufficient bytes
    [1]    3544750 abort (core dumped)  
    
    opened by parascent 10
  • [feature request] built in workspace function

    [feature request] built in workspace function

    Is it possible to manage multiple nvim instances, each instance contains an individual session. This can help me jump between each project without closing or opening a new nvui window.

    I've tried mksession and some session managers. They can jump between session but I can't open a brand new workspace. I have to open file, clean up buffer and save session before I swich between those sessions. That's putting the cart before the horse.

    I've seen goneovim did it: https://github.com/akiyosi/goneovim#workspaces. Don't know if it is possible to add this feature in nvui because I really love it.

    Thanks for your contribution.

    opened by Avimitin 9
  • invisible messages

    invisible messages

    Hi, nvui should show an opening message because my vimrc contains an error. The message is invisible. To understand: this screenshot shows navi and nvim-qt side by side. https://pasteboard.co/LO3Wrz4TgOUT.png Thanks!

    opened by gattomarcomix 8
  • Rendering issues: command line renders below screen

    Rendering issues: command line renders below screen

    image

    Just off the bat, this is what nvui looks like when I open it.

    For starters, it's confused by my taskbar placement and hides the title bar behind it; this is remedied by using the Windows+Arrow keys of course.

    Secondly, the correct font is not used; it renders a non-monospaced font. I have a ginit.vim, but nvui hasn't read any of it. How do I get it to read my configuration? I know that the problem stems from not having a monospace font (#32), but I've set a monospace font in configuration.

    Speaking of setting, for some reason I can't see the status line no matter what. This means I can't see commands; they are below the window.

    https://user-images.githubusercontent.com/59306451/131559040-37f2f269-a1ae-4f9f-81fa-ef496258d0b0.mp4

    (Sorry about the recording; I just used the Powerpoint screen recorder. I captured the entirety of the nvui screen for sure.)

    Now, I can set guifont to some fallback like Consolas after I get into the gui. And I'm sure I could set the window to open to whatever position I want it (just need to figure out where to configure it, or use the terminal). However, I still wouldn't be able to see the command line. Do you have any idea why this occurs? It occurs even with init.vim and ginit.vim empty.

    I am on Windows 10, with neovim 0.5.0.

    opened by rabirabirara 8
  • Some rendering issues

    Some rendering issues

    I just tried the newest release on Windows 10. Here are some issues, I can't experiment further after that:

    • Font is broken
    • The status bar is lost
    • Is there any way I can speed up the animation? Otherwise, it's nice, looking for improvement image
    opened by finnng 8
  • frameless title bar leaves big white lines on the other screen when maximized (windows 11)

    frameless title bar leaves big white lines on the other screen when maximized (windows 11)

    snapping the app to maximize or clicking the maximize button leaves a white border on the other screen (dual monitor) when using a frameless title bar, no issues if it's disabled. white border doesn't appear if it's snapped on half the screen or quarter, only happens in maximize. also doesn't appear on nvuitogglefullscreen. hopefully could be fixed soon, this is the only customizable title bar nvim gui i could find, and i've been loving it, thank you so much for your hard work.

    opened by kurakurakantor 7
  • [WIP] Various Changes

    [WIP] Various Changes

    • Fix crash on getting completion list (#36)
    • Map Cmd key to C- key on Mac
    • Add support for Super (D-) key
    • Fix rendering issues on Mac (#70)
    • Link ext_cmdline to default colors by default
    • Fix alignment of popup menu info on ext_multigrid (workaround Neovim bug, can't be worked around without multigrid)
    • Notify user of font families that couldn't be found
    opened by rohit-px2 7
  • Stricter compiler warning policy

    Stricter compiler warning policy

    Make warnings errors in CMakeLists.txt, and then fix all the resulting errors.

    I was not able to fix the errors about unknown macros, but I'm not sure where they are coming from or what to do to fix it. Looks like it's related to cppcheck but you're not using cppcheck...

    opened by mattfbacon 7
  • crash after running an output-heavy process in the terminal

    crash after running an output-heavy process in the terminal

    When opening a terminal (using :term) and running an output-heavy application, after a while nvui crashes. The terminal where i started it from then says:

    terminate called after throwing an instance of 'msgpack::v1::insufficient_bytes'
      what():  insufficient bytes
    
    abort (core dumped)
    
    opened by Marenz 7
  • Missing Icons in Gutter

    Missing Icons in Gutter

    Hello,

    I'm trying out nvui and its been nice.

    One issue I am having is I place diagnostic glyphs in the gutter. They seem to have some trouble rendering: image

    vim.api.nvim_command('sign define DiagnosticSignError text=🄴  texthl=Error linehl= numhl=')
    vim.api.nvim_command('sign define DiagnosticSignWarn text=🅆  texthl=Warning linehl= numhl=')
    vim.api.nvim_command('sign define DiagnosticSignInfo text=🄸  texthl=Warning linehl= numhl=')
    vim.api.nvim_command('sign define DiagnosticSignHint text=🄷  texthl=Warning linehl= numhl=')
    

    The above are the configuration lines. I believe these are just UTF characters as they are rendering right here on GitHub. Any idea?

    opened by ldelossa 3
  • Wierd behaviour in Alpha dashboard

    Wierd behaviour in Alpha dashboard

    When I open nvui the alpha dashboard page at startup is not centered and I cannot immediately use my shortcut keys, it first requires any key stroke which first centres the dashboard and shows properly and then another keypress to invoke any keybinding.

    This is how it looks when it is first opened Screenshot from 2022-08-07 21-25-22

    After pressing any random key it recentres like this Screenshot from 2022-08-07 21-25-34

    And after that I am able to use any of the Neovim keybindings. This behaviour is not observed in either terminal neovim or any other GUIs. Also even after dashboard getting refreshed it still is not centred properly like in other instances.

    This is how the dashboard page is actually supposed to look at startup Screenshot from 2022-08-06 22-36-34

    System Info

    • OS: Arch Linux
    • DE: Gnome 42.3(Wayland)
    • Neovim Version: 0.7.2
    • Nvui Version: 0.2.1(Installed nvui-git from AUR)
    opened by shans10 0
  • lag on 4k display

    lag on 4k display

    Hello devs,

    I have just tried this amazing frontend for neovim and I must say, I am impressed with the quality.

    That being said, the only downside is that it is extremely laggy on a 4k display. I cand easily reproduce this by shrinking down the nvui window and it works as expected and is fast, so I know for syre the resolution is the problem.

    I have encountered this problem when trying neovide as well (see: https://github.com/neovide/neovide/issues/1299) and initially thought it was a problem related to their implementation, but now I am not so sure, because it might be something deeper than the UI. The only frontend that has fast performance for me on a 4k display up until now is nvim-qt.

    Could we maybe somehow coordinate between these three (your project, neovide and nvim-qt) to try and find a solution to this?

    opened by adriancostin6 1
  • <C-^> does not work

    does not work

    Description

    nvui reads <C-^> as <^> which is invalid in vim & neovim.

    Environment

    • Arch Linux
    • nvui latest git version (as of the time of creation of this issue)
    opened by vabenil 0
  • Not working keys

    Not working keys

    There are already some issues mentioning not working keys, so I don't want to bother too much when there is no time. Maybe it'll be good to create an issue that groups them and create an overview which helps when there is more room for it.

    #134 #143

    Another one that looks like it has problems is <. E.g., when mapping it to preserve selection while outdenting, no selection is preserved in nvui. vim.keymap.set("v", "<", "<gv", { desc = "Outdent" })

    opened by tobealive 2
Releases(v0.3.1)
  • v0.3.1(Sep 29, 2022)

    Hey guys, it's been a while. I've been busy with work and school, haven't been able to work on this project for a while. Since the last release, there are some new features:

    • Create and switch between multiple editor instances using :NvuiEditorSpawn, :NvuiEditorSwitch <index>, :NvuiEditorNext, :NvuiEditorPrev, and :NvuiEditorSelect (this opens up a dialog where you can select which editor instance you want to display. See :h nvui-instances for more details.
    • Animated cursor effects. See :h nvui-cursor for details.
    • Idling time (default: 100 seconds). Once this time has passed and you have not made any action (keyboard/mouse), animations are stopped to preserve battery. You can set this timing via :NvuiSecondsBeforeIdle, and :NvuiSecondsBeforeIdle 0 disables the idling timer.

    (Builds should appear in an hour or two)

    Source code(tar.gz)
    Source code(zip)
    nvui-linux-x64.zip(22.62 MB)
    nvui-macos-x64.zip(19.63 MB)
  • v0.2.1(Dec 2, 2021)

    • Added commands to enable/disable popup menu and command line (:NvuiPopupmenu/:NvuiCmdline)
    • Fixed cursor background on Windows
    • Fixed numpad keys being ignored
    • Pressing the close button now sends confirm qa, which lets you know if you have unsaved changes before you quit
    • Undercurl and underline now use your foreground color as the fallback so if you haven't defined a guisp for a highlight group, it will use guifg
    • Fixes for floating window ordering and flickering during scrolling
    Source code(tar.gz)
    Source code(zip)
    nvui-linux-x64.zip(24.85 MB)
    nvui-macos-x64.zip(19.52 MB)
    nvui-win64.zip(21.85 MB)
  • v0.2.0(Nov 2, 2021)

    • Fixed some bugs regarding alignment of CJK characters on Linux
    • Fixed clipping of Nerd Font icons
    • Switched to custom text decorations (undercurl now draws with a squiggly line - you can customize the color using guisp)
    • If you're using an IME, you can enable/disable/toggle it with :NvuiIMEEnable/:NvuiIMEDisable/:NvuiIMEToggle at runtime (e.g. turning off IME in command mode) - see the wiki for an example
    • File arguments are forwarded to Neovim automatically, so you can do nvui file.txt to open up a file
    Source code(tar.gz)
    Source code(zip)
    nvui-linux-x64.zip(24.84 MB)
    nvui-macos-x64.zip(19.51 MB)
    nvui-win64.zip(21.85 MB)
  • v0.1.4-v2(Oct 16, 2021)

    Changes:

    • Mouse improvements, support for double, triple, and quadruple-clicks
    • Some keyboard fixes (In particular, <S-Tab> should register now)
    • Fixed flicker on frameless window on Windows
    • :NvuiHideCursorWhileTyping v:true will hide the cursor when you type, and moving/clicking with the mouse will make it reappear
    • nvui --detached will detach the process from your terminal.

    (Last time the macos release didn't go through, this is the 2nd attempt)

    Source code(tar.gz)
    Source code(zip)
    nvui-linux-x64.zip(24.82 MB)
    nvui-macos-x64.zip(19.50 MB)
    nvui-win64.zip(21.84 MB)
  • v0.1.3(Sep 29, 2021)

    Improvements:

    • :NvuiCharspace now accepts floating-point numbers so you can change letter spacing by small margins
    • The command line will link with your color scheme by default, if you haven't set colors using :NvuiCmdBg/:NvuiCmdFg

    Changes:

    • nvui now uses the native title bar by default. You can get the custom titlebar by passing the --titlebar command-line flag (#67)

    Fixes:

    • Fixed broken rendering on Windows with non-default DPI displays (#46 #30)
    • Fixed some keys not being registered on Mac when modifiers are pressed. Note: Following Neovim-Qt, Ctrl maps to <C-, and Cmd maps to <D- (#69)
    Source code(tar.gz)
    Source code(zip)
    nvui-linux-x64.zip(24.82 MB)
    nvui-macos-x64.zip(19.47 MB)
    nvui-win64.zip(21.83 MB)
  • v0.1.2(Sep 7, 2021)

  • v0.1.1(Sep 1, 2021)

    What's new since v0.1.0

    New:

    • nvui now defaults to a monospace font when a font has not been set through set guifont (PR #33)

    Fixes:

    • Fixed a crash with error 'msgpack::v1;:insufficient_bytes' (PR #42) (Issues #41 #40 #23)
    • Fixed a crash on an assertion condition when built in Debug mode (#31)
    • Fixed compilation errors on some compilers due to a missing parameter in fmt::print (#27)
    • Fixed an error on Linux where nvui would not load the fontconfig file (#21)
    • nvui now processes the End key properly
    Source code(tar.gz)
    Source code(zip)
    nvui-linux-x64.zip(24.79 MB)
    nvui-win64.zip(21.82 MB)
Owner
Rohit Pradhan
CS 2025 @ University of Waterloo
Rohit Pradhan
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

null 95 Nov 19, 2022
A wallpaper changer using Wallhaven api. Written with C++/CLR, only 0.5 MB and have a GUI.

WHaven Wallpaper WHaven Wallpaper is a desktop wallpaper change program for change your wallpapers directly from wallhaven. Features You have a search

null 2 Aug 1, 2022
Clight GUI written in Qt.

CLight GUI Clight GUI written in Qt. Huge thanks to @FedeDP for writing Clight and Clightd, the daemons upon which this is built on.

null 62 Dec 21, 2022
ChessBurger is a modern chess GUI written by Progmaster.

ChessBurger ChessBurger is a modern chess GUI written in C++. The reason I started working on a new chess GUI, is because the GUIs out there are somew

Progmaster 1 Nov 9, 2021
Free open-source modern C++17 / C++20 framework to create console, forms (GUI like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux.

xtd Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applicat

Gammasoft 441 Jan 4, 2023
Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io

BODEN CROSS-PLATFORM FRAMEWORK Build purely native cross-platform experiences with Boden Website ⬡ Getting Started ⬡ API Reference ⬡ Guides ⬡ Twitter

Ashampoo Systems GmbH & Co KG 1.6k Dec 27, 2022
Minimalistic C++/Python GUI library for OpenGL, GLES2/3, Metal, and WebAssembly/WebGL

NanoGUI NanoGUI is a minimalistic cross-platform widget library for OpenGL 3+, GLES 2/3, and Metal. It supports automatic layout generation, stateful

Mitsuba Physically Based Renderer 1.2k Dec 28, 2022
A barebones single-header GUI library for Win32 and X11.

luigi A barebones single-header GUI library for Win32 and X11. Building example Windows Update luigi_example.c to #define UI_WINDOWS at the top of the

Nakst 235 Dec 30, 2022
super duper simple gui for C, wrapping imgui and stb

super duper simle gui for C, wrapping imgui and stb You can use it as a static library with cmake. See the example directory for a complete example. E

Rasmus 11 May 19, 2022
U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).

Ultimate++ Ultimate++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of librar

Ultimate++ 564 Jan 8, 2023
raygui is a simple and easy-to-use immediate-mode-gui library.

raygui is a simple and easy-to-use immediate-mode-gui library.

Ray 2k Dec 30, 2022
win-vind provides a lightweight hybrid UI system of CUI and GUI for Windows

win-vind provides a lightweight hybrid UI system of CUI and GUI for Windows. And everything is inspired by Vim and its plugins. Simply put, it is a Vim-oriented toy box consisting of various useful features.

pit-ray 950 Jan 4, 2023
Fast, flexible and simple GUI.

MyGUI is a cross-platform library for creating graphical user interfaces (GUIs) for games and 3D applications. Website: http://mygui.info/ There you c

null 629 Dec 29, 2022
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

About wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. wxWidgets allows y

null 4.8k Jan 7, 2023
Examples, tutorials and applications for the LVGL embedded GUI library

Examples, tutorials and applications for the LVGL embedded GUI library

LVGL 441 Nov 11, 2022
Window and GUI system based on Dear ImGui from OCornut

ImWindow Window and GUI system based on ImGui from OCornut. Include docking/floating window, multi window and multi render support. Platform Actually

Thibault Hennequin 715 Dec 20, 2022
HastyBadger is a branch of the excellent widget and GUI library Turbo Badger.

Branch Notice - HastyBadger Hasty is not Turbo. HastyBadger is a branch of the excellent widget and GUI library Turbo Badger. Notabe additions are c++

Michael Tesch 38 Nov 17, 2022
FlatUI is a immediate mode C++ GUI library for games and graphical applications.

FlatUI is a immediate mode C++ GUI library for games and graphical applications. Go to our landing page to browse our documentation.

Google 610 Dec 23, 2022
Elements C++ GUI library

Elements C++ GUI library Introduction Elements is a lightweight, fine-grained, resolution independent, modular GUI library. Elements is designed with

Cycfi Research 2.5k Dec 30, 2022