Neovide - No Nonsense Neovim Client in Rust

Overview

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/Kethku/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/Kethku/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/Kethku/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.

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.4 or greater.

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/Kethku/neovide
    cd neovide
    cargo build --release
  6. Copy ./target/release/neovide.exe to a known location and enjoy.

Mac (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/Kethku/neovide
  5. cd neovide
  6. cargo build --release
  7. Copy ./target/release/neovide to a known location and enjoy.

Linux

Arch Linux

There is an AUR package for neovide.

With Paru (or your preferred AUR helper)
paru -S neovide-git
Without helper
git clone https://aur.archlinux.org/neovide-git.git
cd neovide-git
makepkg -si

To install a non-default branch:

git clone https://aur.archlinux.org/neovide-git.git
cd neovide-git
nvim PKGBUILD
:%s/l}/l}#branch=branch-name-here/
:wq
makepkg -si

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

With non-default branch
git clone https://aur.archlinux.org/neovide-git.git
cd neovide-git
REGEX=$(printf 's/{url}/&\#branch=%s/g' '<YOUR-BRANCH-HERE>')
sed "$REGEX" PKGBUILD
makepkg -si

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/Kethku/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.

Linux-specific

  • If you recieve errors complaining about DRI3 settings, please reference issue #44.
Comments
  • doesn't start on Win10 with nvim-nightly

    doesn't start on Win10 with nvim-nightly

    Hi, I wanted to check neovide but it doesn't start for me.

    I use neovim-nightly, installed via scoop (it works ok as a standalone and embedded as a firenvim in firefox)

    NVIM v0.5.0-330-g71ee46acc
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3
    Compilation: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe /DW...ects/neovim/src -IC:/projects/nvim-deps/usr/include -IC:/projects/neovim/build/src/nvim/auto -IC:/projects/neovim/build/include
    Compiled by appveyor@APPVYR-WIN
    
    Features: -acl +iconv +tui
    See ":help feature-compile"
    
       system vimrc file: "$VIM\sysinit.vim"
      fall-back for $VIM: "C:/Program Files/nvim/share/nvim"
    
    Run :checkhealth for more info
    

    When I start neovide.exe nothing pops up, I can see a process of neovide but that is it.

    neovide1

    bug waiting 
    opened by habamax 69
  • [MacOS Catalina 10.15.3] segmentation fault in release mode

    [MacOS Catalina 10.15.3] segmentation fault in release mode

    When I run the target/release/neovide binary, I get either

    neovide(57928,0x10b64ddc0) malloc: Incorrect checksum for freed object 0x7fe99c264870: probably modified after being freed.
    Corrupt value: 0x7fe99c264550
    neovide(57928,0x10b64ddc0) malloc: *** set a breakpoint in malloc_error_break to debug
    

    or just

    [1]    58061 segmentation fault  ./neovide
    

    It works fine when I run the debug one (target/debug/neovide).

    Same happens when I use cargo run and cargo run --release.

    I believe the same issue was originally reported here https://github.com/Kethku/neovide/issues/73#issuecomment-584540091

    Tested on the latest master (67468b2).

    bug help wanted upstream 
    opened by mdudzinski 60
  • AltGr handled incorrectly

    AltGr handled incorrectly

    What I press in insert mode = what actually outputs > = < { = exits from insert mode, sometimes inserting a number first before exiting, sometimes after. Inserts a number in normal mode. } = same as above [ and ] = same as {} @ = exits insert mode into normal mode. acts as number 2 in normal mode

    Seems like the keys behind alt+gr in a finnish/swedish layout simply come out as numbers? Though > returning a < is a bigger mystery. Arch Linux, i3, fi key layout. Installed with the AUR package this time. Finnish keyboard for reference:
    http://kbdlayout.info/KBDFI/

    bug help wanted Keyboard Input 
    opened by Ninmi 59
  • Cannot enter Chinese

    Cannot enter Chinese

    Honeycam 2020-02-11 15-09-48

    os

    windows 10 1909

    version

    NVIM v0.5.0-nightly-4-g2e14dffbb Build type: RelWithDebInfo LuaJIT 2.1.0-beta3 Compilation: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe /DWIN32 /D_WINDOWS /W3 /MD /Zi /O2 /Ob1 /DNDEBUG -DMIN_LOG_LEVEL=3 /W3 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -DWIN32 -D_WIN32_WINNT=0x0600 -DINCLUDE_GENERATED_DECLARATIONS -DUTF8PROC_STATIC -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -IC:/projects/neovim/build/config -IC:/projects/neovim/src -IC:/projects/nvim-deps/usr/include -IC:/projects/neovim/build/src/nvim/auto -IC:/projects/neovim/build/include Compiled by appveyor@APPVYR-WIN

    Features: -acl +iconv +tui See ":help feature-compile"

    system vimrc file: "$VIM\sysinit.vim" fall-back for $VIM: "C:/Program Files/nvim/share/nvim"

    Run :checkhealth for more info

    bug help wanted Keyboard Input 
    opened by ssxwcz 50
  • Build does not work on Apple M1 Chip

    Build does not work on Apple M1 Chip

    $ rustup show                                                                                                                                        Mon Dec 14 13:02:49 2020
    Default host: aarch64-apple-darwin
    rustup home:  /Users/g/.local/share/rustup
    
    nightly-aarch64-apple-darwin (default)
    rustc 1.50.0-nightly (1700ca07c 2020-12-08)
    

    When building with cargo build --release, I get the following error

       Compiling skia-bindings v0.34.2
       Compiling skia-safe v0.34.2
       Compiling skulpin-renderer v0.4.0 (https://github.com/aclysma/skulpin#347daae9)
       Compiling skulpin-renderer-sdl2 v0.4.0 (https://github.com/aclysma/skulpin#347daae9)
       Compiling skulpin v0.10.0 (https://github.com/aclysma/skulpin#347daae9)
       Compiling neovide v0.6.0 (/Users/g/neovide)
    error: linking with `cc` failed: exit code: 1
      |
      = note: "cc" "-arch" "arm64" "-L" "/Users/g/.local/share/rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "/Users/g/neovide/target/release/deps/neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o" "-o" "/Users/g/neovide/target/release/deps/neovide" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/g/neovide/target/release/deps" "-L" "/Users/g/neovide/target/release/build/harfbuzz-sys-6740cb702669a401/out" "-L" "/Users/g/neovide/target/release/build/skia-bindings-b4381d3fc062ccc6/out/skia" "-L" "/Users/g/neovide/target/release/build/sdl2-sys-215791b062d72ca6/out/lib" "-L" "/Users/g/.local/share/rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "/var/folders/3h/p5h05fh16x76jpnqjndgm2sw0000gn/T/rustcnerlt9/libharfbuzz_sys-ad7b54075ff14934.rlib" "/var/folders/3h/p5h05fh16x76jpnqjndgm2sw0000gn/T/rustcnerlt9/libsdl2_sys-4aaa3c7283d1ca75.rlib" "/var/folders/3h/p5h05fh16x76jpnqjndgm2sw0000gn/T/rustcnerlt9/libskia_bindings-46f2a31423287d9f.rlib" "/Users/g/.local/share/rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcompiler_builtins-34e8335177269121.rlib" "-lc++" "-framework" "CoreText" "-framework" "CoreText" "-framework" "CoreText" "-framework" "CoreText" "-framework" "CoreText" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreFoundation" "-framework" "AppKit" "-framework" "AppKit" "-framework" "Foundation" "-framework" "Foundation" "-framework" "QuartzCore" "-lSystem" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreGraphics" "-framework" "CoreFoundation" "-lobjc" "-framework" "Cocoa" "-framework" "IOKit" "-framework" "Carbon" "-framework" "ForceFeedback" "-framework" "CoreVideo" "-framework" "CoreAudio" "-framework" "AudioToolbox" "-liconv" "-lc++" "-framework" "ApplicationServices" "-lSystem" "-lresolv" "-lc" "-lm"
      = note: ld: warning: ignoring file /var/folders/3h/p5h05fh16x76jpnqjndgm2sw0000gn/T/rustcnerlt9/libskia_bindings-46f2a31423287d9f.rlib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
              Undefined symbols for architecture arm64:
                "_C_SkSurface_MakeRenderTarget", referenced from:
                    _OUTLINED_FUNCTION_1529 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkMatrix::setRectToRect(SkRect const&, SkRect const&, SkMatrix::ScaleToFit)", referenced from:
                    skulpin_renderer::CoordinateSystemHelper::use_visible_range::h61874ea8c331dd3a in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::setMatrix(SkMatrix const&)", referenced from:
                    skulpin_renderer::CoordinateSystemHelper::use_visible_range::h61874ea8c331dd3a in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::scale(float, float)", referenced from:
                    skulpin_renderer::CoordinateSystemHelper::use_logical_coordinates::h827b6c819628c722 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    skulpin_renderer::CoordinateSystemHelper::use_visible_range::h61874ea8c331dd3a in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "GrBackendTexture::getVkImageInfo(GrVkImageInfo*) const", referenced from:
                    skulpin_renderer::skia_support::VkSkiaSurface::get_image_from_skia_texture::he835d21a285fd592 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkImageInfo_Make", referenced from:
                    skulpin_renderer::skia_renderpass::VkSkiaRenderPass::new::he0a94ebade9575fc in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_GrBackendTexture_Construct", referenced from:
                    skulpin_renderer::skia_renderpass::VkSkiaRenderPass::new::he0a94ebade9575fc in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_GrBackendTexture_CopyConstruct", referenced from:
                    skulpin_renderer::skia_renderpass::VkSkiaRenderPass::new::he0a94ebade9575fc in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_GrBackendTexture_destruct", referenced from:
                    skulpin_renderer::skia_renderpass::VkSkiaRenderPass::new::he0a94ebade9575fc in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::he2f5b27c392aea4a in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::ha827148f23bf0b56 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::hb0e9c1804d12f38c in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::ha827148f23bf0b56 (.13414) in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::he2f5b27c392aea4a (.13607) in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::ha827148f23bf0b56 (.13608) in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    ...
                "_C_SkTextBlob_unref", referenced from:
                    core::ptr::drop_in_place::heb14f16e54518d4a in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::hf8b7777b7b62e84f in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPath::lineTo(float, float)", referenced from:
                    skia_safe::core::path::_$LT$impl$u20$skia_safe..prelude..Handle$LT$skia_bindings..bindings..SkPath$GT$$GT$::line_to::h6e0535a6b7429041 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPoint::Length(float, float)", referenced from:
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..ParticleTrail$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::update::hc7dbdc06699259fb in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPaint::setColor(unsigned int)", referenced from:
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..PointHighlight$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::render::h63cf497c89efb555 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..ParticleTrail$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::render::h98fad8028057e01b in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _OUTLINED_FUNCTION_1351 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _OUTLINED_FUNCTION_3312 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::resetMatrix()", referenced from:
                    neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    skulpin_renderer::CoordinateSystemHelper::use_logical_coordinates::h827b6c819628c722 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawImageRect(SkImage const*, SkRect const&, SkPaint const*)", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkRefCntBase_ref", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkImageInfo_destruct", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::he7c8dab0d29b657d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::hf8605cdf6003de61 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _OUTLINED_FUNCTION_2654 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkCanvas_imageInfo", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkSurface::getCanvas()", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::clipRect(SkRect const&, SkClipOp, bool)", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkImageInfo_Construct", referenced from:
                    skia_safe::core::image_info::_$LT$impl$u20$core..default..Default$u20$for$u20$skia_safe..prelude..Handle$LT$skia_bindings..bindings..SkImageInfo$GT$$GT$::default::h953a9c1214493b59 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_GrContext_MakeVulkan", referenced from:
                    neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPaint::setStrokeWidth(float)", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..ParticleTrail$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::render::h98fad8028057e01b in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _OUTLINED_FUNCTION_2493 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkDashPathEffect_Make", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::flush()", referenced from:
                    neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkPaint_setPathEffect", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPoint::normalize()", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..ParticleTrail$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::update::hc7dbdc06699259fb in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    neovide::renderer::cursor_renderer::cursor_vfx::RngState::rand_dir_normalized::hc86bb791049b9964 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkRefCntBase_unref", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h52b7cef17dd64e10 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::hcbc4457d548134b2 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    skulpin_renderer::skia_renderpass::VkSkiaRenderPass::new::he0a94ebade9575fc in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$skulpin_renderer..renderer..Renderer$u20$as$u20$core..ops..drop..Drop$GT$::drop::h08992a84520b3a82 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _OUTLINED_FUNCTION_1958 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPath::moveTo(float, float)", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPaint::SkPaint(SkRGBA4f<(SkAlphaType)3> const&, SkColorSpace*)", referenced from:
                    skia_safe::core::paint::_$LT$impl$u20$skia_safe..prelude..Handle$LT$skia_bindings..bindings..SkPaint$GT$$GT$::new::h9549f1fc3076a2ed in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPath::SkPath()", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::clipPath(SkPath const&, SkClipOp, bool)", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPaint::setStyle(SkPaint::Style)", referenced from:
                    skia_safe::core::paint::_$LT$impl$u20$skia_safe..prelude..Handle$LT$skia_bindings..bindings..SkPaint$GT$$GT$::set_style::h96ad90c0a7d332d7 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawTextBlob(SkTextBlob const*, float, float, SkPaint const&)", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkPath::close()", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkPaint_destruct", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h52b7cef17dd64e10 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h9744f3fca99391a7 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..PointHighlight$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::render::h63cf497c89efb555 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$neovide..renderer..cursor_renderer..cursor_vfx..ParticleTrail$u20$as$u20$neovide..renderer..cursor_renderer..cursor_vfx..CursorVfx$GT$::render::h98fad8028057e01b in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::restore()", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkPath_destruct", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h96b97bdff75650fa in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkSurface_getBackendTexture", referenced from:
                    skulpin_renderer::skia_renderpass::VkSkiaRenderPass::new::he0a94ebade9575fc in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_GrVkBackendContext_New", referenced from:
                    neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_GrVkBackendContext_Delete", referenced from:
                    neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    _$LT$skia_safe..gpu..vk..backend_context..BackendContext$u20$as$u20$core..ops..drop..Drop$GT$::drop::h87f25181ba60646d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkTextBlobBuilder::allocRunPosH(SkFont const&, int, float, SkRect const*)", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawLine(float, float, float, float, SkPaint const&)", referenced from:
                    skia_safe::core::canvas::Canvas::draw_line::hb8c3942cca76bf75 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawRect(SkRect const&, SkPaint const&)", referenced from:
                    skia_safe::core::canvas::Canvas::draw_rect::hb619a5e2cb94343d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkFont_destruct", referenced from:
                    core::ptr::drop_in_place::h430d968faf086794 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    lru::LruCache$LT$K$C$V$C$S$GT$::put::hba2f00194a443e97 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h1f1a2eead459b09e in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h8dfdabb07ff35eb2 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::save()", referenced from:
                    skia_safe::core::canvas::Canvas::save::h9747fa8ca49f7c60 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkSurface_makeImageSnapshot", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkData_MakeWithCopy", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkTypeface_MakeFromData", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkCanvas_getGrContext", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkFont_ConstructFromTypefaceWithSize", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkTextBlobBuilder::SkTextBlobBuilder()", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawOval(SkRect const&, SkPaint const&)", referenced from:
                    skia_safe::core::canvas::Canvas::draw_oval::hc782e7215df39d6a in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawColor(SkRGBA4f<(SkAlphaType)3> const&, SkBlendMode)", referenced from:
                    neovide::renderer::Renderer::draw::h1567538a18eec8c4 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkTextBlobBuilder_make", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "_C_SkTextBlobBuilder_destruct", referenced from:
                    neovide::renderer::caching_shaper::CachingShaper::shape_cached::hc93731d255358855 in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                    core::ptr::drop_in_place::h472f8641bb5f3b8b in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
                "SkCanvas::drawPath(SkPath const&, SkPaint const&)", referenced from:
                    neovide::renderer::cursor_renderer::CursorRenderer::draw::he2185615de20910d in neovide.which-1222bc449302eff1.which.buhtp8ow-cgu.0.rcgu.o.rcgu.o
              ld: symbol(s) not found for architecture arm64
              clang: error: linker command failed with exit code 1 (use -v to see invocation)
              
    
    error: aborting due to previous error
    
    error: could not compile `neovide`
    
    bug upstream 
    opened by reisub0 48
  • OpenGL Renderer

    OpenGL Renderer

    I recently swapped to an OpenGL backend away from the vulkan one with the hope that it would increase linux compatibility. However it seems that some folks are having issues.

    I don't have the tools or know-how required to fix these problems on my own.

    The opengl binding is handled via https://github.com/rust-windowing/glutin and is done here: https://github.com/Kethku/neovide/blob/main/src/window/window_wrapper/renderer.rs which was based in part on alacritty's implementation https://github.com/alacritty/alacritty/tree/master/alacritty/src/display and the sample in skia-safe https://github.com/rust-skia/rust-skia/blob/master/skia-safe/examples/gl-window/main.rs.

    If anybody is able to synthesize something that works more consistently that would be amazing.

    NOTE: I reverted the main change as it wasn't ready for prime time like I thought. The code is currently held in the OpenGL branch

    help wanted 
    opened by Kethku 45
  • Does not start on macOS

    Does not start on macOS

    Neovide does not start on macOS after updating to (today's commit dd74ff). The window pops up and closes almost immediately, logs shows ERROR Neovide requires nvim version 0.4 or higher while I have 0.6.1

    Old version works (from a week ago)

    To Reproduce Start nevoid from command line or application

    • OS: macOS 12.1
    • Neovide Version 0.8.0
    • NVIM v0.6.1

    LOG TRACE [neovide] Neovide version: 0.8.0 DEBUG [neovide::settings::window_geometry] Loaded window settings: Windowed { position: PhysicalPosition { x: 1280, y: 1080 }, size: Dimensions { width: 106, height: 41 } } TRACE [neovide::renderer::fonts::caching_shaper] Using font_size: 28.00px TRACE [neovide::renderer::fonts::font_loader] Loading font FontKey { bold: false, italic: false, family_name: None } TRACE [neovide::renderer::fonts::caching_shaper] Font width: 17.23px 17.36px TRACE [neovide::renderer::fonts::caching_shaper] Fudge factor: 0.99 TRACE [neovide::renderer::fonts::caching_shaper] Fudged font size: 27.63px TRACE [neovide::renderer::fonts::caching_shaper] Fudged font width: 17.00px TRACE [neovide::renderer::fonts::font_loader] Loading font FontKey { bold: false, italic: false, family_name: None } INFO [neovide::window] window created (scale_factor: 2.0000, font_dimensions: Dimensions { width: 17, height: 35 }) TRACE [neovide::redraw_scheduler] Next frame queued TRACE [neovide::redraw_scheduler] Next frame queued TRACE [neovide::renderer::fonts::caching_shaper] Shaping text: INFO [neovide::bridge::command] Starting neovim with: Command { std: "/bin/zsh" "-lc" "\x1b]1337;RemoteHost=ommited@ommited\x07\x1b]1337;CurrentDir=/Users/ommited\x07\x1b]1337;ShellIntegrationVersion=12;shell=zsh\x07/usr/local/bin/nvim --embed", kill_on_drop: false } ERROR [neovide::bridge] Neovide requires nvim version 0.4 or higher. Download the latest version here https://github.com/neovim/neovim/wiki/Installing-Neovim

    bug 
    opened by caeu 36
  • Fonts render with significant spacing

    Fonts render with significant spacing

    Describe the bug Most fonts render oddly in my machine. In particular, FiraCode NF has unusually large gaps between characters (see screenshots).

    To Reproduce Steps to reproduce the behavior:

    1. Open Neovide with font as FiraCode\ NF, whatever height, on windows 10. Not sure if this is a reproducible bug on other machines.

    Tried reinstalling FiraCode, using other ligature'd fonts like Iosevka. Similar issues with large gaps between chars.

    Expected behavior Fonts should render with no gaps between ligatures or characters in general. For example, Wezterm renders FC NF (same font) as: image

    Screenshots image Note that characters in statusline are also unusually spaced, no matter the font size.

    Desktop (please complete the following information):

    • OS: Windows 10
    • Neovide Version 0.8.0
    • Neovim Version 0.6.0

    Logs: neovide_rCURRENT.log neovide_r2021-12-15_21-29-49.log

    bug 
    opened by dartacao 36
  • thread 'main' panicked at 'Could not create surface'

    thread 'main' panicked at 'Could not create surface'

    I compiled the master version of this repo today ( b0f7c2e ) and compiled it. The compilation went successfully and when I try to run, it says:

    $ export RUST_BACKTRACE=full && ./target/release/neovide 
    Ignored client type property: "methods"
    Ignored client type property: "attributes"
    INTEL-MESA: warning: Haswell Vulkan support is incomplete
    thread 'main' panicked at 'Could not create surface', src/renderer/rendered_window.rs:31:5
    stack backtrace:
       0:     0x55cddd6400ed - backtrace::backtrace::libunwind::trace::ha716b483344307d4
                                   at /usr/src/rustc-1.43.0/vendor/backtrace/src/backtrace/libunwind.rs:86
       1:     0x55cddd6400ed - backtrace::backtrace::trace_unsynchronized::h73191aaca03de050
                                   at /usr/src/rustc-1.43.0/vendor/backtrace/src/backtrace/mod.rs:66
       2:     0x55cddd6400ed - std::sys_common::backtrace::_print_fmt::h515542a6f0149e5c
                                   at src/libstd/sys_common/backtrace.rs:78
       3:     0x55cddd6400ed - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hbd3babec5fee3351
                                   at src/libstd/sys_common/backtrace.rs:59
       4:     0x55cddd556efc - core::fmt::write::ha5eb378c8b683563
                                   at src/libcore/fmt/mod.rs:1063
       5:     0x55cddd63fe54 - std::io::Write::write_fmt::h7525b2825ed7383d
                                   at src/libstd/io/mod.rs:1426
       6:     0x55cddd633895 - std::sys_common::backtrace::_print::hfec26b72b492a55c
                                   at src/libstd/sys_common/backtrace.rs:62
       7:     0x55cddd633895 - std::sys_common::backtrace::print::h05570acc7a135366
                                   at src/libstd/sys_common/backtrace.rs:49
       8:     0x55cddd633895 - std::panicking::default_hook::{{closure}}::h9278410915688d73
                                   at src/libstd/panicking.rs:204
       9:     0x55cddd63349d - std::panicking::default_hook::hd3a187a77f7140a0
                                   at src/libstd/panicking.rs:224
      10:     0x55cddd63349d - std::panicking::rust_panic_with_hook::hb04c51c9d1a7c747
                                   at src/libstd/panicking.rs:470
      11:     0x55cddd633a98 - rust_begin_unwind
                                   at src/libstd/panicking.rs:378
      12:     0x55cddd5569f0 - core::panicking::panic_fmt::h2e8e792413b965d4
                                   at src/libcore/panicking.rs:85
      13:     0x55cddd552202 - core::option::expect_failed::h9d43a72d731e3e83
                                   at src/libcore/option.rs:1203
      14:     0x55cddd4df6a8 - neovide::renderer::rendered_window::build_window_surface::h207c6cbb4befbc2f
                                   at /usr/src/rustc-1.43.0/src/libcore/option.rs:347
      15:     0x55cddd4df6a8 - neovide::renderer::rendered_window::build_window_surface_with_grid_size::he84f9c4b4300cffe
                                   at src/renderer/rendered_window.rs:52
      16:     0x55cddd470f0a - neovide::renderer::rendered_window::SurfacePair::new::h31e703ad15e66adc
                                   at src/renderer/rendered_window.rs:62
      17:     0x55cddd470f0a - neovide::renderer::rendered_window::RenderedWindow::new::h9c0c0dbd41bec91e
                                   at src/renderer/rendered_window.rs:166
      18:     0x55cddd470f0a - neovide::renderer::Renderer::handle_draw_command::h6587c3a35b18e0a4
                                   at src/renderer/mod.rs:230
      19:     0x55cddd470f0a - neovide::renderer::Renderer::draw_frame::h0a47fb4f8b565d96
                                   at src/renderer/mod.rs:280
      20:     0x55cddd4a03e6 - neovide::window::window_wrapper::Sdl2WindowWrapper::draw_frame::hb23bdc84e98da261
                                   at src/window/sdl2/mod.rs:370
      21:     0x55cddd4a03e6 - neovide::window::window_wrapper::start_loop::h4085eb4b80a3ddca
                                   at src/window/sdl2/mod.rs:469
      22:     0x55cddd4f1f30 - neovide::main::hf6228aaafea6052c
                                   at src/window/mod.rs:112
      23:     0x55cddd4fe883 - std::rt::lang_start::{{closure}}::h6245cdbbbb045ac1
                                   at /usr/src/rustc-1.43.0/src/libstd/rt.rs:67
      24:     0x55cddd4ec093 - main
      25:     0x7f46b24f20b3 - __libc_start_main
      26:     0x55cddd46f41e - _start
      27:                0x0 - <unknown>
    
    bug 
    opened by pranphy 36
  • [OSX] Vulkan support is either not configured in SDL or not available in current SDL video driver (cocoa) or platform

    [OSX] Vulkan support is either not configured in SDL or not available in current SDL video driver (cocoa) or platform

    Tried to run and got this:

    Ignored client type property: "methods"
    Ignored client type property: "attributes"
    Ignored style attribute: "standout"
    thread 'main' panicked at 'Failed to create window: SdlError("Vulkan support is either not configured in SDL or not available in current SDL video driver (cocoa) or platform")', src/window/sdl2.rs:132:14
    stack backtrace:
       0:        0x10e7a5135 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h24bb64d98a7e25d6
       1:        0x10e71d82c - core::fmt::write::h8fdc9cddb01cd8b2
       2:        0x10e7a4749 - std::io::Write::write_fmt::hcc3030013983bab6
       3:        0x10e7a4105 - std::panicking::default_hook::{{closure}}::h95817712c5ff0736
       4:        0x10e7a3852 - std::panicking::rust_panic_with_hook::haf571858f996ac45
       5:        0x10e7a7dda - rust_begin_unwind
       6:        0x10ece507f - core::panicking::panic_fmt::h11676ba6a846d9f4
       7:        0x10ece55e5 - core::option::expect_none_failed::h312e48bacb63d8ec
       8:        0x10e6f1c6b - neovide::window::window_wrapper::ui_loop::h0723425ccd7c2cf4
       9:        0x10e6b89ac - neovide::main::hb205e48d6028f98e
      10:        0x10e7b65f6 - std::sys_common::backtrace::__rust_begin_short_backtrace::hd67e5532c4fc3d97
      11:        0x10e6b7712 - main
    
    bug 
    opened by benwainwright 36
  • [Linux] Question about fallback fonts

    [Linux] Question about fallback fonts

    I'm having an issue with fallback fonts (I think?), and was wondering if more information about how that mechanism works could help me debug.

    For context, I'm on Arch Linux, building from master. When I run neovide, I get something that looks like the below: neovide Note the improperly rendered characters in the statusline. In the terminal (kitty, specifically), the same view looks like: terminal with symbols correctly rendered. The same font (Fira Code Retina) is set as both my terminal font and my guifont in ginit.vim.

    Given that I know kitty does use fallback font handling for symbols (particularly the "Nerd Font" symbols), I'm guessing that there's some issue with how neovide is choosing a fallback font on my system.

    Can you elaborate on how the fallback mechanism works/where in the code I should be reading to try and debug this? Thanks!

    bug waiting 
    opened by wbthomason 35
  • Remove all blank space to the left when pressing CMD + Backspace (Mac at least)

    Remove all blank space to the left when pressing CMD + Backspace (Mac at least)

    Is your feature request related to a problem? Please describe. I feel odd when I'm on a line that has some tabs or spaces as indentation to the left and I want to merge that line with the one above. I need to press the backspace until the end one by one.

    Describe the solution you'd like While in other editor like VSCode or Sublime it is easier to remove all the blank spaces by pressing CMD + Backspace (in Mac) keys in one shot as shown in the gif.

    delete-indentation

    Describe alternatives you've considered I do not know of any other

    Additional context

    delete-indentation-2

    enhancement 
    opened by alexventuraio 0
  • Neovide crashes with latest sway/wlroots versions

    Neovide crashes with latest sway/wlroots versions

    Describe the bug Neovide crashes with latest sway/wlroots versions upon start.

    To Reproduce Steps to reproduce the behavior:

    1. Open a terminal
    2. Run neovide
    3. Neovide crashes with SIGABORT

    See the attached file which is the output of coredumpctl info:

    neovide-dump-info.txt

    Expected behavior Neovide starts successfully.

    Desktop

    • OS: Arch Linux
    • Neovide Version: 0.10.3
    • Neovim Version: 0.8.2

    Please run neovide --log and paste the contents of the .log file created in the current directory here:

    neovide_r2023-01-05_11-55-24.log neovide_rCURRENT.log

    Additional context

    It apparently started happening after updating sway and wlroots.

    sway version: 1.8 wlroots version: 0.16.1

    bug 
    opened by itaranto 0
  • [feature]: Particles emitted at cursor position when typing (`neovide_typing_vfx_*`)

    [feature]: Particles emitted at cursor position when typing (`neovide_typing_vfx_*`)

    Describe the solution you'd like

    Ideally I'd like to have particles spawn at the cursor position when typing - typing here means adding visible characters, so no particles when deleting or when adding a newline. I've seen some VSCode extensions which are able to do this, but I haven't been able to find anything for neovim or neovide (if it exists I'd love to know). I've tried messing around with the particles settings, but I couldn't achieve anything beyond making "seconds per frame" a more useful measurement (I had gone quite ridiculous with the numbers by this point).

    Implementation considerations

    Given that there's already a particles system in neovide, I imagine a lot of the work for this has been done. The work is in redirecting the particle system towards this typing-based spawning and dealing with the problems that will inevitably cause.

    This would ultimately end up at having a copy of the neovide_cursor_vfx_* configs under something like neovide_typing_vfx_*. After working through the alternatives for new configs this is probably the least painful implementation.

    enhancement 
    opened by willster277 0
  • When entering Chinese in Neovide, the input method indicates that the floating layer cannot track the cursor

    When entering Chinese in Neovide, the input method indicates that the floating layer cannot track the cursor

    Describe the bug

    Hello, this is using the Chinese input method to enter text, but the input method prompts the layer one true solution in the lower left. After entering the full screen, the IME hint layer is not visible.

    To Reproduce Just open the NeoVide app and use a Chinese input method.

    Expected behavior

    1. When entering text in non-full-screen mode, the IME hint layer can follow the position of the cursor.
    2. In full-screen mode, you can see the input method hint layer and follow the cursor position.

    Screenshots This is problematic under the input float not following the cursor position:

    https://user-images.githubusercontent.com/898354/210521449-6b58037c-bc0b-4d2b-be1d-167766c32d02.mov

    When used by other editors, the input method is displayed normally.

    https://user-images.githubusercontent.com/898354/210523242-0d64258d-db42-4732-a88f-1eb0dde4e3c9.mov

    Desktop (please complete the following information):

    • OS: macOS 13.1
    • Neovide Version 0.10.0
    • Neovim Version 0.8.2

    Please run neovide --log and paste the contents of the .log file created in the current directory here:

    Additional context Add any other context about the problem here.

    bug 
    opened by asins 0
  • Document the `os.execute()` invalid message upstream bug

    Document the `os.execute()` invalid message upstream bug

    What kind of change does this PR introduce?

    • Documentation

    Did this PR introduce a breaking change?

    • No

    This PR documents #1376, an upstream neovim bug that's been known for almost half an year.

    opened by starptr 0
  • Is there any plans about fixing multigrid?

    Is there any plans about fixing multigrid?

    I'd like to know what exact status of multigrid issue fix for neovim 0.8.0 and what is the exact problem

    Whick-key UI seems broken with multigrid enabled: Screenshot 2023-01-04 at 3 22 53 PM

    Floating windows are not transparent with multigrid enabled: Screenshot 2023-01-04 at 3 23 09 PM

    Also some floating windows such as ToggleTerm and lazygit freeze entire neovide instance on open (run out of memory)

    opened by xbladesub 0
Releases(0.10.3)
Owner
Neovide
Neovide
Neovim plugin for moving lines up and down, written in Rust

Moveline.nvim Moveline is a simple plugin for moving lines up and down. It's written in Rust using my library nvim-utils. Installation Moveline can be

Will Hopkins 34 Mar 18, 2023
nvim-oxi provides safe and idiomatic Rust bindings to the rich API exposed by the Neovim text editor.

?? nvim-oxi nvim-oxi provides safe and idiomatic Rust bindings to the rich API exposed by the Neovim text editor. The project is mostly intended for p

Riccardo Mazzarini 655 Jul 13, 2023
A CLI to easily switch between multiple Neovim configuration environments, written in Rust

Neovim Configuration Switcher Neovim Configuration Switcher (short nvims) is a CLI to easily switch between multiple Neovim configuration environments

Nhan Pham 3 Mar 30, 2024
🚀 Discord Rich Presence plugin for Neovim written in Rust

?? Cord ?? Cord is a Discord Rich Presence plugin designed for Neovim, written in Rust. ?? Features Lightweight and dependency-free Cross-platform sup

vyfor 39 May 6, 2024
An async autocompletion framework for Neovim

⚡ nvim-compleet This plugin is still in early development. ?? Table of Contents Installation Features Configuration Sources Commands Mappings Colors R

Riccardo Mazzarini 520 Dec 25, 2022
Xcode Neovim Replacement-ish.

An XCode replacement-ish development environment that aims to be your reliable XCode alternative to develop exciting new [apple] software products ??

null 272 Dec 30, 2022
Failed experiment in downloading random cat image, turning it into ascii and displaying it in Neovim.

cat.nvim Failed experiment in downloading random cat image, turning it into ascii and displaying it in Neovim. Failed as I realized far too late, that

James Vero 4 Aug 5, 2022
Neovim Configuration Manager (Swap/Backup/Try Configurations Easily)

ncm-rs Neovim Configuration Manager (Swap/Backup/Try Configurations Easily) I created this package because I wanted to try out Lazyvim (which is why i

instance.id 4 Mar 5, 2023
WIP. Goals: Treesitter highlighting, snippets, and a smooth intergration with neovim.

typst.nvim WIP. Goals: Tree-sitter highlighting, snippets, and a smooth integration with neovim. For the past week, I've been thinking what I want for

SeniorMars 66 Apr 9, 2023
this-week-in-neovim.org official webapp repository

This Week In Neovim This repository holds the source code of https://this-week-in-neovim.org. Architecture How does it run in production Automatic upd

Dimitri Sabadie 189 Jun 23, 2023
A dark and light Neovim theme written in fennel, inspired by IBM Carbon.

oxocarbon.nvim Note: The old rust version can be found on the rust branch of this repository Oxocarbon is looking for ports! If you're a user of anoth

Nyoom Engineering 690 Jun 29, 2023
Provides a mock Ambi client that emulates real sensor hardware such as an Edge client

ambi_mock_client Provides a mock Ambi client that emulates real sensor hardware such as an Edge client. Usage You must have Rust installed to build am

Rust Never Sleeps 2 Apr 1, 2022
Rust TUI client for steamcmd

Steam TUI About Just a simple TUI client for steamcmd. Allows for the graphical launching, updating, and downloading of steam games through a simple t

Dylan Madisetti 599 Jan 9, 2023
A user-friendly TUI client for Matrix written in Rust!

Konoha A user-friendly TUI client for Matrix written in Rust! Notice: The client is currently not usable and is only hosted on GitHub for version cont

L3af 9 Jan 5, 2022
A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

Vagelis Prokopiou 4 Aug 14, 2022
nhdl - a command-line doujinshi downloader client built in rust!

nhdl nhdl - a command-line doujinshi downloader client built in rust! goals fast and asynchronous doujinshi downloader, supporting various doujinshi s

Lumine 2 Dec 23, 2022
Nostr CLI client built with Rust

Nostr CLI client built with Rust Encrypted chat inside Nostr leaks metadata of who talks to who. This small CLI app implements a "public inbox," which

Vincent Liao 10 Dec 19, 2022
Simple but convenient CLI-based Matrix client app for sending and receiving (in Rust)

matrix-commander-rs simple but convenient CLI-based Matrix client app for sending and receiving Help create this Rust program! This project is current

null 19 Dec 30, 2022
Open source email client written in Rust and Dioxus. Under 🏗️

Blazemail A full-featued, beautiful, mail client that doesn't suck. Works on mac, windows, linux, mobile, web, etc. Features, status Blazemail is curr

Jon Kelley 13 Dec 19, 2022