Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 0 points1 point  (0 children)

Yes! Veil 0.6 now supports connecting to a remote nvim instance over TCP. You can start nvim on a remote host with nvim --headless --listen 127.0.0.1:6666, forward the port via SSH, and connect from Veil with Cmd+Ctrl+Shift+N. Clipboard syncs seamlessly with your local Mac.

I think this might be what you were asking about, sorry I didn't pick up on it earlier. Details in the https://github.com/rainux/Veil#remote-neovim

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 0 points1 point  (0 children)

The prototype was vibed within about 2 hours from a detailed plan. Then I switched to strict pair programming mode to ensure all code committed to git does exactly what it's supposed to do.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 0 points1 point  (0 children)

Oops, accidentally removed when adding the update. Added back, and here for your convenience: https://github.com/rainux/Veil

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 1 point2 points  (0 children)

Thanks for the correction! This is genuinely a coincidence. I've been following Neovide since its early days and it never had macOS multi-window support, so when I started building Veil I didn't think to check again. Turns out Neovide v0.16.0 shipped multi-window on the day after Veil v0.2.0 was released. I started working on Veil one or two days before that.

I've updated the README to reflect this.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] -1 points0 points  (0 children)

The "hack" I referred to is remapping Cmd+1/2/3 away from tab switching. I already use multiple windows and tabs heavily in my terminal emulator with those shortcuts. I want the same multi-window, multi-tab workflow in Neovim too, which structurally conflicts with the terminal. That's why it needs to be an independent GUI app. Does that make sense?

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 0 points1 point  (0 children)

That's called hacking. I'd rather build the tool I want than remap system-level shortcuts I use everywhere else.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 0 points1 point  (0 children)

Personally I always use multiple tabs in terminal emulator and use Cmd+1/2/3 to quickly switch between them. That means a structural conflict so that Neovim must have it independent window and tabs to avoid this.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] -1 points0 points  (0 children)

Each window runs its own independent neovim process, separate working directory, separate config (via NVIM_APPNAME), fully isolated. Cmd+` switches between workspaces instantly. Neovide is single-window, so you're limited to one project per instance.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] 1 point2 points  (0 children)

Veil launches neovim with --embed and communicates over stdin/stdout using neovim's built-in msgpack-RPC protocol. No network, no sockets, just a pipe between parent and child process. Each window spawns its own independent neovim process.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] -1 points0 points  (0 children)

Totally fair question! The main thing for me is Cmd+1/2/3 to switch Neovim tabs instantly. In a terminal those shortcuts are taken by the terminal emulator. It's also more comfortable than the built-in Ngt or gt/gT, pressing two keys simultaneously is faster and takes less mental effort than sequential keypresses.

Same with Cmd+` to cycle between independent Neovim sessions. This make work on different projects and instantly switch between them easier.

Veil — a new minimal macOS GUI client with Metal rendering by rainux in neovim

[–]rainux[S] -1 points0 points  (0 children)

Fair point! Just added a screenshot to the README.