github github
star 1416
alert-circle 33
open issues
users 20
git-branch 61



2 hours ago

Build Status Gitter

GNvim, Neovim GUI aiming for rich code editing experience without any unnecessary web bloat.

GNvim has been my daily driver since August 2018. I try to add new features as I find time for it, and any help is welcome!

For more screenshots, see the wiki.

TL;DR to get started on Ubuntu 18.04 after cloning this repo and assuming you have rust tool chain installed:

$ sudo apt install libgtk-3-dev
$ # Run (unoptimized version) without installing
$ GNVIM_RUNTIME_PATH=/path/to/gnvim/runtime cargo run
$ # Install
$ make && sudo make install


$ brew install rust gtk+3 librsvg
$ # Install
$ make && sudo make install


  • No electron (!), build on GTK.
  • Ligatures
  • Animated cursor
  • Animated scrolling
  • A lot of the nvim external features implemented
    • Popupmenu
      • Own view for preview (:h completeopt).
    • Tabline
    • Cmdline
    • Wildmenu

More externalized features will follow as they are implemented for neovim.


GNvim requires

  • Stable rust to compile
  • Latest nvim release or master
  • Gtk version 3.20 or higher

On some systems, Gtk packages doesn't include development files. On Ubuntu, you'll need the following ones:

$ sudo apt install libgtk-3-dev

For other systems, see requirements listed by gtk-rs project here.

There are some benchmarks for internal data structures, but to run those you'll need nightly rust. To run those benchmarks, use cargo bench --features=unstable command.


You're required to have rust tool chain available. Once you have that, clone this repo and run make build followed by sudo make install.


TL;DR: Without installing:

GNVIM_RUNTIME_PATH=/path/to/gnvim/runtime cargo run

GNvim requires some runtime files to be present and loaded by Neovim to work properly. By default, GNvim will look for these files in /usr/local/share/gnvim/runtime, but this can be changed by specifying the GNVIM_RUNTIME_PATH environment variable.

GNvim will use nvim to run Neovim by default. If you want to change that, you can use --nvim flag (e.g. gnvim --nvim=/path/to/nvim).

For debugging purposes, there is --print-nvim-cmd flag to tell GNvim to print the executed nvim command.

See gnvim --help for all the cli arguments.