Giter Club home page Giter Club logo

gnvim's Introduction

GNvim Logo

GNvim - Rich Neovim GUI without any web bloat

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!

Logo

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 libwebkit2gtk-4.0-dev
$ # Run (unoptimized version) without installing
$ GNVIM_RUNTIME_PATH=/path/to/gnvim/runtime cargo run
$ # Install
$ make && sudo make install

macOS (without webkit2gtk)

Webkit2gtk isn't really available for macOS. GNvim is available without said dependency, but such builds won't have the cursor tooltip feature.

To install all dependencies and build without webkit2gtk (gtk+3 required for building, librsvg is a runtime dependency for showing LSP icons in completion):

$ brew install gtk+3 librsvg
$ make NOWEBKIT2GTK=1
$ # or with cargo
$ cargo build --no-default-features

Features

  • No electron (!), build on GTK.
  • Ligatures
  • Custom cursor tooltip feature to display markdown documents. Useful for implementing features like hover information or signature help (see gnvim-lsp).
  • 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.

Requirements

GNvim requires

  • Stable rust to compile
  • Latest nvim master (gnvim 0.1.0 works with nvim 0.3.4)
  • Gtk version 3.18 or higher

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

$ sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev

For other systems, see requirements listed by gtk-rs project here. Note that you'll need the libwebkit2gtk-4.0-dev package too.

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.

Install

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.

Running

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.

gnvim's People

Contributors

vhakulinen avatar smolck avatar badosu avatar gabmus avatar agraven avatar bfredl avatar thematt avatar teto avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.