快轉到主要內容

Flatpak版Linux Visual Studio Code安裝筆記

· 民國113年甲辰年
· ·
分類   Linux系統 Linux好用軟體
標籤   Flatpak Visual Studio Code
目錄

本文列出Ivon在設定Flatpak版Visual Studio Code (VS Code) 過程遇到的一些眉角。

為何要安裝Flatpak版的Visual Studio Code?

Flatpak是一種Linux容器技術,將所有依賴項目打包在一起,將程式runtime與系統隔離。很多immutable distro都有採用Flatpak技術,例如Fedora Silverblue、openSUSE MicroOS、Endless OS、Vanilla OS、Steam OS 3.0 (Steam Deck)。

對這類發行版的用戶來說,既然不方便變更系統,那麼透過Flatpak安裝Visual Studio Code便是一個選項。

但是Flatpak的沙盒機制會對身為小型IDE的Visual Studio Code造成困擾,得要自行找解方。

  • 測試系統:Ubuntu 22.04 LTS
  • Visual Studio Code版本:1.85.1

警告:Flatpak版Visual Studio Code不受Microsoft官方支援。如果你想要在Linux無痛使用VSCode建議還是優先裝官方發表的deb版

Flatpak版Visual Studio Code目前由網路社群打包,相關Issue請優先到Github儲存庫回報。

Flatpak版的Visual Studio Code可用以下指令安裝:

flatpak --user install flathub com.visualstudio.code

Flatpak版Visual Studio Code程式的資料會放在~/.var/app/com.visualstudio.code/,請不要賦予家目錄的全部讀取權限,避免混亂。

1. 一些重要設定
#

首先,開放Visual Studio Code存取其他硬碟的路徑,例如/run/media/user/SSD2

flatpak override --filesystem="/run/media/user/SSD2" com.visualstudio.code

我使用KDE桌面,但Microsoft無法同步帳號設定,要開放dbus session,讓Visual Studio Code可以讀取KWallet儲存密碼:

flatpak --user override--talk-name=org.kde.KWallet.* com.visualstudio.code
flatpak --user override --talk-name=org.kde.kwalletd5com.visualstudio.code

GNOME的話請嘗試在argv.json加入"password-store": "gnome-libsecret"

若要讓Visual Studio Code使用Linux系統的終端機,按Ctrl+Shift+P,開啟使用者設定,開啟settings.json,填入host-spawn指令,讓Visual Studio Code能啟動bash和使用sudo。

{
 "terminal.integrated.defaultProfile.linux": "bash",
        "terminal.integrated.profiles.linux": {
          "bash": {
            "path": "host-spawn",
            "args": ["bash"]
          }
        }
}

如果要以純Wayland模式啟動Visual Studio Code,編輯desktop檔案~/.local/share/flatpak/app/com.visualstudio.code/current/active/export/share/applications/com.visualstudio.code.desktop,在Exec=加入以下引數:

Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=code --file-forwarding com.visualstudio.code --reuse-window @@ %F @@  --enable-features=UseOzonePlatform --ozone-platform=wayland

終端機字體如果怪怪的,用fontconfig解決。

2. 開發程式語言的runtime問題
#

若要開發C、Go、NodeJS、Java、C++之類的程式,Flatpak可能讀不到Linux系統所安裝的runtime。這時得從Flatpak套件庫裝Freedesktop.org的擴充套件,再將其啟用。

  1. 進入Visual Studio Code容器內部的bash
flatpak run --command=sh com.visualstudio.code
  1. 查看內建的runtime
# shared runtime
ls /usr/bin
# bundled with this flatpak
ls /app/bin
  1. 安裝對應程式語言的擴充套件,通常是org.freedesktop.Sdk.Extension開頭。用flatpak search搜尋更多程式語言套件。
# C/C++
flatpak install org.freedesktop.Sdk.Extension.llvm14

# Rust
flatpak install org.freedesktop.Sdk.Extension.rust-stable

# .Net Framework
flatpak install flathub org.freedesktop.Sdk.Extension.dotnet

# Golang
flatpak install flathub org.freedesktop.Sdk.Extension.golang

# NodeJS
flatpak install flathub org.freedesktop.Sdk.Extension.node18

# OpenJDK
flatpak install flathub org.freedesktop.Sdk.Extension.openjdk17
  1. 裝好後,要為Visual Studio Code啟用指定的Extension,例如NodeJS 18,或用*啟用全部Extension
# 僅啟用node18
flatpak --user override --env=FLATPAK_ENABLE_SDK_EXT=node18 com.visualstudio.code

# 全部啟用
flatpak --user override --env=FLATPAK_ENABLE_SDK_EXT=* com.visualstudio.code
  1. 再將Flatpak內部的路徑加到PATH,比如這裡把Flatpak Bundle的NodeJS 18加進去
echo "PATH=$PATH:/home/user/.local/share/flatpak/runtime/org.freedesktop.Sdk.Extension.node18/x86_64/23.08/active/files/bin/" >> ~/.bashrc

source ~/.bashrc
  1. 有些程式工具寫死只能讀取系統的執行檔,或可嘗試用flatpak override開放讀取權限。
flatpak override --filesystem=/usr/bin/clang com.visualstudio.code

3. 連接至KVM虛擬機的問題
#

賦予讀取kvm device的權限即可

sudo flatpak override  --device=kvm com.visualstudio.code
flatpak override --user  --device=kvm com.visualstudio.code

4. 連接Docker容器的問題
#

如果要搭配延伸模組ms-azuretools.vscode-docker,連接到本機Docker容器,啟用以下設定讓Flatpak存取Docker的socket:

sudo flatpak override --filesystem=/run/docker.sock com.visualstudio.code
flatpak override --user --filesystem=/run/docker.sock com.visualstudio.code

使用Podman的話則開放Podman的socket

flatpak override --user --filesystem=xdg-run/podman com.visualstudio.code

再於settings.json指定Docker的路徑

{
    "docker.dockerPath": "/run/host/usr/bin/docker"
}

Podman的路徑:

{
    "docker.dockerPath": "/app/tools/podman/bin/podman-remote"
}

參考資料
#

相關文章

免費開源的Linux影片剪輯軟體:Kdenlive使用教學
分類   Linux系統 Linux好用軟體
標籤   Kdenlive
Czkawka軟體用法,Linux以圖搜圖、搜尋重複檔案的小工具
分類   Linux系統 Linux好用軟體
標籤   Disk Cleanup Linux Windows MacOS
Kanban Desktop,在Linux桌面放一隻Live2D桌寵!支援連接語言模型
分類   Linux系統 Linux好用軟體
標籤   Desktop Mascot Live2D ChatGPT LLaMA AI Linux Windows

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。