Skip to content

Visual Studio Code

The Visual Studio Code extension adds the Microsoft editor to a Frostyard desktop image, with its code command, a desktop entry, and an icon. Use it when you want the editor without changing the image. Every image carries the extension’s definition, switched off. The extension itself is not in the image: Updex turns it on and downloads it.

You need:

  • A Frostyard desktop image. The feature is marked for Snow and Snowfield (X-Snosi-Products=snow,snowfield), but Updex lists it on every image. The extension is built on gui-base: on Floe, the editor merges but does not start.
  • Root access to enable, update, and remove the extension.
  • Network access to https://repository.frostyard.org/ext/vscode/.
  • Free space in /var for the image.
  • A desktop session, to start the editor from the application grid.

Visual Studio Code has no published test results on Frostyard images yet. Try it on a machine you can spare first.

See what Updex found, then enable the feature and download it now:

Terminal window
updex features list --component=vscode
sudo updex features enable vscode --now

vscode appears as a component, with its feature disabled. The enable command downloads the image, checks its checksum and signature, links it, and refreshes the merge.

Check the merge and the files that start the editor:

Terminal window
systemd-sysext status
command -v code
ls /usr/share/applications/com.microsoft.VSCode.desktop

systemd-sysext status lists vscode. The command prints a path, and the desktop entry exists.

There is no unit to check. The extension ships no service, no preset, and no boot drop-in.

If enable --now exits with a refresh error (refresh_error in JSON), the download worked, but the activation did not. If the output says activation did not finish, the extension is merged, but users and groups can be missing: reboot. Otherwise the merge state is unknown: reboot. A sudo systemd-sysext refresh by hand does not create users and groups. Then run the checks above again.

Run the editor from a terminal:

Terminal window
code

You can also pick Visual Studio Code in the application grid. The application grid starts /usr/share/code/code. The code command is a link to Microsoft’s launcher script, /usr/share/code/bin/code, which starts the same binary.

The desktop entry carries the MIME types application/x-code-workspace and inode/directory. The build adds inode/directory, so a file manager can open a folder in Code.

The icon is /usr/share/pixmaps/vscode.png. That directory is the unthemed fallback path, which every toolkit scans.

A merge in a running GNOME session does not always make the icon appear at once. Start a new session and the icon is there. The desktop entry itself appears without a new session.

The extension adds the editor, its command, the launcher, and the icon. It ships no configuration file and keeps no state under /var.

An update swaps /usr and replaces the editor. Close any open Code window first, because the files it runs from change under it. The extension keeps no state of its own, so nothing else is affected.

Remove Visual Studio Code now:

Terminal window
sudo updex features disable vscode --now --force

Updex unmerges all extensions on the host, deletes the Visual Studio Code image, and merges the rest again. The command, the launcher, and the icon go. The extension holds only /usr, so removal leaves no data of its own behind. Reboot when the command finishes. Without --force, Updex refuses while the image is merged.

Roll back with sudo updex features rollback vscode. It takes effect at the next boot. Updex then holds updates until a newer version is published. To stop future updates instead, run sudo updex features disable vscode. The extension keeps no state of its own. See Roll back.

See Manage system extensions for the update check, the timer, and plain disable.

Symptom Check Fix
code or the launcher is missing systemd-sysext status, command -v code, and ls /usr/share/applications/com.microsoft.VSCode.desktop Check that the image is merged. If it is, reboot: a sudo systemd-sysext refresh does nothing when the merged images did not change.
The icon is the generic application icon The icon in the application grid after a new login A running GNOME session does not always rescan icons from a merge. Icons are reliable from the next session start.
enable --now exits non-zero after the download The output shows Error: sysext refresh failed (refresh_error with --json) If the output says activation did not finish, reboot. Otherwise reboot too: a refresh by hand does not create the extension’s users and groups. Then check systemd-sysext status.

Do not repair the extension with apt. If a merged image is missing files, the fix is a corrected extension build.

Item What you get
Package code, from packages.microsoft.com/repos/code
Version The image file name carries the code version, plus a +rN snosi revision when one is set
Image file vscode_<version>_<os>_<arch>.raw.zst; .raw.xz, .raw.gz, and .raw also work
Download From https://repository.frostyard.org/ext/vscode/, signature required (Verify=true), into /var/lib/extensions.d/
Commands /usr/bin/code (launcher) and /usr/share/code/code
Desktop entry /usr/share/applications/com.microsoft.VSCode.desktop, with inode/directory added to its MIME types
Icon /usr/share/pixmaps/vscode.png
Services None: no preset and no boot drop-in

Each build checks that the launcher command, its binary, the desktop entry, and the icon are present. A build that is missing one fails.

The image builds against gui-base, the shared set of desktop libraries that every desktop product already has. The delta leaves those libraries out, and your product supplies its own copies at merge time. An editor build therefore cannot put an older GUI library over the one your desktop uses. A finalize check fails the build when the delta carries a divergent GUI library.

The image is an overlay that holds only what its build base does not already have. A later Base can break an older Visual Studio Code image.

Reviewed 2026-10-27; Updex facts reviewed 2026-10-30. snosi commit b2858ca0222814c395cf8248db98f3e096d57dc9; Updex v2.1.3 commit 2661e987faac986f2594d1d9bbbadf1bf3053f5b.