VSCode Remote: it works!

main
Inga 🏳‍🌈 2 years ago
parent dbcee1cbcb
commit 146b9a2fe8
  1. 44
      README.md

@ -267,6 +267,10 @@ It should also be wayland by default, but you can check it by `doas apk add xeye
In order for screen sharing to work, go to `chrome://flags/#enable-webrtc-pipewire-capturer` and enable it. In order for screen sharing to work, go to `chrome://flags/#enable-webrtc-pipewire-capturer` and enable it.
Note though that every time you screenshare, there will be two promps from xdg-desktop-portal, one for picking a source, and another for actually sharing. Note though that every time you screenshare, there will be two promps from xdg-desktop-portal, one for picking a source, and another for actually sharing.
### Archives
`apk install ouch` to avoid having to remember `tar` flags etc, and instead do `ouch decompress archive.tar.gz` (for any archive format).
### Git ### Git
``` ```
@ -677,33 +681,40 @@ doas rc-service squid start
In host, create new FF profile (`about:profiles`) for that purpose, and configure it to use squid proxy running inside of container. In host, create new FF profile (`about:profiles`) for that purpose, and configure it to use squid proxy running inside of container.
#### VS Code Remote (does not work) #### VS Code Remote
Connects to host successfully, but does not let to do anything (not even to open a folder): Note that VS Code (and all related products) has a protection intended to prevent OSS variants from connecting to proprietary versions of VS code.
produces "Connection error: Client refused: version mismatch" error, However, apparently, it is implemented in such a way that it prevents even different OSS products from connecting to each other.
presumably due to code-oss being used on VS client (system host) and vscodium being used on host (LXC container). Only "Code OSS" is packaged for Alpine; and only VSCodium has server-side builds, so you'll need to patch Code OSS to make it pretend to be VSCodium.
(Only code-oss is present in alpine packages, and only vscodium has remote-host binaries).
Steps to get to that stage (one of the sources: https://github.com/microsoft/vscode-remote-release/issues/6347), Steps to get it running, assuming that you already have keyring and key-based SSH auth (with non-RSA key) configured:
assuming that you already have keyring and key-based SSH auth (with non-RSA key) configured:
In container: In container (one of the sources: https://github.com/microsoft/vscode-remote-release/issues/6347):
``` ```
doas apk add gcompat libstdc++ curl bash git procps doas apk add gcompat libstdc++ curl bash git procps
``` ```
and enable `AllowTcpForwarding` and `PermitTunnel` in `/etc/ssh/sshd_config`. and enable `AllowTcpForwarding` and `PermitTunnel` in `/etc/ssh/sshd_config`.
In host: On host (where you intend to run IDE client):
`doas apk add code-oss` `doas apk add code-oss`
Edit `/usr/lib/code-oss/resources/app/package.json`: at the root level, add `"release": "22245",` Using e.g. Firefox, download `vscodium-reh-linux-x64-...` for a relevant build (with a version matching to code-oss)
(replace 22245 with an actual value for your version from https://github.com/VSCodium/vscodium/releases). from https://github.com/VSCodium/vscodium/releases
Unpack it: `cd Downloads && ouch decompress vscodium-reh-... --dir vscodium`
Edit `/usr/lib/code-oss/resources/app/package.json` to make it mimic VSCodium (looking at `package.json` from unpacked VSCodium).
In my experience, changing `name`, removing `distro`, and adding `release` fields was enough.
(Make sure that `version` fields are identical between installed Code OSS and downloaded VSCodium package.)
Edit `/usr/lib/code-oss/resources/app/package.json`: at the root level, add `"commit": "COMMIT_ID", "quality": "stable",` Edit `/usr/lib/code-oss/resources/app/product.json` to make it mimic VSCodium (looking at `product.json` from unpacked VSCodium).
(replace COMMIT_ID with an actual commit id from the same source). In my experience, changing `nameShort`, `nameLong`, `applicationName`, `dataFolderName`, `win32MutexName`,
Replace "serverApplicationName" with "codium-server", and "serverDataFolderName" with ".vscodium-server". `licenseUrl`, `serverApplicationName`, `serverDataFolderName`, `win32DirName`, `win32NameVersion`, `win32RegValueName`,
`linuxIconName`, `reportIssueUrl` and `date` fields,
and adding `updateUrl`, `quality` and `commit` fields was enough.
But most of these fields are probably irrelevant and can be left as is.
Run `code-oss`, add "Open Remote - SSH" extension by jeanp413, exit. Run `code-oss`, add "Open Remote - SSH" extension by jeanp413, exit.
@ -712,7 +723,9 @@ Add `"enable-proposed-api": ["jeanp413.open-remote-ssh"]` at the root level of `
Run `code-oss` again, you'll get remote button under the marketplace button. Run `code-oss` again, you'll get remote button under the marketplace button.
Go there, add your host, right-click it, connect. Go there, add your host, right-click it, connect.
Connection should be successful, and you should see "connected to remote" on Code OSS main screen. Connection should be successful, and you should see "connected to remote" on Code OSS main screen.
But "Open file" / "Open folder" will still list local directory structure, and in debug output for "Window" there will be an error message about "version mismatch". "Open folder" should take you to the remote directory structure, allowing you to open projects hosted in container.
All code-related extensions will also work in remote context, isolated from the parent system and unable to affect it,
no matter what malicious npm packages get installed into container.
### Docker ### Docker
@ -744,7 +757,6 @@ and restart container (`doas lxc restart CONTAINERNAME`).
* Fix internal mic * Fix internal mic
* Docker in containers ran by unprivileged users * Docker in containers ran by unprivileged users
* IDE (code-oss?)
* Make river usable * Make river usable
* Make waybar usable (+waybar fonts) * Make waybar usable (+waybar fonts)
* nushell + starship instead of ash * nushell + starship instead of ash

Loading…
Cancel
Save