The neercs client-server protocol
Still being designed.
High level client-to-server commands:
- -> CONNECT: establish a connection with the server, with optional connection credentials
- -> ATTACH %d: attach to window with ID $1
- -> DETACH %d: detach from window with ID $1
- -> NEW %s: open a new process window, running either a new shell or the optional command line $1
- -> BROWSE: open a process browser window
- -> GRAB %d %d: grab process $2 and replace process browser window $1 with it
- -> KILL %d: kill window with ID $1
- -> DISCONNECT: close the connection with the server
Low level client-to-server commands:
- -> KEY %d ...: send one or several keystrokes for window with ID $1
- -> MOUSE %d ...: send a mouse event (motion, button press or release) for window with ID $1
- -> RESIZE %d ...: send a resize event for window with ID $1
- -> ACTIVE %d ...: set the active refresh area for window with ID $1
High level server-to-client commands:
- <- SOCKET %s: inform the client that it can send commands to socket $1
- <- WINDOW %d [%d]: window with ID $1 was created (possibly following client request $2)
Legacy commands
The first neercs implementation used the following set of commands.
Client to server:
- ATTACH %d %d %d: attach client with a $1x$2 display and refresh delay $3
- QUIT: quit everything
- DELAY %d: update refresh delay
- RESIZE %d %d: change display size
- KEY %d: key $1 pressed
- MOUSEP %d %d %d: mouse button $3 pressed at $1,$2
- MOUSER %d %d %d: mouse button $3 released at $1,$2
- MOUSEM %d %d %d: mouse motion to $1,$2 with button $3 pressed
Server to client:
- TITLE %d %s: change display title for window $1 to "$2"
- CURSOR %d %d: set cursor visibility for window $1 to $2
- UPDATE %d %d %s: upload part of a window, caca canvas $3 starting at $1,$2
- REFRESH %d %d: refresh display, with cursor at $1,$2 (sent after all updates, when client should be consistent)
- DETACH
Design
As seen on neercs/devel.

