FlatpakのVSCode(OSS)のリポジトリが移行していて試したらLive Shareも使えた

以前試した際は、Live Shareに必要なライブラリ群Flatpakパッケージに含まれていなかったからなのかなんなのか分からないけど、動作に問題があるように感じ、別途Fedora SilverblueではLocal Packageをインストールしていた。これをしてしまうと、バージョンアップごとに rpm-ostree install <ダウンロードしたrpmパッケージ> とやる必要があり面倒くさい。

今週ふと「またFlatpakのVSCodeパッケージ試してみよう」と思ってOSS版のリポジトリを確認したら、以前のリポジトリはアーカイブされていて、新しいリポジトリに移行していた。

リポジトリの移行に関連するのか分からないけど、FlatpakパッケージのパッケージングはYAMLで書かれたマニフェストファイルで定義できるようになっているみたいで、Flatpakパッケージのパッケージングに興味が出てきた。

初回起動時にFlatpak版特有のドキュメンテーション(実行環境の拡張、ターミナル連携の設定等)が表示される。ターミナル連携の設定がdeprecatedになっていたので、新しい書き方でPRを出した(すぐレビューしてもらえてありがたかった)

また、自分はFedora Silverblueを使っているのでtoolboxのコンテナー環境をターミナルで使うことができ、以下のように設定した。フォントの設定もしているけどデフォルトだとひどい等幅フォントが使われていたので、よく使う Dejavu Sans Mono にした。

事前にコンテナー環境を作るのは toolbox create vscode をした。

{
    "terminal.integrated.profiles.linux": {
        "toolbox": {
            "path": "/usr/bin/flatpak-spawn",
            "args":  ["--host", "toolbox", "enter", "vscode"]
        }
    },
    "terminal.integrated.defaultProfile.linux": "toolbox",
    "terminal.integrated.fontFamily": "Dejavu Sans Mono"
}

拡張機能をインストールしようとして接続エラーが出てインストールできないので調べたら、デフォルトではオープンプラットフォームなマーケットプレイスが設定されているみたい。(なぜ接続エラーがでるのかは分かっていない。issueを立てた方が良さそう)

使用するマーケットプレイスを変更する方法はこのコメントこのコメントにしたがう。

$HOME/.var/app/com.visualstudio.code-oss/config/product.json にVSCodeのマーケットプレイスを使う設定を書く。

{
  "serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
  "itemUrl": "https://marketplace.visualstudio.com/items"
}

環境変数で先ほど書いたものを渡す。

$ flatpak --user override --env=VSCODE_EXTENSIONS_GALLERY=$HOME/.var/app/com.visualstudio.code-oss/config/product.json com.visualstudio.code-oss

これでESLint、Prettier、Live Shareなどの拡張機能が入れられるようになった。

Live ShareはVSCodeの起動時に毎回「We were unable to install support for joining sessions using a browser link. You may be missing key Linux libraries. Install them now?」とダイアログが表示されるが、これを「Cancel」して普通にセッションを開始することができた。ダイアログが表示されないようにしたいが分からない(issueを立てた方が良さそう)