• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Objective-C
  • License
    Apache License 2.0
  • Created about 8 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A multiplexer for Neovim processes

nmux

nmux is a multiplexer for Neovim processes. It is very much a work in progress at the moment.

It currently has a built-in HTTP server that renders a single nvim process in your browser using websockets as a proof-of-concept. Short video of nvim rendered in a browser: https://youtu.be/mzfHBPHkT-E

The browser client was made mainly for prototyping. Native GUI clients for Linux, macOS, and Windows are being worked on.

Requirements

Neovim must be installed and nvim available in $PATH.

Install

There is an unstable Darwin (macOS) binary available. Windows and Linux builds will be available in the future.

You can also install it with Go:

$ go get -u github.com/tweekmonster/nmux/cmd/nmux

Usage

To run the server:

$ nmux --server --addr localhost:9999

To use Neovim in a browser, go to http://localhost:9999/

Note: The browser client has been tested and works in Google Chrome. The keyboard currently doesn't work in Firefox or Safari. If you're using an extension that gives you vi functionality, it will need to be disabled.

If you're using the Darwin release:

$ nmux.app/Contents/MacOS/nmux --server --addr localhost:9999

Then run nmux.app to connect to the server. If you're using a port other than 9999, you will need to run the client the same way, but without the --server flag. A future release will allow you to configure a remote server and optionally spawn a local server.

Goals

  • A server that manages multiple nvim processes.
    • Allow clients to connect over TCP.
    • Shared unnamed register between all nvim processes.
  • Native cross-platform client programs.
    • Each nvim instance can be a tab or a split view.
    • UI is always consistent. No platform-specific GUI elements, except for the title bar.
    • Image replacements for glyphs (in-editor icons).
    • Basic OS integration (clipboard, notifications, open URLs, etc.)
  • "Simplified" configuration.
    • Only basics need to be configured for client programs.
      • Client programs can be scripted and configured via vimscript.
    • No need to configure a terminal emulator or tmux. nvim can already be configured and scripted to no end.

The ultimate goal is to create native client apps that connect to the nmux server, making the terminal emulator an obsolete program in my daily work. This is not an attempt to create a new terminal emulatorโ€”nvim already has reliable terminal emulator built-in through libvterm.

This will make it possible to turn a Docker container or Virtual Machine (possibly even WSL) into your "IDE". You could take a snapshot of your workspaces and resume where you left off after a reboot.

More Repositories

1

tmux2html

๐Ÿˆ Render full tmux windows or individual panes as HTML
Python
692
star
2

braceless.vim

๐Ÿ Text objects, folding, and more for Python and other indented languages.
Vim Script
392
star
3

startuptime.vim

Breakdown Vim's --startuptime output
Vim Script
284
star
4

django-plus.vim

๐ŸŽธ Improvements to the handling of Django related files in Vim
Vim Script
178
star
5

helpful.vim

๐Ÿ““ Display vim version numbers in docs
Vim Script
177
star
6

fzf-filemru

File MRU with fzf.vim
Shell
91
star
7

deoplete-clang2

Python
90
star
8

moult

A utility for finding Python packages that may not be in use.
Python
50
star
9

nvim-python-doctor

๐Ÿš‘ Display diagnostic information about Python installations for Neovim
Shell
45
star
10

impsort.vim

Sort and highlight Python imports in Vim
Vim Script
36
star
11

local-indent.vim

Display a guide for the current line's indent level.
Vim Script
32
star
12

hammerspoon-vimouse

Control the mouse with Hammerspoon in a Vim-ish way
Lua
28
star
13

Developer-Profile

A Google Chrome extension that deletes browser data when all windows in a profile are closed.
HTML
25
star
14

exception.vim

Vim plugin for tracing exceptions thrown by VimL scripts.
Vim Script
24
star
15

gofmt.vim

A Vim plugin that runs gofmt when you save
Vim Script
19
star
16

dootfiles

๐ŸŽต dootfiles beep boop deet doot ๐ŸŽต
Vim Script
18
star
17

spellrotate.vim

Cycles spelling suggestions under the cursor
Vim Script
17
star
18

wstrip.vim

Strip trailing whitespace only on changed lines
Vim Script
16
star
19

nvim-api-viewer

Display Neovim API functions in a buffer for reference.
Vim Script
14
star
20

sshclip

Sever/client clipboard over SSH for Neovim
Shell
13
star
21

dyslexic.vim

๐Ÿ˜ญ Find mistyped text by searching for word permutations
Vim Script
13
star
22

haunted.vim

๐Ÿ‘ป Scripted automation in Vim using ghosts
Vim Script
13
star
23

osx-autoclean

๐Ÿ—‘๏ธ Automatic Directory Cleaning on macOS
Shell
12
star
24

auto_rsync

Automatically rsync a directory watched by fswatch
Shell
11
star
25

anyline.vim

๐Ÿšฅ A highly customizable statusline for Vim
Vim Script
11
star
26

colorpal.vim

Vim theming plugin
Vim Script
10
star
27

hl-goimport.vim

Highlights imported packages in Go
Vim Script
9
star
28

gitbusy.vim

๐Ÿ Stash your Vim session using `git stash` before switching to another branch.
Vim Script
6
star
29

headlines.vim

๐Ÿ“ฐ Quickly edit the top of your source files
Vim Script
5
star
30

luser

Drop-in replacement for os/user in Go
Go
5
star
31

ubuntu-vims

Docker container for builds of Vim from different versions of Ubuntu
5
star
32

nanofish

oh-my-zsh theme
3
star
33

deoplete-server

[WIP] Deoplete server
3
star
34

nvim-checkhealth

:CheckHealth command for older Neovim versions
Vim Script
2
star
35

wstrip-changed.vim

Strip trailing whitespace only on changed lines.
Vim Script
2
star
36

pdfpop

A very simple macOS command line utility for creating PDFs from an existing PDF
Objective-C
2
star
37

zsh-duckduckgo

Get very simple responses from DuckDuckGo in your z-shell
Shell
1
star
38

django-userjs

userjs is a Django application that produces javascript that represents a User object.
Python
1
star
39

shellcolors

Utility for displaying shell colors and finding a close match
Python
1
star