code-server/docs/ipad.md
2021-07-12 14:03:09 -05:00

8.6 KiB
Raw Blame History

iPad

Once you've installed code-server, you can access it from an iPad.

Using the code-server progressive web app (PWA)

To use code-server on an iPad, we recommend installing the code-server progressive web app (PWA):

  1. Open code-server in Safari.
  2. Click the Share icon.
  3. Click Add to Home Screen.

You can now open code-server from the Home screen, and when you do, you'll be using the PWA. Running code-server as a PWA gets you more screen real estate and access to top-level keyboard shortcuts since its running like a native app.

For example, you can use cmd+w to close an active file in the workbench. You can add this to keybindings.json:

  1. Open code-server

  2. Go to Command Palette > Open Keyboard Shortcuts (JSON)

  3. Add the following to keybindings.json

    {
      "key": "cmd+w",
      "command": "workbench.action.closeActiveEditor"
    }
    
  4. Test the command by using cmd+w to close an active file.

Access code-server with a self-signed certificate on an iPad

If you've installed code-server and are running it with a self-signed certificate, you may see multiple security warnings from Safari. To fix this, you'll need to install the self-signed certificate generated by code-server as a profile on your device (you'll also need to do this to enable WebSocket connections).

Certificate requirements

  • We're assuming that you're using the self-signed certificate code-server generates for you (if not, make sure that your certificate abides by the guidelines issued by Apple).
  • We've noticed that the certificate has to include basicConstraints=CA:true.
  • Your certificate must have a subject alt name that matches the hostname you'll use to access code-server from the iPad. You can pass this name to code-server so that it generates the certificate correctly using --cert-host.

Sharing a self-signed certificate with an iPad

To share a self-signed certificate with an iPad:

  1. Get the location of the certificate code-server generated; code-server prints the certificate's location in its logs:

    [2020-10-30T08:55:45.139Z] info - Using generated certificate and key for HTTPS: ~/.local/share/code-server/mymbp_local.crt
    
  2. Send the certificate to the iPad, either by emailing it to yourself or using Apple's Airdrop feature.

  3. Open the *.crt file so that you're prompted to go into Settings to install.

  4. Go to Settings > General > Profile, and select the profile. Tap Install.

  5. Go to Settings > About > Certificate Trust Settings and enable full trust for your certificate.

You should be able to access code-server without all of Safari's warnings now.

warning: Your iPad must access code-server via a domain name. It could be local DNS like mymacbookpro.local, but it must be a domain name. Otherwise, Safari will not allow WebSockets connections.

Access code-server using Servediter

If you are unable to get the self-signed certificate working, or you do not have a domain name to use, you can use Servediter for code-server.

Servediter for code-server is not officially supported by the code-server team!

To use Servediter:

  1. Download the app from the App Store.
  2. When prompted, provide your server information. If you are running a local server or a Raspberry Pi connected via USB-C, you will input your settings into Self Hosted Server.

Raspberry Pi USB-C network

We've heard of users having great success using code-server on an iPad connected to a Raspberry Pi via USB-C (the Raspberry Pi provides both power and direct network access). Setting this up requires you to turn on Network over USB-C on the Raspberry Pi, then continuing with code-server as usual on the iPad.

For more information, see:

You may also find the following tips from Acker Apple helpful:

Here are my keys to success. I bought a 4" touch screen with fan included that attaches as a case to the Pi. I use the touch screen for anytime I have connection issues, otherwise I turn off the Pi screen. I gave my Pi a network name so I can easily connect at home on wifi or when on go with 1 usb-c cable that supplys both power and network connectivity. Lastly, not all usb-c cables are equal and not all will work so try different usb-c cables if you are going mad (confirm over wifi first then move to cable).

Recommendations

Once you can access code-server on your iPad, you may find the following tips and tricks helpful:

  • Use multi-task mode to make code changes and see the browser at the same time
    • This prevents the iOS background from dropping an app's state if you are switching between code-server and browser (with both in full-screen)
  • Be sure you are using the debug/terminal that is built into VS Code so that you dont need another terminal app running
    • This also prevents switching between full screen apps and losing your view due to iOS' background app memory management

Known issues

  • Getting self-signed certificates to work is an involved process
  • Keyboard issues:
    • The keyboard disappear sometimes #1313, #979
    • Some expectations regarding shortcuts may not be met:
      • cmd + n opens new browser window instead of new file, and it's difficult to set alternative as a workaround
      • In general, expect to edit your keyboard shortcuts
    • There's no escape key by default on the Magic Keyboard, so most users set the globe key to be an escape key
  • Trackpad scrolling does not work (#1455)
    • Bug tracking of a WebKit fix here
    • Tracking of WebKit patch
    • Alternatives:
      • Install line-jump extension and use keyboard to navigate by jumping large amount of lines
      • Use touch scrolling
  • ctrl+c does not stop a long-running process in the browser

Additionally, see issues in the code-server repo that are tagged with the iPad label for more information.

Workaround for issue with ctrl+c not stopping a running process in the terminal

This's currently an issue with ctrl+c not stopping a running process in the integrated terminal. We have filed an issue upstream and are tracking here.

In the meantime, you can manually define a shortcut as a workaround:

  1. Open the Command Palette

  2. Look for Preferences: Open Keyboard Shortcuts (JSON)

  3. Add the following snippet:

    {
      "key": "ctrl+c",
      "command": "workbench.action.terminal.sendSequence",
      "args": {
        "text": "\u0003"
      },
      "when": "terminalFocus"
    }
    

Source: StackOverflow