Giter Site home page Giter Site logo

neovide's Introduction

Neovide Discord Chat on Matrix Discussions

This is a simple graphical user interface for Neovim (an aggressively refactored and updated Vim editor). Where possible there are some graphical improvements, but functionally it should act like the terminal UI.

Basic Screen Cap

I've been using this as my daily driver since November 2019. It should be relatively stable, but I'm still working out some kinks and ironing out some cross platform issues. In general it should be usable at this point, and if it isn't I consider that a bug and appreciate a report in the issues! Any help and ideas are also greatly appreciated.

I'm also very interested in suggestions code quality/style wise when it comes to Rust. I'm pretty new to the language and appreciate any critiques that you might have to offer. I won't take all of them, but I promise to consider anything you might have to offer.

Features

Should be a standard fully featured Neovim GUI. Beyond that there are some visual niceties:

Ligatures

Supports ligatures and font shaping.

Ligatures

Animated Cursor

Cursor animates into position with a smear effect to improve tracking of cursor position.

Animated Cursor

Smooth Scrolling

Scroll operations on buffers in neovim will be animated smoothly pixel wise rather than line by line at a time. Note, multigrid must be enabled for this to work. https://github.com/neovide/neovide/wiki/Configuration#multigrid

Smooth Scrolling

Animated Windows

Windows animate into position when they are moved making it easier to see how layout changes happen. Note, multigrid must be enabled for this to work. https://github.com/neovide/neovide/wiki/Configuration#multigrid

Animated Windows

Blurred Floating Windows

The backgrounds of floating windows are blurred improving the visual separation between foreground and background from built in window transparency. Note, multigrid must be enabled for this to work. https://github.com/neovide/neovide/wiki/Configuration#multigrid

Blurred Floating Windows

Emoji Support

Font fallback supports rendering of emoji not contained in the configured font.

Emoji

WSL Support

Neovide supports displaying a full gui window from inside wsl via the --wsl command argument. Communication is passed via standard io into the wsl copy of neovim providing identical experience similar to visual studio code's remote editing https://code.visualstudio.com/docs/remote/remote-overview.

Remote TCP Support

Neovide supports connecting to a remote instance of Neovim over a TCP socket via the --remote-tcp command argument. This would allow you to run Neovim on a remote machine and use the GUI on your local machine, connecting over the network.

Launch Neovim as a TCP server (on port 6666) by running:

nvim --headless --listen localhost:6666

And then connect to it using:

/path/to/neovide --remote-tcp=localhost:6666

By specifying to listen on localhost, you only allow connections from your local computer. If you are actually doing this over a network you will want to use SSH port forwarding for security, and then connect as before.

ssh -L 6666:localhost:6666 ip.of.other.machine nvim --headless --listen localhost:6666

Finally, if you would like to leave the neovim server running, close the neovide application window instead of issuing a :q command.

Some Nonsense ;)

let g:neovide_cursor_vfx_mode = "railgun"

Railgun

More to Come

I've got more ideas for simple unobtrusive improvements. More to come.

Configuration

Configuration is done almost completely via global neovide variables in your vim config and can be manipulated live at runtime. Details can be found here.

Note: Neovide requires that a font be set in init.vim otherwise errors might be encountered. See #527

Install

Note: Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have support for Windows, Mac, and Linux. On Windows this should be enabled by default if you have a relatively recent system.

Note: Neovide requires neovim version 0.6 or greater. See previous releases such as 0.5.0 if your distro is too slow with updating.

From binary

Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have support for Windows, Mac, and Linux. The rendering is based on opengl, so a good gpu driver will be necessary. On Windows this should be enabled by default if you have a relatively recent system.

Installing should be as simple as downloading the binary, making sure nvim.exe with version 0.4 or greater is on your path, and running it. Everything should be self contained.

Windows

Package manager

Scoop has Neovide in the extras bucket. Ensure you have the extras bucket, and install:

$ scoop bucket list
main
extras
$ scoop install neovide

From source

  1. Install the latest version of Rust. I recommend https://rustup.rs/

  2. Install CMake. I use chocolatey: choco install cmake --installargs '"ADD_CMAKE_TO_PATH=System"' -y

  3. Install LLVM. I use chocolatey: choco install llvm -y

  4. Ensure graphics libraries are up to date.

  5. Build and install Neovide:

    git clone https://github.com/neovide/neovide
    cd neovide
    cargo build --release
  6. Copy ./target/release/neovide.exe to a known location and enjoy.

Mac

Package manager

Neovide is available as Cask in Homebrew. It can be installed from the command line:

brew install --cask neovide

From source

  1. Install the latest version of Rust. Using homebrew: brew install rustup-init
  2. Configure rust by running rustup-init
  3. Install CMake. Using homebrew: brew install cmake
  4. git clone https://github.com/neovide/neovide
  5. cd neovide
  6. cargo build --release
  7. Copy ./target/release/neovide to a known location and enjoy.
  8. cargo install cargo-bundle
  9. cargo bundle --release
  10. Copy ./target/release/bundle/osx/neovide.app to ~/Applications and enjoy.

Linux

Arch Linux

Stable releases are packaged in the community repository.

pacman -S neovide

To run a development version you can build from the VCS package in the AUR. This can be built and installed using an AUR helper or by hand in the usual way. To build from a non-default branch you can edit the PKGBUILD and add #branch-name to the end of the source URL.

With Snap

Neovide is also available in the Snap Store. You can install it using the command below.

snap install neovide

Get it from the Snap Store

From source

  1. Install necessary dependencies (adjust for your preferred package manager)

    sudo apt install -y curl \
        gnupg ca-certificates git \
        gcc-multilib g++-multilib cmake libssl-dev pkg-config \
        libfreetype6-dev libasound2-dev libexpat1-dev libxcb-composite0-dev \
        libbz2-dev libsndio-dev freeglut3-dev libxmu-dev libxi-dev libfontconfig1-dev
  2. Install Rust

    curl --proto '=https' --tlsv1.2 -sSf "https://sh.rustup.rs" | sh
  3. Clone the repository

    git clone "https://github.com/neovide/neovide"
  4. Build

    cd neovide && ~/.cargo/bin/cargo build --release
  5. Copy ./target/release/neovide to a known location and enjoy.

Troubleshooting

  • Neovide requires that a font be set in init.vim otherwise errors might be encountered. This can be fixed by adding set guifont=Your\ Font\ Name:h15 in init.vim file. Reference issue #527.
  • If you installed neovim via Apple Silicon (M1)-based brew, you have to add the brew prefix to $PATH to run Neovide.app in GUI. Please see the homebrew documentation. Reference issue #1242

Linux-specific

  • If you recieve errors complaining about DRI3 settings, please reference issue #44.

neovide's People

Contributors

benjamin-davies avatar dineshkumar777 avatar exoticus avatar fredizzimo avatar j4qfrost avatar jonvaldes avatar jsosulski avatar keithsim-msft avatar kethku avatar killthemule avatar last-partizan avatar lf- avatar loipesmas avatar lucas-miranda avatar luisholanda avatar meribold avatar multisamplednight avatar nganhkhoa avatar p00f avatar pawlowskialex avatar pushqrdx avatar rahuliyer95 avatar rmichelsen avatar sergioribera avatar shaunsingh avatar sman908 avatar smolck avatar timb87 avatar vzex avatar zoomlogo avatar

Watchers

 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.