Version 10 (modified by Sam Hocevar, 14 years ago) (diff)

--

<< back to neercs

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:

  • <- 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.