Isolated development containers for GTK apps
Igloo creates Linux development containers using Incus with automatic display passthrough. Two commands, zero configuration.
cd ~/projects/my-gtk-app
igloo # creates and enters the containerThat's it. Igloo auto-detects your host OS, creates a matching container, mounts your project directory, copies your dotfiles, and sets up display passthrough with GPU support.
When you're done with the container:
igloo destroyOptionally create a .igloo.sh in your project root to install dependencies on first creation:
#!/bin/bash
apt-get update
apt-get install -y build-essential libgtk-4-dev meson ninja-buildTo reprovision after changing .igloo.sh, run igloo destroy then igloo.
| Command | Description |
|---|---|
igloo |
Enter the container (creates it if needed) |
igloo destroy |
Remove the container completely |
igloo --no-gui |
Enter without display/GPU passthrough |
- Detects your host distro from
/etc/os-release(followsID_LIKEfor derivatives) - Creates an Incus container with matching image
- Maps your user (same UID/GID, sudo access)
- Mounts the project directory at the same absolute path
- Copies dotfiles (
.gitconfig,.ssh/,.bashrc,.profile,.bash_profile) - Sets up X11/Wayland display passthrough with GPU
- Runs
.igloo.shif it exists - Drops you into a shell
On subsequent runs, it just enters the existing container (starting it if stopped) and refreshes display passthrough.
- Incus installed and configured
- Your user added to the
incusgroup
git clone https://github.com/frostyard/igloo.git
cd igloo
make build
sudo cp igloo /usr/local/bin/- Each project directory gets its own container (
igloo-<dirname>) - GUI apps just work inside the container (GTK, Qt, Firefox, VS Code, etc.)
- The
--no-guiflag is useful when SSHed into the machine or running headless builds - Multiple projects can each have their own igloo, completely isolated
MIT