DevContainerでGUIアプリ開発(WSLg)

DevContainerとWSLgを使い、Windows上でLinux GUIアプリを開発する手順を解説。

動機

大学の授業でC言語のGUIアプリを開発することになった。GUIライブラリはGTKを利用することにした。 Windows向けにGTKアプリを開発するには、Msys2をインストールして環境を整える必要がある。 しかし、ローカル環境を汚したくなかったので、DevContainerで開発することにした。 WindowsのDockerはWSL2上で動作しており、WSL2にはWSLgというGUIアプリを動かすための仕組みがある。 これを利用してDevContainerでGUIアプリを開発してみようと思う。

注意

DevContainerを理解していることを前提としている。 そのため、DevContainerの基本的な説明は省略する。 また、本稿ではimageにmcr.microsoft.com/devcontainers/base:debianを利用している。

WSLのアップデート

まず、WSLを最新バージョンにアップデートする。 私はWSLをアップデートしていなかったため、ここで躓いた。

wsl --update

Dockerの設定

Docker Desktopで、WSL Integrationを有効にする。 Docker DesktopのWSL Integration設定をオンにする様子

DevContainerの設定

DevContainerのdocker-compose.ymlに以下を追記する。 サービス名は適宜変更すること。

services:
  devcontainer:
    volumes:
      - type: bind
        source: /tmp/.X11-unix
        target: /tmp/.X11-unix
      - type: bind
        source: /mnt/wslg
        target: /mnt/wslg
    environment:
      - DISPLAY=$DISPLAY
      - WAYLAND_DISPLAY=$WAYLAND_DISPLAY
      - XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR
      - PULSE_SERVER=$PULSE_SERVER

DevContainerの立ち上げ

以上で設定は完了。 DevContainerを立ち上げて、GUIアプリを実行してみる。 DevContainer上でGUIアプリを実行している様子

追記

日本語を扱うGUIアプリを動かす場合、フォントが必要になる。 以下のコマンドでコンテナにGoogle Noto Sans Japaneseフォントをインストールする。

apt install fonts-noto-cjk

参考サイト

編集履歴

  • 2025-12-04: imageに関する記述を追加
Hugo で構築されています。
テーマ StackJimmy によって設計されています。