Not that long ago Apple introduced trackpad and mouse support in iPadOS 13.4, so I decided to connect my Magic Mouse to my iPad Pro 11" (2018) and even though some apps didn't include real trackpad support yet, it worked like a charm! Even the hover and drag events worked in Safari!.
I decided to try running VS Code on the iPad, and with a mouse it worked almost flawlessly!
Quite a few people asked me how I did that and the answer is code-server.
Run VS Code on any machine anywhere and access it in the browser.
- Code on any device with a consistent development environment
- Use cloud servers to speed up tests, compilations, downloads, and more
- Preserve battery life when you're on the go; all intensive tasks run on your server
There are two ways to get started:
- Using the install script, which automates most of the process. The script uses the system package manager (if possible)
- Manually installing code-server; see Installation for instructions applicable to most use cases
If you choose to use the install script, you can preview what occurs during the install process:
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
To install, run:
curl -fsSL https://code-server.dev/install.sh | sh
When done, the install script prints out instructions for running and starting code-server.
We also have an in-depth setup and configuration guide.
It works by running the language server (debugger and IntelliSense), extensions and the file system part in the cloud on a VPS, and rendering the UI in your browser. It is able to do that because VS Code is actually written using web technologies and packaged with Electron.
It can be a Mac Mini in your attic, a rented server from AWS or anything that runs Linux or macOS, some people have even tried using a Raspberry Pi with an iPad and it works like a charm.
Download the latest prebuilt binary from the GitHub Releases to your server. Untar/unzip it somewhere.
cd into the code-server directory. There will be an executable file called
Variant A. If you don't want to set up SSH forwarding (faster, more convenient, requires a registered domain, less secure)
First of all, get an SSL certificate
You can get one for free from Let's Encrypt using acme.sh. Their README is pretty easy to follow, so I won't get into much detail.
Then, you can run code-server with
PASSWORD="correct-horse-battery-staple" ./code-server --host 0.0.0.0 --port [PORT] --cert ~/.acme.sh/[DOMAIN]/[DOMAIN].cer --cert-key ~/.acme.sh/[DOMAIN]/[DOMAIN].key
Et voila! You can now open your browser, enter the password you set in the environment variable and code
In your SSH client, run
ssh -L [PORT]:localhost:[PORT] root@[YOUR SERVER]
An SSH session will open, where you can start code-server with
./code-server --host 127.0.0.1 --port [PORT] --auth none
http://localhost:[PORT] in your browser and code!
If you have a keyboard and a mouse, the experience is flawless... almost. Here are a few quirks:
- Custom fonts installed via iFont don’t work in Safari (fixed by loading them via CSS)
- Scrolling wheel doesn’t work in editor (arrow keys and scrollbar to the rescue)
- Lack of escape key (ctrl+[ works, or you can remap ESC and Caps Lock in iPadOS Settings)
Yeah! I am a backend developer by day, and it's great coding on an iPad. Frontenders will disagree because iPad Safari lacks devtools, but let's hope that will change in iPadOS 14 :)
This is my first article on dev.to and I'd love it if you share your feedback in the comments! Also, feel free to ask any questions :)