Code Monkey home page Code Monkey logo

rmvncclient's Introduction

rmvncclient

VNC client for the reMarkable tablet allowing you to turn the device into a second screen for your computer.

Illustration of a reMarkable table connected to a computer, showing half of a terminal window through its E-Ink screen

Disclaimer

This project is not affiliated to, nor endorsed by, reMarkable AS.
I assume no responsiblitiy for any damage done to your device due to the use of this software.

Background

VNC is a desktop-sharing system that enables a client to see the screen of another computer and act on it remotely. It relies on a well-established protocol supporting multiple platforms including Windows, Linux and Android. The reMarkable is a writer tablet featuring an E-Ink display, a Wacom pen digitizer and a touchscreen, that can be used for reading, sketching or note-taking. It runs a fully open, Linux-based, system.

rmvncclient brings both worlds together by allowing the tablet to connect to a remote VNC server, show the remote screen on its E-Ink display and interact with it through the touchscreen. This can effectively turn the tablet into a second screen for your computer. Applications include reading web-based content, typing documents, drawing, or previewing LaTeX documents as you compose them.

Install on the reMarkable

Grab the latest build from the releases page (or build the software yourself by following the build guide), then copy the rmvncclient executable to the tablet by using SSH.

This VNC client is compatible with VNC servers that are capable of sending pixels in the RGB565 format and that use a resolution compatible with reMarkable’s screen size (1408 × 1872 pixels). It has successfully been tested with x11vnc. When trying to connect to an incompatible server, the program will report details of the problem then exit.

Setup as a second screen

Although this client can connect to any compatible VNC server, the most common scenario is using the tablet as a second screen for the computer it is attached to. For this scenario, you will need to configure your system to create a virtual second screen and then start a VNC server on your computer that the tablet can connect to.

The details are specific to the operating system you’re using:

  • Linux with X11
  • Linux with Wayland (Help wanted!)
  • macOS (Help wanted!)
  • Windows (Help wanted!)

Using the client

You can quit rmvncclient at any time using the “Power” button (the one above the screen). Activity on the touchscreen will be translated to mouse interactions following the mapping in the table below.

Interactions
Touch
screen

Tap → Left click
Long press → Right click

Horizontal swipe
Horizontal scroll

Vertical swipe
Vertical scroll
Buttons
Home button
Force refresh

Power button
Quit app
Pen Pen input will be converted to mouse click and drag.

While the client is running, frames will be displayed on the tablet’s screen as they are received from the server. Due to the properties of E-Ink, there will be some extra latency (up to 1s) between the time of a change on the computer and the moment it appears on the screen. On dark background apps, there will be some ghosting on the screen: use the “Home” button (the one in the middle of the button row below the screen) to force a refresh and clear those artifacts out.

Technologies

This client was built in C++ using libvncserver, which implements the RFB protocol behind the VNC system.

Acknowledgments

Many thanks to:

Martin Sandsmark also built a VNC client for the reMarkable which only depends on Qt.

License

This work is licensed under the GPL v3.

rmvncclient's People

Contributors

matteodelabre avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.