diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
new file mode 100644
index 0000000000..6fdbdfd3ef
--- /dev/null
+++ b/.github/workflows/pages.yml
@@ -0,0 +1,33 @@
+name: Zola on GitHub Pages
+
+on:
+ push:
+ branches:
+ - release
+ pull_request:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ if: github.ref != 'refs/heads/release'
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Build only
+ uses: shalzz/zola-deploy-action@v0.19.2
+ env:
+ BUILD_DIR: site
+ BUILD_ONLY: true
+
+ build_and_deploy:
+ runs-on: ubuntu-latest
+ if: github.ref == 'refs/heads/release'
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Build and deploy
+ uses: shalzz/zola-deploy-action@v0.19.2
+ env:
+ BUILD_DIR: site
+ PAGES_BRANCH: gh-pages
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 46f63b4192..d1e48e9be9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
tags
*.vim
TODO.txt
+site/public/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000..a1a9189543
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "site/themes/duckquill"]
+ path = site/themes/duckquill
+ url = https://codeberg.org/daudix/duckquill.git
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a3bbacc93a..ea8e4b835f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -95,7 +95,7 @@ done
- `bashate -i E002,E003,E010,E011 --max-line-length 120`
- use `markdownlint`
- install using `npm -i -g markdownlint-cli`
- - run `markdownlint $(find . -name '*.md' | grep -vF './.git')`
+ - run `markdownlint $(find . -name '*.md' | grep -vF './.git') --ignore site/themes/duckquill/`
- Legibility of the code is more important than code golfing, try to be
expressive in the code
- Try to **follow the happy path**:
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..a89a85e353
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ Use any linux distribution inside your terminal.
+
+
+---
+
+[](https://github.com/89luca89/distrobox/actions/workflows/main.yml)
+[](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml)
+[](https://github.com/89luca89/distrobox/blob/main/COPYING.md)
+[](https://github.com/89luca89/distrobox/releases/latest)
+[](https://repology.org/project/distrobox/versions)
+[](https://github.com/89luca89/distrobox/issues?q=is%3Aissue+is%3Aopen+label%3Abug+-label%3Await-on-user)
+
+[Matrix Room](https://matrix.to/#/%23distrobox:matrix.org) - [Telegram Group](https://t.me/distrobox)
+
+Use any Linux distribution inside your terminal. Enable both backward and forward
+compatibility with software and freedom to use whatever distribution you’re more comfortable with.
+
+Distrobox uses `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod) to create containers
+using the Linux distribution of your choice. The created container will be tightly integrated with the
+host, allowing sharing of the HOME directory of the user, external storage, external USB devices and
+graphical apps (X11/Wayland), and audio.
+
+
+
+## Documentation
+
+Documentation for the [latest release](https://github.com/89luca89/distrobox/releases/latest) is available
+over at [distrobox.it](https://distrobox.it). Documentation in the `docs/` directory on GitHub strictly
+refers to the code in the main branch and is not optimized for being viewed without building it as the website.
+
+To build the website:
+
+1. Clone this repository recursively: `git clone --recursive https://github.com/89luca89/distrobox.git`
+2. Install [Zola](https://www.getzola.org) >= v0.19.2.
+3. Enter the `site` directory.
+4. Run `zola serve`
diff --git a/distrobox-generate-entry b/distrobox-generate-entry
index 9b3cf450e6..c9993fd5e3 100755
--- a/distrobox-generate-entry
+++ b/distrobox-generate-entry
@@ -300,24 +300,24 @@ if [ "${icon}" = "auto" ]; then
# This is a NON comprehensive list of logos of the most popular distributions. If you find logos for
# other supported distros, add it here.
DISTRO_ICON_MAP="
- alma:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/alma-distrobox.png
- alpine:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/alpine-distrobox.png
- arch:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/arch-distrobox.png
- centos:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/centos-distrobox.png
- clear--os:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/clear-distrobox.png
- debian:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/debian-distrobox.png
- deepin:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/deepin-distrobox.png
- fedora:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/fedora-distrobox.png
- gentoo:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/gentoo-distrobox.png
- kali:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/kali-distrobox.png
- kdeneon:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/kdeneon-distrobox.png
- opensuse-leap:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/opensuse-distrobox.png
- opensuse-tumbleweed:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/opensuse-distrobox.png
- rhel:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/redhat-distrobox.png
- rocky:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/rocky-distrobox.png
- ubuntu:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/ubuntu-distrobox.png
- vanilla:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/vanilla-distrobox.png
- void:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/void-distrobox.png
+ alma:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/alma-distrobox.png
+ alpine:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/alpine-distrobox.png
+ arch:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/arch-distrobox.png
+ centos:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/centos-distrobox.png
+ clear--os:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/clear-distrobox.png
+ debian:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/debian-distrobox.png
+ deepin:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/deepin-distrobox.png
+ fedora:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/fedora-distrobox.png
+ gentoo:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/gentoo-distrobox.png
+ kali:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/kali-distrobox.png
+ kdeneon:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/kdeneon-distrobox.png
+ opensuse-leap:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/opensuse-distrobox.png
+ opensuse-tumbleweed:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/opensuse-distrobox.png
+ rhel:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/redhat-distrobox.png
+ rocky:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/rocky-distrobox.png
+ ubuntu:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/ubuntu-distrobox.png
+ vanilla:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/vanilla-distrobox.png
+ void:https://raw.githubusercontent.com/89luca89/distrobox/main/site/static/assets/distros/void-distrobox.png
"
# Try to detect container's distribution by using /etc/os-release
${container_manager_cp_command} "${container_name}":/etc/os-release /tmp/"${container_name}".os-release
diff --git a/docs/404.md b/docs/404.md
deleted file mode 100644
index ebadb3b75a..0000000000
--- a/docs/404.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-permalink: /404.html
----
-
-{:.full.pixels}
-
-# Document Not Found
-
-The requested page could not be found. If you feel this is not normal, then you create an issue on the Gitlab.
-
-[Go Back](){: .inline-button} [File an issue]({{site.issuesurl}})
-{: .dialog-buttons}
diff --git a/docs/Gemfile b/docs/Gemfile
deleted file mode 100644
index 880ae4b240..0000000000
--- a/docs/Gemfile
+++ /dev/null
@@ -1,31 +0,0 @@
-source "https://rubygems.org"
-
-# Hello! This is where you manage which Jekyll version is used to run.
-# When you want to use a different version, change it below, save the
-# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
-#
-# bundle exec jekyll serve
-#
-# This will help ensure the proper Jekyll version is running.
-# Happy Jekylling!
-gem "jekyll", "~> 4.1.0"
-
-# This is the default theme for new Jekyll sites. You may change this to anything you like.
-
-# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
-# uncomment the line below. To upgrade, run `bundle update github-pages`.
-# gem "github-pages", group: :jekyll_plugins
-
-# If you have any plugins, put them here!
-group :jekyll_plugins do
-# gem 'jekyll-feed', '~> 0.13'
-# gem 'jekyll-sitemap', '~> 1.4'
-# gem 'jekyll-compose', '~> 0.12.0'
-# gem 'jekyll-postfiles', '~> 3.1'
-end
-
-# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-# gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
-
-# Performance-booster for watching directories on Windows
-# gem "wdm", "~> 0.1.0" if Gem.win_platform?
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
deleted file mode 100644
index 7bebff7080..0000000000
--- a/docs/Gemfile.lock
+++ /dev/null
@@ -1,67 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
- colorator (1.1.0)
- concurrent-ruby (1.1.9)
- em-websocket (0.5.2)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- eventmachine (1.2.7)
- ffi (1.15.4)
- forwardable-extended (2.6.0)
- http_parser.rb (0.6.0)
- i18n (1.8.10)
- concurrent-ruby (~> 1.0)
- jekyll (4.1.1)
- addressable (~> 2.4)
- colorator (~> 1.0)
- em-websocket (~> 0.5)
- i18n (~> 1.0)
- jekyll-sass-converter (~> 2.0)
- jekyll-watch (~> 2.0)
- kramdown (~> 2.1)
- kramdown-parser-gfm (~> 1.0)
- liquid (~> 4.0)
- mercenary (~> 0.4.0)
- pathutil (~> 0.9)
- rouge (~> 3.0)
- safe_yaml (~> 1.0)
- terminal-table (~> 1.8)
- jekyll-sass-converter (2.1.0)
- sassc (> 2.0.1, < 3.0)
- jekyll-watch (2.2.1)
- listen (~> 3.0)
- kramdown (2.3.1)
- rexml
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
- liquid (4.0.3)
- listen (3.7.0)
- rb-fsevent (~> 0.10, >= 0.10.3)
- rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.4.0)
- pathutil (0.16.2)
- forwardable-extended (~> 2.6)
- public_suffix (4.0.6)
- rb-fsevent (0.11.0)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- rexml (3.2.5)
- rouge (3.26.1)
- safe_yaml (1.0.5)
- sassc (2.4.0)
- ffi (~> 1.9)
- terminal-table (1.8.0)
- unicode-display_width (~> 1.1, >= 1.1.1)
- unicode-display_width (1.8.0)
-
-PLATFORMS
- x86_64-linux
-
-DEPENDENCIES
- jekyll (~> 4.1.0)
-
-BUNDLED WITH
- 2.2.7
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index 4a99236c1f..0000000000
--- a/docs/README.md
+++ /dev/null
@@ -1,481 +0,0 @@
-
-
-# Distrobox
-
-previous logo credits [j4ckr3d](https://github.com/j4ckr3d)
-current logo credits [David Lapshin](https://github.com/daudix)
-
-[](https://github.com/89luca89/distrobox/actions/workflows/main.yml)
-[](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml)
-[](../COPYING.md)
-[](https://github.com/89luca89/distrobox/releases/latest)
-[](https://repology.org/project/distrobox/versions)
-[](https://github.com/89luca89/distrobox/issues?q=is%3Aissue+is%3Aopen+label%3Abug+-label%3Await-on-user)
-
-Use any Linux distribution inside your terminal. Enable both backward and forward
-compatibility with software and freedom to use whatever distribution you’re more
-comfortable with.
-Distrobox uses `podman`, `docker` or
-[`lilipod`](https://github.com/89luca89/lilipod) to create containers using the Linux distribution
-of your choice.
-The created container will be tightly integrated with the host, allowing sharing
-of the HOME directory of the user, external storage, external USB devices and
-graphical apps (X11/Wayland), and audio.
-
----
-
-[Documentation](https://distrobox.it/#distrobox) -
-[Matrix Room](https://matrix.to/#/%23distrobox:matrix.org) -
-[Telegram Group](https://t.me/distrobox)
-
----
-
-
-
----
-
-> [!WARNING]
-> Documentation on GitHub strictly refers to the code in the main branch. For the official documentation
-> Head over [https://distrobox.it](https://distrobox.it)
-
-- [Distrobox](#distrobox)
- - [What it does](#what-it-does)
- - [See it in action](#see-it-in-action)
- - [Why?](#why)
- - [Aims](#aims)
- - [Security implications](#security-implications)
-- [Quick Start](#quick-start)
-- [Assemble Distrobox](#assemble-distrobox)
-- [Configure Distrobox](#configure-distrobox)
-- [Installation](#installation)
- - [Alternative methods](#alternative-methods)
- - [Curl or Wget](#curl-or-wget)
- - [Git](#git)
- - [Dependencies](#dependencies)
- - [Install Podman without root](compatibility.md#install-podman-in-a-static-manner)
- - [Uninstallation](#uninstallation)
-- [Compatibility](compatibility.md)
- - [Supported container managers](compatibility.md#supported-container-managers)
- - [Host Distros](compatibility.md#host-distros)
- - [Install on the Steamdeck](posts/steamdeck_guide.md)
- - [Containers Distros](compatibility.md#containers-distros)
-- [Usage](usage/usage.md)
- - [Outside the distrobox](usage/usage.md#outside-the-distrobox)
- - [distrobox-assemble](usage/distrobox-assemble.md)
- - [distrobox-create](usage/distrobox-create.md)
- - [distrobox-enter](usage/distrobox-enter.md)
- - [distrobox-ephemeral](usage/distrobox-ephemeral.md)
- - [distrobox-generate-entry](usage/distrobox-generate-entry.md)
- - [distrobox-list](usage/distrobox-list.md)
- - [distrobox-rm](usage/distrobox-rm.md)
- - [distrobox-stop](usage/distrobox-stop.md)
- - [distrobox-upgrade](usage/distrobox-upgrade.md)
- - [Inside the distrobox](usage/usage.md#inside-the-distrobox)
- - [distrobox-export](usage/distrobox-export.md)
- - [distrobox-host-exec](usage/distrobox-host-exec.md)
- - [distrobox-init](usage/distrobox-init.md)
- - [Configure distrobox](#configure-distrobox)
-- [Useful tips](useful_tips.md)
- - [Launch a distrobox from you applications list](useful_tips.md#launch-a-distrobox-from-you-applications-list)
- - [Create a distrobox with a custom HOME directory](useful_tips.md#create-a-distrobox-with-a-custom-home-directory)
- - [Mount additional volumes in a distrobox](useful_tips.md#mount-additional-volumes-in-a-distrobox)
- - [Use a different shell than the host](useful_tips.md#use-a-different-shell-than-the-host)
- - [Run the container with real root](useful_tips.md#run-the-container-with-real-root)
- - [Run Debian/Ubuntu container behind proxy](useful_tips.md#run-debianubuntu-container-behind-proxy)
- - [Using a command other than sudo to run a rootful container](useful_tips.md#using-a-command-other-than-sudo-to-run-a-rootful-container)
- - [Duplicate an existing distrobox](useful_tips.md#duplicate-an-existing-distrobox)
- - [Export to the host](useful_tips.md#export-to-the-host)
- - [Execute commands on the host](useful_tips.md#execute-commands-on-the-host)
- - [Resolve "Error cannot open display: :0"](useful_tips.md#resolve-error-cannot-open-display-0)
- - [Enable SSH X-Forwarding when SSH-ing in a distrobox](useful_tips.md#enable-ssh-x-forwarding-when-ssh-ing-in-a-distrobox)
- - [Using init system inside a distrobox](useful_tips.md#using-init-system-inside-a-distrobox)
- - [Using Docker inside a Distrobox](useful_tips.md#using-docker-inside-a-distrobox)
- - [Using Podman inside a Distrobox](useful_tips.md#using-podman-inside-a-distrobox)
- - [Using LXC inside a Distrobox](useful_tips.md#using-lxc-inside-a-distrobox)
- - [Using Waydroid inside a Distrobox](useful_tips.md#using-waydroid-inside-a-distrobox)
- - [Manual Installation](useful_tips.md#manual-installation)
- - [Automated Installation](useful_tips.md#automated-installation)
- - [Using host's Podman or Docker inside a Distrobox](useful_tips.md#using-hosts-podman-or-docker-inside-a-distrobox)
- - [Using distrobox as main cli](useful_tips.md#using-distrobox-as-main-cli)
- - [Using a different architecture](useful_tips.md#using-a-different-architecture)
- - [Using the GPU inside the container](useful_tips.md#using-the-gpu-inside-the-container)
- - [Using nvidia-container-toolkit](useful_tips.md#using-nvidia-container-toolkit)
- - [Slow creation on podman and image size getting bigger with distrobox create](useful_tips.md#slow-creation-on-podman-and-image-size-getting-bigger-with-distrobox-create)
- - [Container save and restore](useful_tips.md#container-save-and-restore)
- - [Check used resources](useful_tips.md#check-used-resources)
- - [Pre-installing additional package repositories](useful_tips.md#pre-installing-additional-package-repositories)
- - [Apply resource limitation on the fly](useful_tips.md#apply-resource-limitation-on-the-fly)
-- [Posts](posts/posts.md)
- - [Create a dedicated distrobox container](posts/distrobox_custom.md)
- - [Execute a command on the Host](posts/execute_commands_on_host.md)
- - [Install Podman in HOME](posts/install_podman_static.md)
- - [Install Lilipod in HOME](posts/install_lilipod_static.md)
- - [Install on Steamdeck](posts/steamdeck_guide.md)
- - [Integrate VSCode and Distrobox](posts/integrate_vscode_distrobox.md)
- - [Run Libvirt using distrobox](posts/run_libvirt_in_distrobox.md)
- - [Run latest GNOME and KDE Plasma using distrobox](posts/run_latest_gnome_kde_on_distrobox.md)
-- [Featured Articles](featured_articles.md)
- - [Articles](featured_articles.md#articles)
- - [Run Distrobox on Fedora Linux - Fedora Magazine](https://fedoramagazine.org/run-distrobox-on-fedora-linux/)
- - [DistroBox – Run Any Linux Distribution Inside Linux Terminal - TecMint](https://www.tecmint.com/distrobox-run-any-linux-distribution/)
- - [Distrobox: Try Multiple Linux Distributions via the Terminal - It's FOSS](https://itsfoss.com/distrobox/)
- - [Distrobox - How to quickly deploy a Linux distribution with GUI applications via a container](https://www.techrepublic.com/article/how-to-quickly-deploy-a-linux-distribution-with-gui-applications-via-a-container/)
- - [Using Distrobox To Augment The Package Selection On Clear Linux - Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Distrobox-Clear-Linux)
- - [Benchmark: benefits of Clear Linux containers (distrobox) - Phoronix](https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1305326-clear-linux-container-performance-continues-showing-sizable-gains)
- - [Distrobox - A great item in the Linux toolbelt - phmurphy's blog](https://phmurphy.com/posts/distrobox-toolbelt/)
- - [Distrobox: Run (pretty much) any Linux distro under almost any other - TheRegister](https://www.theregister.com/2022/05/31/distrobox_130_released/)
- - [Day-to-day differences between Fedora Silverblue and Ubuntu - castrojo's blog](https://www.ypsidanger.com/day-to-day-advantages-of-fedora-silverblue/)
- - [Distrobox is Awesome - Running Window Manager and Desktop environments using Distrobox](https://cloudyday.tech.blog/2022/05/14/distrobox-is-awesome/)
- - [Japanese input on Clear Linux with Mozc via Ubuntu container with Distrobox](https://impsbl.hatenablog.jp/entry/JapaneseInputOnClearLinuxWithMozc_en)
- - [MID (MaXX Interactive Desktop) on Clear Linux via Ubuntu container with Distrobox](https://impsbl.hatenablog.jp/entry/MIDonClearLinuxWithDistrobox_en)
- - [Running Other Linux Distros with Distrobox on Fedora Linux - bandithijo's blog](featured_articles.md)
- - [Talks and Videos](featured_articles.md#talks)
- - [Linux App Summit 2022 - Distrobox: Run Any App On Any Distro - BoF](https://github.com/89luca89/distrobox/files/8598433/distrobox-las-talk.pdf)
- - [Opensource Summit 2022 - Distrobox: Run Any App On Any Distro](https://www.youtube.com/watch?v=eM1p47tow4o)
- - [A "Box" Full of Tools and Distros - Dario Faggioli @ OpenSUSE Conference 2022](https://www.youtube.com/watch?v=_RzARte80SQ)
- - [Podman Community Meeting October 4, 2022](https://www.youtube.com/watch?v=JNijOHL4_Ko)
- - [Distrobox opens the Steam Deck to a whole new world (GUIDE) - GamingOnLinux](https://www.youtube.com/watch?v=kkkyNA31KOA)
- - [CERN - Containerization as a means of extending the lifetime of HDL development tools](https://cdsweb.cern.ch/record/2859962?ln=ja)
- - [How to Code with Distrobox on the Steam Deck](https://www.youtube.com/watch?v=qic7lmACqPo)
- - [Why you should be running the MicroOS Desktop](https://www.youtube.com/watch?v=lKYLF1tA4Ik)
- - [Podcasts](featured_articles.md#podcasts)
-
----
-
-## What it does
-
-Simply put it's a fancy wrapper around `podman`, `docker`, or `lilipod` to create and start
-containers highly integrated with the hosts.
-
-The distrobox environment is based on an OCI image.
-This image is used to create a container that seamlessly integrates with the
-rest of the operating system by providing access to the user's home directory,
-the Wayland and X11 sockets, networking, removable devices (like USB sticks),
-systemd journal, SSH agent, D-Bus,
-ulimits, /dev and the udev database, etc...
-
-It implements the same concepts introduced by
-but in a simplified way using POSIX sh and aiming at broader compatibility.
-
-All the props go to them as they had the great idea to implement this stuff.
-
-It is divided into 12 commands:
-
-- `distrobox-assemble` - creates and destroy containers based on a config file
-- `distrobox-create` - creates the container
-- `distrobox-enter` - to enter the container
-- `distrobox-ephemeral` - create a temporal container, destroy it when exiting the shell
-- `distrobox-list` - to list containers created with distrobox
-- `distrobox-rm` - to delete a container created with distrobox
-- `distrobox-stop` - to stop a running container created with distrobox
-- `distrobox-upgrade` - to upgrade one or more running containers created with distrobox at once
-- `distrobox-generate-entry` - to create an entry of a created container in the applications list
-- `distrobox-init` - the entrypoint of the container (not meant to be used manually)
-- `distrobox-export` - it is meant to be used inside the container,
- useful to export apps and services from the container to the host
-- `distrobox-host-exec` - to run commands/programs from the host, while inside
- of the container
-
-It also includes a little wrapper to launch commands with `distrobox COMMAND`
-instead of calling the single files.
-
-Please check [the usage docs here](usage/usage.md) and [see some handy tips on how to use it](useful_tips.md)
-
-### See it in action
-
-Thanks to [castrojo](https://github.com/castrojo), you can see Distrobox in
-action in this explanatory video on his setup with Distrobox, Toolbx,
-Fedora Silverblue for the [uBlue](https://github.com/ublue-os) project
-(check it out!)
-
-[](https://www.youtube.com/watch?v=Q2PrISAOtbY)
-
-## Why
-
-- Provide a mutable environment on an immutable OS, like [ChromeOS, Endless OS,
- Fedora Silverblue, OpenSUSE Aeon/Kalpa, Vanilla OS](compatibility.md#host-distros), or [SteamOS3](posts/steamdeck_guide.md)
-- Provide a locally privileged environment for sudoless setups
- (eg. company-provided laptops, security reasons, etc...)
-- To mix and match a stable base system (eg. Debian Stable, Ubuntu LTS, RedHat)
- with a bleeding-edge environment for development or gaming
- (eg. Arch, OpenSUSE Tumbleweed, or Fedora with the latest Mesa)
-- Leverage a high abundance of curated distro images for `docker`/`podman` to
- manage multiple environments.
-
-Refer to the compatibility list for an overview of the supported host distros
-[HERE](compatibility.md#host-distros) and container's distro [HERE](compatibility.md#containers-distros).
-
-### Aims
-
-This project aims to bring **any distro userland to any other distro**
-supporting `podman`, `docker`, or `lilipod`.
-It has been written in POSIX shell to be as portable as possible and it does not have
-problems with dependencies and `glibc` version's compatibility.
-
-Refer [HERE](compatibility.md#supported-container-managers) for a list of
-supported container managers and minimum supported versions.
-
-It also aims to enter the container **as fast as possible**, every millisecond
-adds up if you use the container as your default environment for your terminal:
-
-These are some sample results of `distrobox-enter` on the same container on my
-weak laptop:
-
-```console
-~$ hyperfine --warmup 3 --runs 100 "distrobox enter bench -- whoami"
-Benchmark 1: distrobox enter bench -- whoami
- Time (mean ± σ): 395.6 ms ± 10.5 ms [User: 167.4 ms, System: 62.4 ms]
- Range (min … max): 297.3 ms … 408.9 ms 100 runs
-```
-
-#### Security implications
-
-Isolation and sandboxing are **not** the main aims of the project, on the contrary
-it aims to tightly integrate the container with the host.
-The container will have complete access to your home, pen drive, and so on,
-so do not expect it to be highly sandboxed like a plain
-`docker`/`podman` container or a Flatpak.
-
-⚠️ **BE CAREFUL**:⚠️ if you use `docker`, or you use `podman`/`lilipod` with the `--root/-r` flag,
-the containers will run as root, so **root inside the rootful container can modify
-system stuff outside the container**,
-Be also aware that **In rootful mode, you'll be asked to setup the user's password**, this will
-ensure at least that the container is not a passwordless gate to root,
-but if you have security concerns for this, **use `podman` or `lilipod` that runs in rootless mode**.
-Rootless `docker` is still not working as intended and will be included in the future
-when it will be complete.
-
-That said, it is in the works to implement some sort of decoupling with the host,
-as discussed here: [#28 Sandboxed mode](https://github.com/89luca89/distrobox/issues/28)
-
----
-
-# Quick Start
-
-**Create a new distrobox:**
-
-`distrobox create -n test`
-
-**Create a new distrobox with Systemd (acts similar to an LXC):**
-
-`distrobox create --name test --init --image debian:latest --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries"`
-
-**Enter created distrobox:**
-
-`distrobox enter test`
-
-**Add one with a [different distribution](https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#host-distros),
-eg. Ubuntu 20.04:**
-
-`distrobox create -i ubuntu:20.04`
-
-**Execute a command in a distrobox:**
-
-`distrobox enter test -- command-to-execute`
-
-**List running distroboxes:**
-
-`distrobox list`
-
-**Stop a running distrobox:**
-
-`distrobox stop test`
-
-**Remove a distrobox:**
-
-`distrobox rm test`
-
-You can check [HERE for more advanced usage](usage/usage.md)
-and check a [comprehensive list of useful tips HERE](useful_tips.md)
-
-# Assemble Distrobox
-
-Manifest files can be used to declare a set of distroboxes and use
-`distrobox-assemble` to create/destroy them in batch.
-
-Head over the [usage docs of distrobox-assemble](usage/distrobox-assemble.md)
-for a more detailed guide.
-
-# Configure Distrobox
-
-Configuration files can be placed in the following paths, from the least important
-to the most important:
-
-- /usr/share/distrobox/distrobox.conf
-- /usr/etc/distrobox/distrobox.conf
-- /etc/distrobox/distrobox.conf
-- ${HOME}/.config/distrobox/distrobox.conf
-- ${HOME}/.distroboxrc
-
-You can specify inside distrobox configurations and distrobox-specific Environment
-variables.
-
-Example configuration file:
-
-```conf
-container_always_pull="1"
-container_generate_entry=0
-container_manager="docker"
-container_image_default="registry.opensuse.org/opensuse/toolbox:latest"
-container_name_default="test-name-1"
-container_user_custom_home="$HOME/.local/share/container-home-test"
-container_init_hook="~/.local/distrobox/a_custom_default_init_hook.sh"
-container_pre_init_hook="~/a_custom_default_pre_init_hook.sh"
-container_manager_additional_flags="--env-file /path/to/file --custom-flag"
-container_additional_volumes="/example:/example1 /example2:/example3:ro"
-non_interactive="1"
-skip_workdir="0"
-PATH="$PATH:/path/to/custom/podman"
-```
-
-Alternatively, it is possible to specify preferences using ENV variables:
-
-- DBX_CONTAINER_ALWAYS_PULL
-- DBX_CONTAINER_CUSTOM_HOME
-- DBX_CONTAINER_IMAGE
-- DBX_CONTAINER_MANAGER
-- DBX_CONTAINER_NAME
-- DBX_CONTAINER_ENTRY
-- DBX_NON_INTERACTIVE
-- DBX_SKIP_WORKDIR
-
----
-
-# Installation
-
-Distrobox is packaged in the following distributions, if your distribution is
-on this list, you can refer to your repos for installation:
-
-[](https://repology.org/project/distrobox/versions)
-
-Thanks to the maintainers for their work: [M0Rf30](https://github.com/M0Rf30),
-[alcir](https://github.com/alcir), [dfaggioli](https://github.com/dfaggioli),
-[AtilaSaraiva](https://github.com/AtilaSaraiva), [michel-slm](https://github.com/michel-slm)
-
-## Alternative methods
-
-Here is a list of alternative ways to install `distrobox`.
-
-### Curl or Wget
-
-If you like to live your life dangerously, or you want the latest release,
-you can trust me and simply run this in your terminal:
-
-```sh
-curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
-```
-
-or using wget
-
-```sh
-wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
-```
-
-or if you want to select a custom directory to install without sudo:
-
-```sh
-curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
-```
-
-or using wget
-
-```sh
-wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
-```
-
-If you want to install the last development version, directly from the last commit on Git, you can use:
-
-```sh
-curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --next
-```
-
-or using wget
-
-```sh
-wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --next
-```
-
-or:
-
-```sh
-curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local
-```
-
-or using wget
-
-```sh
-wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local
-```
-
-### Upgrading
-
-Just run the `curl` or `wget` command again.
-
-> [!WARNING]
-> Remember to add prefix-path-you-choose/bin to your PATH, to make it work.
-
-### Git
-
-Alternatively, you can clone the project using `git clone` or using the latest
-release [HERE](https://github.com/89luca89/distrobox/releases/latest).
-
-Enter the directory and run `./install`, by default it will attempt to install
-in `~/.local` but if you run the script as root, it will default to `/usr/local`.
-You can specify a custom directory with the `--prefix` flag
-such as `./install --prefix ~/.distrobox`.
-
-Prefix explained: main distrobox files get installed to `${prefix}/bin` whereas
-the manpages get installed to `${prefix}/share/man`.
-
----
-
-Check the [Host Distros](compatibility.md#host-distros) compatibility list for
-distro-specific instructions.
-
-## Dependencies
-
-Distrobox depends on a container manager to work, you can choose to install
-either `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod).
-
-Please look in the [Compatibility Table](compatibility.md#host-distros) for your
-distribution notes.
-
-There are ways to install
-[Podman without root privileges and in home.](compatibility.md#install-podman-in-a-static-manner) or
-[Lilipod without root privileges and in home.](compatibility.md#install-lilipod-in-a-static-manner)
-This should play well with completely sudoless setups and with devices like the Steam Deck (SteamOS).
-
----
-
-## Uninstallation
-
-If you installed `distrobox` using the `install` script in the default install
-directory use this:
-
-```sh
-curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo sh
-```
-
-or if you specified a custom path:
-
-```sh
-curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sh -s -- --prefix ~/.local
-```
-
-Else if cloned the project using `git clone` or using the latest archive release
-from [HERE](https://github.com/89luca89/distrobox/releases/latest),
-
-enter the directory and run `./uninstall`, by default it will assume the install
-directory was `/usr/local` if ran as root or `~/.local`,
-you can specify another directory if needed with `./uninstall --prefix ~/.local`
-
----
-
-
-
-This artwork uses [Cardboard Box](https://skfb.ly/6Wq6q) model by [J0Y](https://sketchfab.com/lloydrostek)
-licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0)
-This artwork uses [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/master/gtk/loop6.blend)
-by [GNOME Project](https://www.gnome.org)
-licensed under [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0)
-as a pre-configured scene
diff --git a/docs/_config.yml b/docs/_config.yml
deleted file mode 100644
index 9ecde69759..0000000000
--- a/docs/_config.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-# Site settings
-title: Distrobox
-baseurl: "/" # the subpath of your site, e.g. /blog/
- # usually empty. necessary for building absolute URIs
- # for metadata header
-url: "https://distrobox.it" # the base hostname & protocol for your site
-sourceurl: "https://github.com/89luca89/distrobox/tree/main/docs" # "edit this website" link in the footer
-description: "Use any linux distribution inside your terminal."
-issuesurl: "https://github.com/89luca89/distrobox/issues" # issue tracker for website
-permalink: /:title/
-primary-color: "#70594d" #used in ios theme. further color customization in style.css
-
-# Build settings
-markdown: kramdown
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html
deleted file mode 100644
index fa93373caa..0000000000
--- a/docs/_includes/footer.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/docs/_includes/head.html b/docs/_includes/head.html
deleted file mode 100644
index 9167ad49be..0000000000
--- a/docs/_includes/head.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
- {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/_includes/header.html b/docs/_includes/header.html
deleted file mode 100644
index 4ff8aaa60a..0000000000
--- a/docs/_includes/header.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
+
+Use any Linux distribution inside your terminal. Enable both backward and forward
+compatibility with software and freedom to use whatever distribution you’re more
+comfortable with.
+Distrobox uses `podman`, `docker` or
+[`lilipod`](https://github.com/89luca89/lilipod) to create containers using the
+Linux distribution of your choice.
+The created container will be tightly integrated with the host, allowing sharing
+of the HOME directory of the user, external storage, external USB devices and
+graphical apps (X11/Wayland), and audio.
+
+---
+
+[Matrix Room](https://matrix.to/#/%23distrobox:matrix.org) -
+[Telegram Group](https://t.me/distrobox)
+
+---
+
+
+
+---
+
+- [What It Does](#what-it-does)
+ - [See It in Action](#see-it-in-action)
+- [Why](#why)
+ - [Aims](#aims)
+ - [Security Implications](#security-implications)
+- [Quick Start](#quick-start)
+- [Assemble Distrobox](#assemble-distrobox)
+- [Configure Distrobox](#configure-distrobox)
+- [Installation](#installation)
+ - [Alternative Methods](#alternative-methods)
+ - [Curl or Wget](#curl-or-wget)
+ - [Upgrading](#upgrading)
+ - [Git](#git)
+- [Dependencies](#dependencies)
+- [Uninstallation](#uninstallation)
+
+## What It Does
+
+Simply put it's a fancy wrapper around `podman`, `docker`, or `lilipod` to create and start
+containers highly integrated with the hosts.
+
+The distrobox environment is based on an OCI image.
+This image is used to create a container that seamlessly integrates with the
+rest of the operating system by providing access to the user's home directory,
+the Wayland and X11 sockets, networking, removable devices (like USB sticks),
+systemd journal, SSH agent, D-Bus,
+ulimits, /dev and the udev database, etc...
+
+It implements the same concepts introduced by
+but in a simplified way using POSIX sh and aiming at broader compatibility.
+
+All the props go to them as they had the great idea to implement this stuff.
+
+It is divided into 12 commands:
+
+- `distrobox-assemble` - creates and destroy containers based on a config file
+- `distrobox-create` - creates the container
+- `distrobox-enter` - to enter the container
+- `distrobox-ephemeral` - create a temporal container, destroy it when exiting the shell
+- `distrobox-list` - to list containers created with distrobox
+- `distrobox-rm` - to delete a container created with distrobox
+- `distrobox-stop` - to stop a running container created with distrobox
+- `distrobox-upgrade` - to upgrade one or more running containers created with distrobox at once
+- `distrobox-generate-entry` - to create an entry of a created container in the applications list
+- `distrobox-init` - the entrypoint of the container (not meant to be used manually)
+- `distrobox-export` - it is meant to be used inside the container,
+ useful to export apps and services from the container to the host
+- `distrobox-host-exec` - to run commands/programs from the host, while inside
+ of the container
+
+It also includes a little wrapper to launch commands with `distrobox COMMAND`
+instead of calling the single files.
+
+Please check [the usage docs here](@/usage/_index.md) and [see some handy tips on how to use it](@/useful_tips.md)
+
+### See It in Action
+
+Thanks to [castrojo](https://github.com/castrojo), you can see Distrobox in
+action in this explanatory video on his setup with Distrobox, Toolbx,
+Fedora Silverblue for the [uBlue](https://github.com/ublue-os) project
+(check it out!)
+
+{{ youtube(id="Q2PrISAOtbY") }}
+
+## Why
+
+- Provide a mutable environment on an immutable OS, like [ChromeOS, Endless OS,
+ Fedora Silverblue, OpenSUSE Aeon/Kalpa, Vanilla OS](@/compatibility.md#host-distros), or [SteamOS3](@/posts/steamdeck_guide.md)
+- Provide a locally privileged environment for sudoless setups
+ (eg. company-provided laptops, security reasons, etc...)
+- To mix and match a stable base system (eg. Debian Stable, Ubuntu LTS, RedHat)
+ with a bleeding-edge environment for development or gaming
+ (eg. Arch, OpenSUSE Tumbleweed, or Fedora with the latest Mesa)
+- Leverage a high abundance of curated distro images for `docker`/`podman` to
+ manage multiple environments.
+
+Refer to the compatibility list for an overview of the supported host distros
+[HERE](@/compatibility.md#host-distros) and container's distro [HERE](@/compatibility.md#containers-distros).
+
+### Aims
+
+This project aims to bring **any distro userland to any other distro**
+supporting `podman`, `docker`, or `lilipod`.
+It has been written in POSIX shell to be as portable as possible and it does not have
+problems with dependencies and `glibc` version's compatibility.
+
+Refer [HERE](@/compatibility.md#supported-container-managers) for a list of
+supported container managers and minimum supported versions.
+
+It also aims to enter the container **as fast as possible**, every millisecond
+adds up if you use the container as your default environment for your terminal:
+
+These are some sample results of `distrobox-enter` on the same container on my
+weak laptop:
+
+```bash
+~$ hyperfine --warmup 3 --runs 100 "distrobox enter bench -- whoami"
+Benchmark 1: distrobox enter bench -- whoami
+ Time (mean ± σ): 395.6 ms ± 10.5 ms [User: 167.4 ms, System: 62.4 ms]
+ Range (min … max): 297.3 ms … 408.9 ms 100 runs
+```
+
+#### Security Implications
+
+Isolation and sandboxing are **not** the main aims of the project, on the contrary
+it aims to tightly integrate the container with the host.
+The container will have complete access to your home, pen drive, and so on,
+so do not expect it to be highly sandboxed like a plain
+`docker`/`podman` container or a Flatpak.
+
+{% alert(caution=true) %}
+If you use `docker`, or you use `podman`/`lilipod` with the `--root/-r` flag,
+the containers will run as root, so **root inside the rootful container can modify
+system stuff outside the container**,
+Be also aware that **In rootful mode, you'll be asked to setup the user's password**, this will
+ensure at least that the container is not a passwordless gate to root,
+but if you have security concerns for this, **use `podman` or `lilipod` that runs in rootless mode**.
+Rootless `docker` is still not working as intended and will be included in the future
+when it will be complete.
+{% end %}
+
+That said, it is in the works to implement some sort of decoupling with the host,
+as discussed here: [#28 Sandboxed mode](https://github.com/89luca89/distrobox/issues/28)
+
+## Quick Start
+
+Create a new distrobox:
+
+```bash
+distrobox create -n test
+```
+
+Create a new distrobox with Systemd (acts similar to an LXC):
+
+```bash
+distrobox create --name test --init --image debian:latest --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries"
+```
+
+Enter created distrobox:
+
+```bash
+distrobox enter test
+```
+
+Add one with a [different distribution](@/compatibility.md#host-distros),
+eg. Ubuntu 20.04:
+
+```bash
+distrobox create -i ubuntu:20.04
+```
+
+Execute a command in a distrobox:
+
+```bash
+distrobox enter test -- command-to-execute
+```
+
+List running distroboxes:
+
+```bash
+distrobox list
+```
+
+Stop a running distrobox:
+
+```bash
+distrobox stop test
+```
+
+Remove a distrobox:
+
+```bash
+distrobox rm test
+```
+
+You can check [HERE for more advanced usage](@/usage/_index.md)
+and check a [comprehensive list of useful tips HERE](@/useful_tips.md)
+
+## Assemble Distrobox
+
+Manifest files can be used to declare a set of distroboxes and use
+`distrobox-assemble` to create/destroy them in batch.
+
+Head over the [usage docs of distrobox-assemble](@/usage/distrobox-assemble.md)
+for a more detailed guide.
+
+## Configure Distrobox
+
+Configuration files can be placed in the following paths, from the least important
+to the most important:
+
+- /usr/share/distrobox/distrobox.conf
+- /usr/etc/distrobox/distrobox.conf
+- /etc/distrobox/distrobox.conf
+- ${HOME}/.config/distrobox/distrobox.conf
+- ${HOME}/.distroboxrc
+
+You can specify inside distrobox configurations and distrobox-specific Environment
+variables.
+
+Example configuration file:
+
+```conf
+container_always_pull="1"
+container_generate_entry=0
+container_manager="docker"
+container_image_default="registry.opensuse.org/opensuse/toolbox:latest"
+container_name_default="test-name-1"
+container_user_custom_home="$HOME/.local/share/container-home-test"
+container_init_hook="~/.local/distrobox/a_custom_default_init_hook.sh"
+container_pre_init_hook="~/a_custom_default_pre_init_hook.sh"
+container_manager_additional_flags="--env-file /path/to/file --custom-flag"
+container_additional_volumes="/example:/example1 /example2:/example3:ro"
+non_interactive="1"
+skip_workdir="0"
+PATH="$PATH:/path/to/custom/podman"
+```
+
+Alternatively, it is possible to specify preferences using ENV variables:
+
+- DBX_CONTAINER_ALWAYS_PULL
+- DBX_CONTAINER_CUSTOM_HOME
+- DBX_CONTAINER_IMAGE
+- DBX_CONTAINER_MANAGER
+- DBX_CONTAINER_NAME
+- DBX_CONTAINER_ENTRY
+- DBX_NON_INTERACTIVE
+- DBX_SKIP_WORKDIR
+
+## Installation
+
+Distrobox is packaged in the following distributions, if your distribution is
+on this list, you can refer to your repos for installation:
+
+[](https://repology.org/project/distrobox/versions)
+
+Thanks to the maintainers for their work: [M0Rf30](https://github.com/M0Rf30),
+[alcir](https://github.com/alcir), [dfaggioli](https://github.com/dfaggioli),
+[AtilaSaraiva](https://github.com/AtilaSaraiva), [michel-slm](https://github.com/michel-slm)
+
+### Alternative Methods
+
+Here is a list of alternative ways to install `distrobox`.
+
+#### Curl or Wget
+
+If you like to live your life dangerously, or you want the latest release,
+you can trust me and simply run this in your terminal:
+
+```bash
+curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
+```
+
+or using wget
+
+```bash
+wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
+```
+
+or if you want to select a custom directory to install without sudo:
+
+```bash
+curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
+```
+
+or using wget
+
+```bash
+wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
+```
+
+If you want to install the last development version, directly from the last commit on Git, you can use:
+
+```bash
+curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --next
+```
+
+or using wget
+
+```bash
+wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --next
+```
+
+or:
+
+```bash
+curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local
+```
+
+or using wget
+
+```bash
+wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local
+```
+
+#### Upgrading
+
+Just run the `curl` or `wget` command again.
+
+{% alert(warning=true) %}
+Remember to add prefix-path-you-choose/bin to your PATH, to make it work.
+{% end %}
+
+### Git
+
+Alternatively, you can clone the project using `git clone` or using the latest
+release [HERE](https://github.com/89luca89/distrobox/releases/latest).
+
+Enter the directory and run `./install`, by default it will attempt to install
+in `~/.local` but if you run the script as root, it will default to `/usr/local`.
+You can specify a custom directory with the `--prefix` flag
+such as `./install --prefix ~/.distrobox`.
+
+Prefix explained: main distrobox files get installed to `${prefix}/bin` whereas
+the manpages get installed to `${prefix}/share/man`.
+
+---
+
+Check the [Host Distros](@/compatibility.md#host-distros) compatibility list for
+distro-specific instructions.
+
+## Dependencies
+
+Distrobox depends on a container manager to work, you can choose to install
+either `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod).
+
+Please look in the [Compatibility Table](@/compatibility.md#host-distros) for your
+distribution notes.
+
+There are ways to install
+[Podman without root privileges and in home.](@/posts/install_podman_static.md) or
+[Lilipod without root privileges and in home.](@/posts/install_lilipod_static.md)
+This should play well with completely sudoless setups and with devices like the Steam Deck (SteamOS).
+
+## Uninstallation
+
+If you installed `distrobox` using the `install` script in the default install
+directory use this:
+
+```bash
+curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo sh
+```
+
+or if you specified a custom path:
+
+```bash
+curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sh -s -- --prefix ~/.local
+```
+
+Else if cloned the project using `git clone` or using the latest archive release
+from [HERE](https://github.com/89luca89/distrobox/releases/latest),
+
+enter the directory and run `./uninstall`, by default it will assume the install
+directory was `/usr/local` if ran as root or `~/.local`,
+you can specify another directory if needed with `./uninstall --prefix ~/.local`
+
+---
+
+
+
+
+
+This artwork uses:
+
+- [Cardboard Box](https://sketchfab.com/3d-models/a-cardboard-box-d527ec1f29a14513a6e8712a1e980f91)
+model by [J0Y](https://sketchfab.com/lloydrostek),
+licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0).
+- [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/1ce3f25304e31540a7fc65aa775e854c15404a20/gtk/loop6.blend)
+by the [GNOME Project](https://www.gnome.org),
+licensed under [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0)
+as a pre-configured scene.
+- [Distribution Icons](https://www.reddit.com/r/linux/comments/nt1tm9/i_made_a_uniform_icon_set_of_linux_distribution)
+by [u/walrusz](https://www.reddit.com/user/walrusz/).
+
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
deleted file mode 100644
index 672aa0cd58..0000000000
--- a/docs/_layouts/default.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- {% include head.html %}
-
-
-
- {% include header.html %}
-
-
- {{ content }}
-
-
- {% include footer.html %}
-
-
-
-
diff --git a/docs/apple-touch-icon.svg b/docs/apple-touch-icon.svg
deleted file mode 100644
index cd32e99a6e..0000000000
--- a/docs/apple-touch-icon.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/docs/assets/404.png b/docs/assets/404.png
deleted file mode 100644
index 3f59a495fa..0000000000
Binary files a/docs/assets/404.png and /dev/null differ
diff --git a/docs/assets/brand/png/distros/base-distrobox-1.xcf b/docs/assets/brand/png/distros/base-distrobox-1.xcf
deleted file mode 100644
index 69242f76a6..0000000000
Binary files a/docs/assets/brand/png/distros/base-distrobox-1.xcf and /dev/null differ
diff --git a/docs/assets/brand/svg/distrobox-dark-mono.svg b/docs/assets/brand/svg/distrobox-dark-mono.svg
deleted file mode 100644
index a9e44d5ccf..0000000000
--- a/docs/assets/brand/svg/distrobox-dark-mono.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-dark-vertical-color.svg b/docs/assets/brand/svg/distrobox-dark-vertical-color.svg
deleted file mode 100644
index 734816fcb9..0000000000
--- a/docs/assets/brand/svg/distrobox-dark-vertical-color.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-dark-vertical-mono.svg b/docs/assets/brand/svg/distrobox-dark-vertical-mono.svg
deleted file mode 100644
index ea6982beb2..0000000000
--- a/docs/assets/brand/svg/distrobox-dark-vertical-mono.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-dark.svg b/docs/assets/brand/svg/distrobox-dark.svg
deleted file mode 100644
index ca6b4b53a2..0000000000
--- a/docs/assets/brand/svg/distrobox-dark.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-light-mono.svg b/docs/assets/brand/svg/distrobox-light-mono.svg
deleted file mode 100644
index 30fab0534d..0000000000
--- a/docs/assets/brand/svg/distrobox-light-mono.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-light-vertical-color.svg b/docs/assets/brand/svg/distrobox-light-vertical-color.svg
deleted file mode 100644
index dc82658b71..0000000000
--- a/docs/assets/brand/svg/distrobox-light-vertical-color.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-light-vertical-mono.svg b/docs/assets/brand/svg/distrobox-light-vertical-mono.svg
deleted file mode 100644
index 59e2713a9e..0000000000
--- a/docs/assets/brand/svg/distrobox-light-vertical-mono.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-light.svg b/docs/assets/brand/svg/distrobox-light.svg
deleted file mode 100644
index 575ed4483d..0000000000
--- a/docs/assets/brand/svg/distrobox-light.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-logomark-dark-mono.svg b/docs/assets/brand/svg/distrobox-logomark-dark-mono.svg
deleted file mode 100644
index eef3635d94..0000000000
--- a/docs/assets/brand/svg/distrobox-logomark-dark-mono.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-logomark-dark.svg b/docs/assets/brand/svg/distrobox-logomark-dark.svg
deleted file mode 100644
index 1d5c68367e..0000000000
--- a/docs/assets/brand/svg/distrobox-logomark-dark.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-logomark-light-mono.svg b/docs/assets/brand/svg/distrobox-logomark-light-mono.svg
deleted file mode 100644
index 5fe49a51d9..0000000000
--- a/docs/assets/brand/svg/distrobox-logomark-light-mono.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
diff --git a/docs/assets/brand/svg/distrobox-logomark-light.svg b/docs/assets/brand/svg/distrobox-logomark-light.svg
deleted file mode 100644
index ed29f53e6d..0000000000
--- a/docs/assets/brand/svg/distrobox-logomark-light.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/docs/assets/card.png b/docs/assets/card.png
deleted file mode 100644
index 86ccce1f69..0000000000
Binary files a/docs/assets/card.png and /dev/null differ
diff --git a/docs/assets/card.svg b/docs/assets/card.svg
deleted file mode 100644
index 9028311406..0000000000
--- a/docs/assets/card.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/docs/assets/credits.md b/docs/assets/credits.md
deleted file mode 100644
index 6dd15edcce..0000000000
--- a/docs/assets/credits.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Assets credits
-
-## Logo
-
-Previous logo was created by [j4ckr3d](https://github.com/j4ckr3d)
-
-Current logo was created by [daudix-UFO](https://github.com/daudix-UFO)
-
-## Images
-
-Assets used in `distro-box.png`
-
-- [Cardboard Box](https://skfb.ly/6Wq6q) model by
- [J0Y](https://sketchfab.com/lloydrostek) licensed under
- [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0)
-- [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/master/gtk/loop6.blend) by
- [GNOME Project](https://www.gnome.org) licensed under
- [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0) as a pre-configured scene
-- Distro icons by
- [u/walrusz](https://www.reddit.com/r/linux/comments/nt1tm9/i_made_a_uniform_icon_set_of_linux_distribution)
-
-Assets used in `distro-box-alt.png`
-
-- ['90 Light Commercial Truck](https://skfb.ly/ootyy) model by
- [Daniel Zhabotinsky](https://sketchfab.com/DanielZhabotinsky) licensed under
- [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0)
-- [Cardboard Box](https://skfb.ly/6Wq6q) model by
- [J0Y](https://sketchfab.com/lloydrostek) licensed under
- [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0)
-- [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/master/gtk/loop6.blend) by
- [GNOME Project](https://www.gnome.org) licensed under
- [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0) as a pre-configured scene
-- Distro icons by
- [u/walrusz](https://www.reddit.com/r/linux/comments/nt1tm9/i_made_a_uniform_icon_set_of_linux_distribution)
diff --git a/docs/assets/distro-box-alt.png b/docs/assets/distro-box-alt.png
deleted file mode 100644
index d57f8aecc0..0000000000
Binary files a/docs/assets/distro-box-alt.png and /dev/null differ
diff --git a/docs/assets/distro-box.png b/docs/assets/distro-box.png
deleted file mode 100644
index db1dca9d94..0000000000
Binary files a/docs/assets/distro-box.png and /dev/null differ
diff --git a/docs/assets/page-logo-i.svg b/docs/assets/page-logo-i.svg
deleted file mode 100644
index e577b9925a..0000000000
--- a/docs/assets/page-logo-i.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/docs/assets/page-logo.svg b/docs/assets/page-logo.svg
deleted file mode 100644
index 6091ea0abd..0000000000
--- a/docs/assets/page-logo.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/docs/assets/png/distros/alma-distrobox.png b/docs/assets/png/distros/alma-distrobox.png
deleted file mode 100644
index c6b950d438..0000000000
Binary files a/docs/assets/png/distros/alma-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/alpine-distrobox.png b/docs/assets/png/distros/alpine-distrobox.png
deleted file mode 100644
index 9bf00a6417..0000000000
Binary files a/docs/assets/png/distros/alpine-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/arch-distrobox.png b/docs/assets/png/distros/arch-distrobox.png
deleted file mode 100644
index b4d3a67800..0000000000
Binary files a/docs/assets/png/distros/arch-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/centos-distrobox.png b/docs/assets/png/distros/centos-distrobox.png
deleted file mode 100644
index 285fe7afd0..0000000000
Binary files a/docs/assets/png/distros/centos-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/clear-distrobox.png b/docs/assets/png/distros/clear-distrobox.png
deleted file mode 100644
index 5f54fbdf0b..0000000000
Binary files a/docs/assets/png/distros/clear-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/debian-distrobox.png b/docs/assets/png/distros/debian-distrobox.png
deleted file mode 100644
index 82fe4c249f..0000000000
Binary files a/docs/assets/png/distros/debian-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/fedora-distrobox.png b/docs/assets/png/distros/fedora-distrobox.png
deleted file mode 100644
index 125d9794a9..0000000000
Binary files a/docs/assets/png/distros/fedora-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/gentoo-distrobox.png b/docs/assets/png/distros/gentoo-distrobox.png
deleted file mode 100644
index 549c60237b..0000000000
Binary files a/docs/assets/png/distros/gentoo-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/opensuse-distrobox.png b/docs/assets/png/distros/opensuse-distrobox.png
deleted file mode 100644
index b1d20ba483..0000000000
Binary files a/docs/assets/png/distros/opensuse-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/redhat-distrobox.png b/docs/assets/png/distros/redhat-distrobox.png
deleted file mode 100644
index ce942fc84f..0000000000
Binary files a/docs/assets/png/distros/redhat-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/rocky-distrobox.png b/docs/assets/png/distros/rocky-distrobox.png
deleted file mode 100644
index c7474cbf25..0000000000
Binary files a/docs/assets/png/distros/rocky-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/ubuntu-distrobox.png b/docs/assets/png/distros/ubuntu-distrobox.png
deleted file mode 100644
index a8d31c7058..0000000000
Binary files a/docs/assets/png/distros/ubuntu-distrobox.png and /dev/null differ
diff --git a/docs/assets/png/distros/void-distrobox.png b/docs/assets/png/distros/void-distrobox.png
deleted file mode 100644
index f8cb8a2bbb..0000000000
Binary files a/docs/assets/png/distros/void-distrobox.png and /dev/null differ
diff --git a/docs/assets/splash.gif b/docs/assets/splash.gif
deleted file mode 100644
index 261e92188d..0000000000
Binary files a/docs/assets/splash.gif and /dev/null differ
diff --git a/docs/assets/splash.png b/docs/assets/splash.png
deleted file mode 100644
index b44edf6288..0000000000
Binary files a/docs/assets/splash.png and /dev/null differ
diff --git a/docs/assets/splash.svg b/docs/assets/splash.svg
deleted file mode 100644
index 600afd01c6..0000000000
--- a/docs/assets/splash.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
diff --git a/docs/compatibility.md b/docs/compatibility.md
index ca0d6476db..a9126829ba 100644
--- a/docs/compatibility.md
+++ b/docs/compatibility.md
@@ -1,18 +1,8 @@
-- [Distrobox](README.md)
- - [Compatibility](#compatibility)
- - [Supported container managers](#supported-container-managers)
- - [Host Distros](#host-distros)
- - [Compatibility notes](#compatibility-notes)
- - [Non shared mounts](#non-shared-mounts)
- - [List of distributions including distrobox in their repositories](#list-of-distributions-including-distrobox-in-their-repositories)
- - [New Host Distro support](#new-host-distro-support)
- - [Containers Distros](#containers-distros)
- - [New Distro support](#new-distro-support)
- - [Older distributions](#older-distributions)
-
----
-
-# Compatibility
++++
+title = "Compatibility"
+[extra]
+toc = true
++++
This project **does not need a dedicated image**. It can use any OCI images from
docker-hub, quay.io, or any registry of your choice.
@@ -26,7 +16,7 @@ Maintaining your own custom image is also an option.
The main concern is having basic Linux utilities (`mount`), basic user management
utilities (`usermod, passwd`), and `sudo` correctly set.
-## Supported container managers
+## Supported Container Managers
`distrobox` can run on either `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod)
@@ -63,24 +53,24 @@ Distrobox has been successfully tested on:
| KDE neon | | `distrobox` is available in default repo |
| Manjaro | | To setup rootless podman, look [HERE](https://wiki.archlinux.org/title/Podman) |
| NixOS | 21.11 | Make sure to mind your executable paths. Sometimes a container will not have nix paths, and sometimes it will not have its own paths. Distrobox is available in Nixpkg collection (thanks [AtilaSaraiva](https://github.com/AtilaSaraiva)!)< To setup Docker, look [HERE](https://wiki.nixos.org/wiki/Docker) To setup Podman, look [HERE](https://wiki.nixos.org/wiki/Podman) and [HERE](https://gist.github.com/adisbladis/187204cb772800489ee3dac4acdd9947) |
-| openSUSE | Leap | `distrobox` is available in default repos (thanks [dfaggioli](https://github.com/dfaggioli)!). Prior to Leap 15.6 ``podman`` logging needs to be configured properly, more details in [this openSUSE bug](https://bugzilla.opensuse.org/show_bug.cgi?id=1199871). |
-| openSUSE | Tumbleweed Slowroll Aeon/Kalpa | `distrobox` is available in default repos (thanks [dfaggioli](https://github.com/dfaggioli)!) For Tumbleweed/Slowroll, do: `zypper install distrobox`. For Aeon/Kalpa, **distrobox is installed by default**. |
-| SUSE Linux Enterprise Server | 15 SP5 or later | `distrobox` is available in `SUSE Package Hub` repo. Enable this repo and then: `zypper install distrobox`. Prior to SLES 15 SP6 ``podman`` logging needs to be configured properly, more details in [this openSUSE bug](https://bugzilla.opensuse.org/show_bug.cgi?id=1199871). |
-| SteamOS | | You can follow the [Install Podman in a static manner](posts/install_podman_static.md) or [Install Lilipod in a static manner](posts/install_lilipod_static.md) guide, this will install it in your $HOME and it will survive updates. |
+| openSUSE | Leap 15.4 Leap 15.3 Leap 15.2 | Packages are available [here](https://software.opensuse.org/download/package?package=distrobox&project=home%3Adfaggioli%3Amicroos-desktop) (thanks [dfaggioli](https://github.com/dfaggioli)!). To install on openSUSE Leap 15, Use the following repository links in the `zypper addrepo` command: [15.4](https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/15.4/home:dfaggioli:microos-desktop.repo), [15.3](https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/15.3/home:dfaggioli:microos-desktop.repo), [15.2](https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/15.2/home:dfaggioli:microos-desktop.repo). Then: `zypper refresh && zypper install distrobox`. `Podman` under SUSE Leap, cannot initialize correctly the containers managed by ``distrobox`` until [this openSUSE bug](https://bugzilla.opensuse.org/show_bug.cgi?id=1199871) is fixed, or ``podman`` logging is configured properly. |
+| openSUSE | Tumbleweed Aeon/Kalpa | `distrobox` is available in default repos (thanks [dfaggioli](https://github.com/dfaggioli)!) For Tumbleweed, do: `zypper install distrobox`. For Aeon/Kalpa, **distrobox is installed by default**. |
+| SUSE Linux Enterprise Server | 15 Service Pack 4 15 Service Pack 3 15 Service Pack 2 | Same procedure as the one for openSUSE (Leap, respective versions, of course). Use the following repository links in the `zypper addrepo` command: [SLE-15-SP4](https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/15.4/home:dfaggioli:microos-desktop.repo), [SLE-15-SP3](https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/15.3/home:dfaggioli:microos-desktop.repo), [SLE-15-SP4](https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/SLE_15_SP2/home:dfaggioli:microos-desktop.repo). Then: `zypper refresh && zypper install distrobox`. `Podman` under SUSE Leap, cannot initialize correctly the containers managed by ``distrobox`` until [this openSUSE bug](https://bugzilla.opensuse.org/show_bug.cgi?id=1199871) is fixed, or ``podman`` logging is configured properly. |
+| SteamOS | | You can follow the [Install Podman in a static manner](@/posts/install_podman_static.md) or [Install Lilipod in a static manner](@/posts/install_lilipod_static.md) guide, this will install it in your $HOME and it will survive updates. |
| RedHat | 8 9 | `distrobox` is available in epel repos. (thanks [alcir](https://github.com/alcir)!) |
| Ubuntu | 18.04 20.04 22.04 22.10 23.04 | Older versions based on 20.04 or earlier may need external repos to install newer Podman and Docker releases. Derivatives like Pop_OS!, Mint and Elementary OS should work the same. [Now PPA available!](https://launchpad.net/~michel-slm/+archive/ubuntu/distrobox), also `distrobox` is available in default repos from `22.10` onward (thanks [michel-slm](https://github.com/michel-slm)!) |
| Vanilla OS | 22.10 Orchid | `distrobox` should be installed in the home directory using the official script |
| Void Linux | glibc musl | |
| Windows | Oracle Linux 9 | using built-in Windows Subsystem for Linux |
-### Compatibility notes
+### Compatibility Notes
-### Non shared mounts
+### Non Shared Mounts
Note also that in some distributions, root filesystem is **not** mounted as a shared mount,
this will give an error like:
-```sh
+```bash
$ distrobox-enter
Error response from daemon: path /sys is mounted on /sys but it is not a shared or slave mount
Error: failed to start containers: ...
@@ -88,17 +78,17 @@ Error: failed to start containers: ...
To resolve this, use this command:
-```sh
+```bash
mount --make-rshared /
```
To make it permanent, you can place it in `/etc/rc.local`.
-## List of distributions including distrobox in their repositories
+## List of Distributions Including Distrobox in Their Repositories
-[](https://repology.org/project/distrobox/versions)
+[](https://repology.org/project/distrobox/versions)
-### New Host Distro support
+### New Host Distro Support
If your distro of choice is not on the list, open an issue requesting support
for it, we can work together to check if it is possible to add support for it.
@@ -115,7 +105,7 @@ Distrobox guests tested successfully with the following container images:
| Distro | Version | Images |
| --- | --- | --- |
| AlmaLinux (Toolbox) | 8 9 | quay.io/toolbx-images/almalinux-toolbox:8 quay.io/toolbx-images/almalinux-toolbox:9 quay.io/toolbx-images/almalinux-toolbox:latest |
-| Alpine (Toolbox) | 3.16 3.17 3.18 3.19 3.20 edge | quay.io/toolbx-images/alpine-toolbox:3.16 quay.io/toolbx-images/alpine-toolbox:3.17 quay.io/toolbx-images/alpine-toolbox:3.18 quay.io/toolbx-images/alpine-toolbox:3.19 quay.io/toolbx-images/alpine-toolbox:3.20 quay.io/toolbx-images/alpine-toolbox:edge quay.io/toolbx-images/alpine-toolbox:latest |
+| Alpine (Toolbox) | 3.16 3.17 3.18 3.19 edge | quay.io/toolbx-images/alpine-toolbox:3.16 quay.io/toolbx-images/alpine-toolbox:3.17 quay.io/toolbx-images/alpine-toolbox:3.18 quay.io/toolbx-images/alpine-toolbox:3.19 quay.io/toolbx-images/alpine-toolbox:edge quay.io/toolbx-images/alpine-toolbox:latest |
| AmazonLinux (Toolbox) | 2 2022 | quay.io/toolbx-images/amazonlinux-toolbox:2 quay.io/toolbx-images/amazonlinux-toolbox:2023 quay.io/toolbx-images/amazonlinux-toolbox:latest |
| Archlinux (Toolbox) | | quay.io/toolbx/arch-toolbox:latest |
| Bazzite Arch | | ghcr.io/ublue-os/bazzite-arch:latest ghcr.io/ublue-os/bazzite-arch-gnome:latest |
@@ -123,7 +113,7 @@ Distrobox guests tested successfully with the following container images:
| Debian (Toolbox) | 10 11 12 testing unstable | quay.io/toolbx-images/debian-toolbox:10 quay.io/toolbx-images/debian-toolbox:11 quay.io/toolbx-images/debian-toolbox:12 quay.io/toolbx-images/debian-toolbox:testing quay.io/toolbx-images/debian-toolbox:unstable quay.io/toolbx-images/debian-toolbox:latest |
| Fedora (Toolbox) | 37 38 39 40 Rawhide | registry.fedoraproject.org/fedora-toolbox:37 registry.fedoraproject.org/fedora-toolbox:38 registry.fedoraproject.org/fedora-toolbox:39 registry.fedoraproject.org/fedora-toolbox:40 registry.fedoraproject.org/fedora-toolbox:rawhide |
| openSUSE (Toolbox) | | registry.opensuse.org/opensuse/distrobox:latest |
-| RedHat (Toolbox) | 8 9 | registry.access.redhat.com/ubi8/toolbox registry.access.redhat.com/ubi9/toolbox |
+| RedHat (Toolbox) | 8 9 | registry.access.redhat.com/ubi8/toolbox registry.access.redhat.com/ubi9/toolbox quay.io/toolbx-images/rhel-toolbox:latest |
| Rocky Linux (Toolbox) | 8 9 | quay.io/toolbx-images/rockylinux-toolbox:8 quay.io/toolbx-images/rockylinux-toolbox:9 quay.io/toolbx-images/rockylinux-toolbox:latest |
| Ubuntu (Toolbox) | 16.04 18.04 20.04 22.04 24.04 | quay.io/toolbx/ubuntu-toolbox:16.04 quay.io/toolbx/ubuntu-toolbox:18.04 quay.io/toolbx/ubuntu-toolbox:20.04 quay.io/toolbx/ubuntu-toolbox:22.04 quay.io/toolbx/ubuntu-toolbox:24.04 quay.io/toolbx/ubuntu-toolbox:latest |
| Chainguard Wolfi (Toolbox) | | quay.io/toolbx-images/wolfi-toolbox:latest |
@@ -135,6 +125,7 @@ Distrobox guests tested successfully with the following container images:
| Archlinux | | docker.io/library/archlinux:latest |
| Blackarch | | docker.io/blackarchlinux/blackarch:latest |
| CentOS Stream | 8 9 | quay.io/centos/centos:stream8 quay.io/centos/centos:stream9 |
+| CentOS | 7 | quay.io/centos/centos:7 |
| Chainguard Wolfi | | cgr.dev/chainguard/wolfi-base:latest |
| ClearLinux | | docker.io/library/clearlinux:latest docker.io/library/clearlinux:base |
| Crystal Linux | | registry.gitlab.com/crystal-linux/misc/docker:latest |
@@ -153,6 +144,7 @@ Distrobox guests tested successfully with the following container images:
| Oracle Linux | 7 7-slim 8 8-slim 9 9-slim |container-registry.oracle.com/os/oraclelinux:7 container-registry.oracle.com/os/oraclelinux:7-slim container-registry.oracle.com/os/oraclelinux:8 container-registry.oracle.com/os/oraclelinux:8-slim container-registry.oracle.com/os/oraclelinux:9 container-registry.oracle.com/os/oraclelinux:9-slim |
| RedHat (UBI) | 7 8 9 | registry.access.redhat.com/ubi7/ubi registry.access.redhat.com/ubi8/ubi registry.access.redhat.com/ubi8/ubi-init registry.access.redhat.com/ubi8/ubi-minimal registry.access.redhat.com/ubi9/ubi registry.access.redhat.com/ubi9/ubi-init registry.access.redhat.com/ubi9/ubi-minimal |
| Rocky Linux | 8 8-minimal 9 | quay.io/rockylinux/rockylinux:8 quay.io/rockylinux/rockylinux:8-minimal quay.io/rockylinux/rockylinux:9 quay.io/rockylinux/rockylinux:latest |
+| Scientific Linux | 7 | docker.io/library/sl:7 |
| Slackware | | docker.io/vbatts/slackware:current |
| SteamOS | | ghcr.io/linuxserver/steamos:latest |
| Ubuntu | 14.04 16.04 18.04 20.04 22.04 23.04 | docker.io/library/ubuntu:14.04 docker.io/library/ubuntu:16.04 docker.io/library/ubuntu:18.04 docker.io/library/ubuntu:20.04 docker.io/library/ubuntu:22.04 docker.io/library/ubuntu:23.04 |
@@ -173,7 +165,7 @@ bring support to it. If you are looking for unprivileged NixOS environments,
we suggest you look into [nix-shell](https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html)
or [nix portable](https://github.com/DavHau/nix-portable)
-### New Distro support
+### New Distro Support
If your distro of choice is not on the list, open an issue requesting support
for it, we can work together to check if it is possible to add support for it.
@@ -181,7 +173,7 @@ for it, we can work together to check if it is possible to add support for it.
Or just try using it anyway, if it works, open an issue
and it will be added to the list!
-### Older distributions
+### Older Distributions
For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04,
compatibility is not assured.
@@ -191,15 +183,15 @@ A work around this is to use the `vsyscall=emulate` flag in the bootloader of th
host.
Keep also in mind that mirrors could be down for such old releases, so you will
-need to build a [custom distrobox image to ensure basic dependencies are met](./posts/distrobox_custom.md).
+need to build a [custom distrobox image to ensure basic dependencies are met](@/posts/distrobox_custom.md).
-### GPU Acceleration support
+### GPU Acceleration Support
For Intel and AMD Gpus, the support is baked in, as the containers will install
their latest available mesa/dri drivers.
-For NVidia, you can use the `--nvidia` flag during create, see [distrobox-create](./usage/distrobox-create.md)
+For NVidia, you can use the `--nvidia` flag during create, see [distrobox-create](@/usage/distrobox-create.md)
documentation to discover how to use it.
-Alternatively, you can use the [nvidia-container-toolkit](./useful_tips.md#using-nvidia-container-toolkit)
+Alternatively, you can use the [nvidia-container-toolkit](@/useful_tips.md#using-nvidia-container-toolkit)
utility to set up the integration independently from the distrobox's own flag.
diff --git a/docs/favicon.svg b/docs/favicon.svg
deleted file mode 100644
index 767ff85489..0000000000
--- a/docs/favicon.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/docs/featured_articles.md b/docs/featured_articles.md
index fe4c054840..13c5789276 100644
--- a/docs/featured_articles.md
+++ b/docs/featured_articles.md
@@ -1,9 +1,6 @@
-- [Distrobox](README.md)
- - [Featured articles](#articles)
- - [Talks](#talks)
- - [Podcasts](#podcasts)
-
----
++++
+title = "Featured Articles"
++++
## Articles
diff --git a/docs/fonts/Inter.var.woff2 b/docs/fonts/Inter.var.woff2
deleted file mode 100644
index 365eedc50c..0000000000
Binary files a/docs/fonts/Inter.var.woff2 and /dev/null differ
diff --git a/docs/posts/_index.md b/docs/posts/_index.md
new file mode 100644
index 0000000000..69c30d4b8b
--- /dev/null
+++ b/docs/posts/_index.md
@@ -0,0 +1,11 @@
++++
+title = "Latest Posts"
++++
+
+- [Execute a command on the Host](@/posts/execute_commands_on_host.md)
+- [Install Podman in HOME](@/posts/install_podman_static.md)
+- [Install Lilipod in HOME](@/posts/install_lilipod_static.md)
+- [Install on Steamdeck](@/posts/steamdeck_guide.md)
+- [Integrate VSCode and Distrobox](@/posts/integrate_vscode_distrobox.md)
+- [Run Libvirt using distrobox](@/posts/run_libvirt_in_distrobox.md)
+- [Run latest GNOME and KDE Plasma using distrobox](@/posts/run_latest_gnome_kde_on_distrobox.md)
diff --git a/docs/posts/distrobox_custom.md b/docs/posts/distrobox_custom.md
index 951b73e17c..1ca8541b34 100644
--- a/docs/posts/distrobox_custom.md
+++ b/docs/posts/distrobox_custom.md
@@ -1,8 +1,8 @@
-- [Distrobox](README.md)
-
----
-
-# Create a dedicated distrobox container
++++
+title = "Create a Dedicated Distrobox Container"
+[extra]
+toc = true
++++
Distrobox wants to be as generic as possible in supporting OCI images,
but sometimes there could be some problems:
@@ -72,7 +72,7 @@ will simply skip the installation process and work as expected.
To test if all packages requirements are met just run this in the container:
-```shell
+```bash
dependencies="
bc
bzip2
diff --git a/docs/posts/execute_commands_on_host.md b/docs/posts/execute_commands_on_host.md
index 699529929e..d2ffd8f29d 100644
--- a/docs/posts/execute_commands_on_host.md
+++ b/docs/posts/execute_commands_on_host.md
@@ -1,14 +1,8 @@
-- [Distrobox](../README.md)
- - [Execute a command on the host](#execute-a-command-on-the-host)
- - [With distrobox-host-exec](#with-distrobox-host-exec)
- - [Using symlinks](#using-symlinks)
- - [Integrate host with container seamlessly](#integrate-host-with-container-seamlessly)
- - [bash or zsh](#bash-or-zsh)
- - [fish](#fish)
-
----
-
-# Execute a command on the host
++++
+title = "Execute a Command on the Host"
+[extra]
+toc = true
++++
It may be needed to execute commands back on the host. Be it the filemanager, an
archive manager, a container manager and so on.
@@ -19,9 +13,9 @@ Here are a couple of solutions.
distrobox offers the `distrobox-host-exec` helper, that can be used exactly for this.
-See [distrobox-host-exec](../usage/distrobox-host-exec.md).
+See [distrobox-host-exec](@/usage/distrobox-host-exec.md).
-```console
+```bash
user@fedora-distrobox:~$ which podman
/usr/bin/which: no podman in [...]
user@fedora-distrobox:~$ distrobox-host-exec podman version # <-- this is executed on host.
@@ -40,11 +34,11 @@ Built: Thu Jan 1 01:00:00 1970
OS/Arch: linux/amd64
```
-## Using symlinks
+## Using Symlinks
Another way to execute commands on the host, is to create executables symlinking `distrobox-host-exec`:
-```console
+```bash
user@fedora-distrobox:~$ ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman
user@fedora-distrobox:~$ ls -l /usr/local/bin/podman
lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman -> /usr/bin/distrobox-host-exec
@@ -64,16 +58,16 @@ Built: Thu Jan 1 01:00:00 1970
OS/Arch: linux/amd64
```
-# Integrate host with container seamlessly
+## Integrate Host with Container Seamlessly
Another cool trick we can pull, is to use the handy `command_not_found_handle` function
to try and execute missing commands in the container on the host.
-## bash or zsh
+### bash or zsh
Place this in your `~/.profile`:
-```shell
+```bash
command_not_found_handle() {
# don't run if not in a container
if [ ! -e /run/.containerenv ] && [ ! -e /.dockerenv ]; then
@@ -91,7 +85,7 @@ fi
And then, run `source ~/.profile` to reload `.profile` in the current session.
-## fish
+### fish
Place this snippet in a new fish function file (`~/.config/fish/functions/fish_command_not_found.fish`):
@@ -109,7 +103,7 @@ end
And restart your terminal. Now when a command does not exist on your container,
it will be automatically executed back on the host:
-```shell
+```bash
user@fedora-distrobox:~$ which podman
/usr/bin/which: no podman in [...]
user@fedora-distrobox:~$ podman version # <-- this is automatically executed on host.
diff --git a/docs/posts/install_lilipod_static.md b/docs/posts/install_lilipod_static.md
index a4472d6c5c..e31157bd2f 100644
--- a/docs/posts/install_lilipod_static.md
+++ b/docs/posts/install_lilipod_static.md
@@ -1,4 +1,6 @@
-# Install Lilipod in a static manner
++++
+title = "Install Lilipod in a Static Manner"
++++
If on your distribution (eg. SteamOS) can be difficult to install something and keep it
between updates, then you could use this guide to install [lilipod](https://github.com/89luca89/lilipod) in your `$HOME`.
diff --git a/docs/posts/install_podman_static.md b/docs/posts/install_podman_static.md
index 29bd99f62c..0c7647f40a 100644
--- a/docs/posts/install_podman_static.md
+++ b/docs/posts/install_podman_static.md
@@ -1,4 +1,6 @@
-# Install Podman in a static manner
++++
+title = "Install Podman in a Static Manner"
++++
If on your distribution (eg. SteamOS) can be difficult to install something and keep it
between updates, then you could use this guide to install `podman` in your `$HOME`.
diff --git a/docs/posts/integrate_vscode_distrobox.md b/docs/posts/integrate_vscode_distrobox.md
index 7ba6be4b58..fecc0dcbf3 100644
--- a/docs/posts/integrate_vscode_distrobox.md
+++ b/docs/posts/integrate_vscode_distrobox.md
@@ -1,15 +1,8 @@
-- [Distrobox](../README.md)
- - [Integrate VSCode and Distrobox](#integrate-vscode-and-distrobox)
- - [From distrobox](#from-distrobox)
- - [From flatpak](#from-flatpak)
- - [First step, install it](#first-step-install-it)
- - [Second step, extensions](#second-step-extensions)
- - [Third step, podman wrapper](#third-step-podman-wrapper)
- - [Final Result](#final-result)
-
----
-
-# Integrate VSCode and Distrobox
++++
+title = "Integrate Vscode and Distrobox"
+[extra]
+toc = true
++++
VScode doesn't need presentations, and it's a powerful tool for development.
You may want to use it, but how to handle the dualism between host and container?
@@ -19,13 +12,13 @@ alternative to VSCode.
Here are a couple of solutions.
-## From distrobox
+## From Distrobox
Well, you could just install VSCode in your Distrobox of choice, and export it!
For example using an Arch Linux container:
-```shell
+```bash
~$ distrobox create --image archlinux:latest --name arch-distrobox
~$ distrobox enter --name arch-distrobox
user@arch-distrobox:~$
@@ -34,13 +27,13 @@ user@arch-distrobox:~$
Download the deb file
[HERE](https://github.com/VSCodium/vscodium/releases), or in Arch case just install
-```shell
+```bash
user@arch-distrobox:~$ sudo pacman -S code
```
Now that we have installed it, we can export it:
-```shell
+```bash
user@ubuntu-distrobox:~$ distrobox-export --app code
```
@@ -49,9 +42,9 @@ the Distrobox itself, so it will have access to all the software and tools insid
it without problems.

-
+
-## From flatpak
+## From Flatpak
Alternatively you may want to install VSCode on your host. We will explore how
to integrate VSCode installed via **Flatpak** with Distrobox.
@@ -59,19 +52,19 @@ to integrate VSCode installed via **Flatpak** with Distrobox.
For this one you'll need to use VSCode from Microsoft, and not VSCodium, in order
to have access to the remote containers extension.
-### First step install it
+### First Step Install It
-```shell
+```bash
~$ flatpak install --user app/com.visualstudio.code
```
-### Second step, extensions
+### Second Step, Extensions
Now we want to install VSCode [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
-
+
-### Third step podman wrapper
+### Third Step Podman Wrapper
Being in a Flatpak, we will need access to host's `podman` to be
able to use the containers. Place this in your `~/.local/bin/podman-host`
@@ -80,14 +73,14 @@ able to use the containers, use `~/.local/bin/docker-host`
For podman:
-```shell
+```bash
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/podman-host -o ~/.local/bin/podman-host
chmod +x ~/.local/bin/podman-host
```
For docker:
-```shell
+```bash
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/docker-host -o ~/.local/bin/docker-host
chmod +x ~/.local/bin/docker-host
```
@@ -95,7 +88,7 @@ chmod +x ~/.local/bin/docker-host
Open VSCode settings (Ctrl+,) and head to `Remote>Containers>Docker Path` and
set it to the path of `/home//.local/bin/podman-host` (or docker-host in case of docker), like in the example
-
+
This will give a way to execute host's container manager from within the
flatpak app.
@@ -116,14 +109,14 @@ And let's choose our Distrobox
And we're good to go! We have our VSCode remote session inside our Distrobox container!
-
+
-# Open VSCode directly attached to our Distrobox
+## Open VSCode Directly Attached to Our Distrobox
You may want to instead have a more direct way to launch your VSCode when you're already in your project directory,
in this case you can use `vscode-distrobox` script:
-```shell
+```bash
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/vscode-distrobox -o ~/.local/bin/vscode-distrobox
chmod +x ~/.local/bin/vscode-distrobox
```
diff --git a/docs/posts/posts.md b/docs/posts/posts.md
deleted file mode 100644
index 78ac0de8b1..0000000000
--- a/docs/posts/posts.md
+++ /dev/null
@@ -1,13 +0,0 @@
-- [Distrobox](../README.md)
-
----
-
-## Latest posts
-
-- [Execute a command on the Host](execute_commands_on_host.md)
-- [Install Podman in HOME](install_podman_static.md)
-- [Install Lilipod in HOME](install_lilipod_static.md)
-- [Install on Steamdeck](steamdeck_guide.md)
-- [Integrate VSCode and Distrobox](integrate_vscode_distrobox.md)
-- [Run Libvirt using distrobox](run_libvirt_in_distrobox.md)
-- [Run latest GNOME and KDE Plasma using distrobox](run_latest_gnome_kde_on_distrobox.md)
diff --git a/docs/posts/run_latest_gnome_kde_on_distrobox.md b/docs/posts/run_latest_gnome_kde_on_distrobox.md
index ed669ca749..bff2ca2222 100644
--- a/docs/posts/run_latest_gnome_kde_on_distrobox.md
+++ b/docs/posts/run_latest_gnome_kde_on_distrobox.md
@@ -1,22 +1,14 @@
-- [Distrobox](../README.md)
- - [Run latest GNOME and KDE Plasma using distrobox](run_latest_gnome_kde_on_distrobox.md)
- - [Using a stable-release distribution](#using-a-stable-release-distribution)
- - [Initializing the distrobox](#initializing-the-distrobox)
- - [Running Latest GNOME](#running-latest-gnome)
- - [Generate session file - GNOME](#generate-session-file---gnome)
- - [Running Latest Plasma](#running-latest-plasma)
- - [Generate session file - Plasma](#generate-session-file---plasma)
- - [Add a couple of fixes](#add-a-couple-of-fixes)
- - [Using other GUIs](#using-other-guis)
- - [Using apps from host](#using-apps-from-host)
++++
+title = "Using a Stable-Release Distribution"
+[extra]
+toc = true
++++
----
+{% alert(warning=true) %}
+THIS IS EXPERIMENTAL, JUST FOOD FOR THOUGHTS.
-⚠️ **BE CAREFUL**:⚠️ THIS IS EXPERIMENTAL, JUST FOOD FOR THOUGHTS
-
-⚠️ **BE CAREFUL**:⚠️ BUG REPORTS FOR THIS TYPE OF EXPERIMENTS WILL BE TREATED WITH VERY LOW PRIORITY
-
-# Using a stable-release distribution
+BUG REPORTS FOR THIS TYPE OF EXPERIMENTS WILL BE TREATED WITH VERY LOW PRIORITY.
+{% end %}
Lots of people prefer to run a distribution following a stable-LTS release cycle
like Debian, UbuntuLTS or CentOS family (Almalinux, Rocky Linux).
@@ -25,18 +17,18 @@ This ensures great stability on one hand, but package staling on the other.
One way to counter this effect is to use a pet-container managed by Distrobox
to run packages from much newer distributions without giving up on core base os stability.
-## Initializing the distrobox
+## Initializing the Distrobox
For this experiment we'll use Fedora Rawhide as our distrobox, and Centos 8 Stream
as our host, so:
-```shell
+```bash
distrobox create --name fedora-rawhide --init --additional-packages "systemd" --image registry.fedoraproject.org/fedora:rawhide
```
and
-```shell
+```bash
distrobox enter fedora-rawhide
```
@@ -44,7 +36,7 @@ distrobox enter fedora-rawhide
First we need to install GNOME in the container:
-```shell
+```bash
user@fedora-rawhide:~$ sudo dnf groupinstall GNOME
```
@@ -53,7 +45,7 @@ And let's grab a coffee while it finishes :-)
After the `dnf` process finishes, we have GNOME installed in our container,
now how do we use it?
-### Generate session file - GNOME
+### Generate Session File - GNOME
First in the host we need a reliable way to fix the permissions problem of the
`/tmp/.X11-unix` directory. This directory should either belong to `root` or
@@ -62,7 +54,7 @@ container so we need to change the ownership from `root` to `$USER` each time.
Let's add:
-```shell
+```bash
chown -f -R $USER:$USER /tmp/.X11-unix
```
@@ -74,7 +66,7 @@ necessary to run gnome-shell even on wayland.
Then we need to add a desktop file for the session on the **host's** file system,
so that it appears on your login manager (Be it SDDM or GDM)
-```shell
+```bash
[Desktop Entry]
Name=GNOME on Wayland (fedora-rawhide distrobox)
Comment=This session logs you into GNOME
@@ -100,16 +92,16 @@ Centos.
We first need to install Plasma in the container:
-```shell
+```bash
user@fedora-rawhide:~$ sudo dnf groupinstall KDE
```
-### Generate session file - Plasma
+### Generate Session File - Plasma
We need to add a desktop file for the session on the **host's** file system,
so that it appears on your login manager (Be it SSDM or GDM)
-```shell
+```bash
[Desktop Entry]
Exec=/usr/local/bin/distrobox-enter -- /usr/libexec/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland
DesktopNames=KDE
@@ -120,7 +112,7 @@ X-KDE-PluginInfo-Version=5.23.3
This file should be placed under `/usr/local/share/wayland-sessions/distrobox-plasma.desktop`
(If it doesn't show up, you can place it under `/usr/share/xsessions/distrobox-plasma.desktop`)
-### Add a couple of fixes
+### Add a Couple of Fixes
To make Plasma work we need a couple more fixes to run both on the host and in the container.
@@ -131,7 +123,7 @@ container so we need to change the ownership from `root` to `$USER` each time.
Let's add:
-```shell
+```bash
chown -f -R $USER:$USER /tmp/.X11-unix
```
@@ -141,7 +133,7 @@ We also need to add a process in autostart on which Plasma shell relies on a
process called `kactivitymanagerd`. Not having host's systemd at disposal we
can start it simply adding it to the ~/.profile file, add:
-```shell
+```bash
if [ -f /usr/libexec/kactivitymanagerd ]; then
/usr/libexec/kactivitymanagerd & disown
fi
@@ -157,7 +149,7 @@ Let's log out and voilá!
We now are in latest KDE Plasma session inside Fedora Rawhide while our main OS remains
Centos.
-# Using other GUIs
+## Using Other GUIs
Thanks to [J.S. Evans](https://twitter.com/usenetnerd) he experimented and wrote a beautiful blog post
on how to use Distrobox for much more than simply running apps.
@@ -166,8 +158,8 @@ You'll read on how to set up a working Ubuntu container with IceWM running on Xo
[Read the Article HERE](https://cloudyday.tech.blog/2022/05/14/distrobox-is-awesome/)
-# Using apps from host
+## Using Apps from Host
Now that we're in a container session, we may want to still use some of the host's
-apps. Refer to [THIS](execute_commands_on_host.md) to create handlers and wrappers
+apps. Refer to [THIS](@/posts/execute_commands_on_host.md) to create handlers and wrappers
to use the complete selection of host's apps and binaries inside the container.
diff --git a/docs/posts/run_libvirt_in_distrobox.md b/docs/posts/run_libvirt_in_distrobox.md
index 15c55532de..f7ae9a6e5f 100644
--- a/docs/posts/run_libvirt_in_distrobox.md
+++ b/docs/posts/run_libvirt_in_distrobox.md
@@ -1,20 +1,18 @@
-- [Distrobox](../README.md)
- - [Run Libvirt using distrobox](run_libvirt_in_distrobox.md)
- - [Prepare the container](#prepare-the-container)
- - [Launch from the container](#launch-from-the-container)
- - [Connect via SSH](#connect-via-ssh)
-
-# Using an immutable distribution
++++
+title = "Using an Immutable Distribution"
+[extra]
+toc = true
++++
If you are on an immutable distribution (Silverblue/Kionite, Aeon/Kalpa) chances are that
installing lots and lots of packages on the base system is not advisable.
One way is to use a distrobox for them.
-## Prepare the container
+## Prepare the Container
To run libvirt/qemu/kvm we need a systemd container and we need a **rootful** container
-to be able to use it, see [this tip](../useful_tips.md#using-init-system-inside-a-distrobox)
+to be able to use it, see [this tip](@/useful_tips.md#using-init-system-inside-a-distrobox)
to have a list of compatible images.
We will use in this example OpenSUSE's dedicated distrobox image:
@@ -44,14 +42,14 @@ exported_apps="virt-manager"
Alternatively, command line:
-```console
+```bash
distrobox create --pull --root --init --unshare-all --image registry.opensuse.org/opensuse/distrobox:latest --name libvirtd --additional-flags "-p 2222:22" \
--init-hooks "zypper in -y --no-recommends openssh-server patterns-server-kvm_server patterns-server-kvm_tools qemu-arm qemu-ppc qemu-s390x qemu-extra qemu-linux-user qemu-hw-display-virtio-gpu-pci qemu-hw-display-virtio-gpu && systemctl enable sshd.service && systemctl enable virtqemud.socket virtnetworkd.socket virtstoraged.socket virtnodedevd.socket && usermod -aG libvirt $USER"
distrobox-enter --root libvirtd -- distrobox-export --app virt-manager
```
-## Launch from the container
+## Launch from the Container
Simply select the `Virt Manager (on libvirt)` entry in your menu, entry your root password and you're done!
@@ -84,4 +82,4 @@ with your password, insert the same password as the host:
And you should be good to go!
-
+
diff --git a/docs/posts/steamdeck_guide.md b/docs/posts/steamdeck_guide.md
index f3dfcf6b44..a95b861cc9 100644
--- a/docs/posts/steamdeck_guide.md
+++ b/docs/posts/steamdeck_guide.md
@@ -1,3 +1,9 @@
++++
+title = "Install on Steamdeck"
+[extra]
+toc = true
++++
+
Latest SteamOS (version 3.5 and later) already pre-installed `distrobox` and `podman`.
Before using `distrobox` on SteamOS, it may be necessary to upgrade to the latest version since the version provided by
@@ -16,16 +22,16 @@ SteamOS-provided version.
To install `distrobox` in the `$HOME` directory, run the following command:
-```sh
+```bash
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix $HOME
```
For more detailed installation instructions, refer to the documentation
-[here](https://github.com/89luca89/distrobox/blob/main/docs/README.md#alternative-methods).
+[here](@/_index.md#alternative-methods).
To upgrade the version of `distrobox`, follow the instructions provided in the documentation link above.
-### Option 2: Overwrite the provided `distrobox` installation in SteamOS
+### Option 2: Overwrite the Provided `distrobox` Installation in SteamOS
An alternative approach is to upgrade the version of `distrobox` provided by SteamOS. While this simplifies management
as you don't need to modify your PATH and you wouldn't have 2 versions of `distrobox` installed, it comes with the
@@ -33,7 +39,7 @@ downside that your upgrades will be overwritten when SteamOS is updated.
To upgrade the `distrobox` version provided by SteamOS, execute the following commands:
-```sh
+```bash
sudo steamos-readonly disable
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --prefix /usr
sudo steamos-readonly enable
@@ -48,7 +54,7 @@ Once `distrobox` is upgraded, you can use it as normal.
To run GUI application, add following line to `~/.distroboxrc`.
-```sh
+```bash
xhost +si:localuser:$USER >/dev/null
```
@@ -56,21 +62,21 @@ This is needed to ensure the graphical apps can talk to the Xwayland session.
You can now start using `distrobox` on the deck, open the terminal and go:
-```sh
+```bash
distrobox create && distrobox enter
```
-Refer to the [quickstart guide](../README.md#quick-start) and to the [usage docs](../usage/usage.md)
-And don't forget the [useful tips](../useful_tips.md)!
+Refer to the [quickstart guide](@/_index.md#quick-start) and to the [usage docs](@/usage/_index.md)
+And don't forget the [useful tips](@/useful_tips.md)!
-## SteamOS 3.4 and earlier
+## SteamOS 3.4 and Earlier
To install Distrobox on the steamdeck, we can install both `podman` and `distrobox`
inside the `$HOME` so that containers will survive updates.
## Install Podman
-To install podman, [refer to the install guide](install_podman_static.md#):
+To install podman, [refer to the install guide](@/posts/install_podman_static.md):
- Download the latest release of `podman-launcher` and place it in your home and rename it to `podman`,
this example will use `~/.local/bin`
@@ -86,7 +92,7 @@ And `podman` is ready to use!
### Alternative Install Lilipod
-To install [lilipod](https://github.com/89luca89/lilipod), [refer to the install guide](install_lilipod_static.md#):
+To install [lilipod](https://github.com/89luca89/lilipod), [refer to the install guide](@/posts/install_lilipod_static.md):
- Download the latest release of `lilipod` and place it in your home and rename it to `lilipod`,
this example will use `~/.local/bin`
@@ -103,7 +109,7 @@ And `lilipod` is ready to use!
Installing distrobox in HOME is quite straightforward:
- Install `distrobox` in your HOME following the `curl` instructions:
- - [INSTALL](../README.md#curl-or-wget)
+ - [INSTALL](@/_index.md#curl-or-wget)
## Setup ~/.distroboxrc
@@ -112,7 +118,7 @@ correctly in SteamOS
Ensure your `~/.distroboxrc` has this content:
-```sh
+```bash
xhost +si:localuser:$USER >/dev/null
export PIPEWIRE_RUNTIME_DIR=/dev/null
export PATH=$PATH:$HOME/.local/bin
@@ -126,11 +132,11 @@ is not working correctly inside the container, and it's a SteamOS specific issue
`PATH` is needed to ensure distrobox can find the `podman` binary we previously
downloaded.
-## Start using it
+## Start Using It
You can now start using `distrobox` on the deck, open the terminal and go:
`distrobox create && distrobox enter`
-Refer to the [quickstart guide](../README.md#quick-start) and to the [usage docs](../usage/usage.md)
-And don't forget the [useful tips](../useful_tips.md)!
+Refer to the [quickstart guide](@/_index.md#quick-start) and to the [usage docs](@/usage/_index.md)
+And don't forget the [useful tips](@/useful_tips.md)!
diff --git a/docs/style.css b/docs/style.css
deleted file mode 100644
index 5212d773fc..0000000000
--- a/docs/style.css
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
-
- OS Component Website
- ====================
-
- shamelessly stolen CSS from systemd
- https://github.com/systemd/systemd/tree/main/docs
-
-*/
-
-/* GNOME Color Palette */
-:root {
- --rounded-corner: 12px;
- --blue1: rgb(153,193,241);
- --blue2: rgb(98,160,234);
- --blue3: rgb(53,132,228);
- --blue4: rgb(28,113,216);
- --blue5: rgb(26,95,180);
- --green1: rgb(143,240,164);
- --green2: rgb(87,227,137);
- --green3: rgb(51,209,122);
- --green4: rgb(46,194,126);
- --green5: rgb(38,162,105);
- --yellow1: rgb(249,240,107);
- --yellow2: rgb(248,228,92);
- --yellow3: rgb(246,211,45);
- --yellow4: rgb(245,194,17);
- --yellow5: rgb(229,165,10);
- --orange1: rgb(255,190,111);
- --orange2: rgb(255,163,72);
- --orange3: rgb(255,120,0);
- --orange4: rgb(230,97,0);
- --orange5: rgb(198,70,0);
- --red1: rgb(246,97,81);
- --red2: rgb(237,51,59);
- --red3: rgb(224,27,36);
- --red4: rgb(192,28,40);
- --red5: rgb(165,29,45);
- --purple1: rgb(220,138,221);
- --purple2: rgb(192,97,203);
- --purple3: rgb(145,65,172);
- --purple4: rgb(129,61,156);
- --purple5: rgb(97,53,131);
- --brown1: rgb(205,171,143);
- --brown2: rgb(181,131,90);
- --brown3: rgb(152,106,68);
- --brown4: rgb(134,94,60);
- --brown5: rgb(99,69,44);
- --light1: rgb(255,255,255);
- --light2: rgb(246,245,244);
- --light3: rgb(222,221,218);
- --light4: rgb(192,191,188);
- --light5: rgb(154,153,150);
- --dark1: rgb(119,118,123);
- --dark2: rgb(94,92,100);
- --dark3: rgb(61,56,70);
- --dark4: rgb(36,31,49);
- --dark5: rgb(0,0,0);
- --primary-color: var(--medium-armadillo); /* Set your project color */
- --borders: var(--light3);
-
- --dark-armadillo: #4f433c;
- --medium-armadillo: #70594d;
- --light-armadillo: #f0e2d1;
-}
-
-/* Typography */
-
-@font-face {
- font-family: 'Inter Var';
- font-weight: 100 900;
- font-display: swap;
- font-style: oblique 0deg 10deg;
- src: url("fonts/Inter.var.woff2?v=3.19") format("woff2");
-}
-
-* {
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-html, body {
- margin: 0;
- padding: 0;
- font-size: 16px;
- font-family: "Inter Var", sans-serif;
- font-weight: 400;
- line-height: 1.6;
- scroll-behavior: smooth;
-}
-body {
- color: #241f31;
- background-color: #f6f5f4;
- /* ⇩⇩ put footer at the bottom for short pages, such as the 404 ⇩⇩ */
- display: grid;
- min-height: 100vh;
- grid-template-rows: auto minmax(auto,1fr) auto; /* header, stuff, footer */
-}
-h1, h2, h3, h4, h5, h6 {
- margin: 3rem 0 1rem;
- font-weight: 600;
- line-height: 1.25;
- font-variation-settings: "wght" 600; /* needed for webkit */
-}
-
-h1 {
- font-size: 1.5rem;
- font-weight: 100;
- font-style: normal;
- margin: 3rem 0 1rem;
-}
-
-@media screen and (min-width: 650px) {
- h1 {
- font-size: 1.6rem;
- }
-}
-h2 {
- font-size: 1.2rem;
-}
-
-@media (prefers-color-scheme: dark) {
- body {
- filter: invert(100%) hue-rotate(180deg);
- }
-
- html {
- background-color: var(--dark5);
- }
-
- img, video, iframe {
- filter: invert(100%) hue-rotate(180deg);
- }
-}
-
-a {
- font-weight: 600;
- text-decoration: none;
- color: var(--primary-color);
- cursor: pointer;
- font-variation-settings: "wght" 600; /* needed for webkit */
-}
-a:hover {
- text-decoration: underline;
-}
-b {
- font-weight: 600;
-}
-small {
- color: #777;
-}
-hr {
- margin: 3rem auto 4rem;
- width: 40%;
- opacity: 40%;
-}
-
-img {
- display: block;
- margin: 2rem auto;
- max-width: 100%;
- }
- img.full { width: 100%; }
- img.pixels {
- image-rendering: crisp-edges; /* older firefox browsers */
- image-rendering: pixelated;
- }
-
-
-/* Layout */
-.container {
- width: 80%;
- margin-left: auto;
- margin-right: auto;
- max-width: 720px;
-}
-
-/* Singletons */
-#logo {
- display: block;
- width: 251px; height: 26px;
- background: url('assets/page-logo.svg') no-repeat center;
- padding: 5rem 0 3rem;
- margin: 0 auto;
- position: relative;
-}
- #logo a {
- display: block;
- position: absolute;
- top: 0; left: 0; right: 0; bottom: 0;
- color: rgba(0,0,0,0); /* make text transparent */
- cursor: pointer;
- }
-.page-logo > img {
- margin: 0 auto;
-}
-
- @media (prefers-color-scheme: dark) {
- #logo {
- filter: invert(100%) hue-rotate(180deg); /* uninvert */
- background-image: url('assets/page-logo-i.svg');
- }
- }
-
-.brand-white {
- background-color: #fff;
-}
-
-.brand-green {
- background-color: #30D475;
-}
-
-.brand-black {
- background-color: #201A26;
- color: white;
-}
-
-.page-link::after {
- content: " ➜";
-}
-
-
-/* Footer */
-footer {
- text-align: center;
- padding: 3em 0 3em;
- font-size: 1em;
- margin-top: 4rem;
-}
-
-/* Make tables vertically aligned to the top */
-tbody td {
- vertical-align: top;
-}
-
-/* Github Code Highlighting */
-.highlight table td { padding: 5px; }
-.highlight table pre { margin: 0; }
-.highlight .cm {
- color: #999988;
- font-style: italic;
-}
-.highlight .cp {
- color: #999999;
- font-weight: bold;
-}
-.highlight .c1 {
- color: #999988;
- font-style: italic;
-}
-.highlight .cs {
- color: #999999;
- font-weight: bold;
- font-style: italic;
-}
-.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf {
- color: #999988;
- font-style: italic;
-}
-.highlight .err {
- color: #a61717;
- background-color: #e3d2d2;
-}
-.highlight .gd {
- color: #000000;
- background-color: #ffdddd;
-}
-.highlight .ge {
- color: #000000;
- font-style: italic;
-}
-.highlight .gr {
- color: #aa0000;
-}
-.highlight .gh {
- color: #999999;
-}
-.highlight .gi {
- color: #000000;
- background-color: #ddffdd;
-}
-.highlight .go {
- color: #888888;
-}
-.highlight .gp {
- color: #555555;
-}
-.highlight .gs {
- font-weight: bold;
-}
-.highlight .gu {
- color: #aaaaaa;
-}
-.highlight .gt {
- color: #aa0000;
-}
-.highlight .kc {
- color: #000000;
- font-weight: bold;
-}
-.highlight .kd {
- color: #000000;
- font-weight: bold;
-}
-.highlight .kn {
- color: #000000;
- font-weight: bold;
-}
-.highlight .kp {
- color: #000000;
- font-weight: bold;
-}
-.highlight .kr {
- color: #000000;
- font-weight: bold;
-}
-.highlight .kt {
- color: #445588;
- font-weight: bold;
-}
-.highlight .k, .highlight .kv {
- color: #000000;
- font-weight: bold;
-}
-.highlight .mf {
- color: #009999;
-}
-.highlight .mh {
- color: #009999;
-}
-.highlight .il {
- color: #009999;
-}
-.highlight .mi {
- color: #009999;
-}
-.highlight .mo {
- color: #009999;
-}
-.highlight .m, .highlight .mb, .highlight .mx {
- color: #009999;
-}
-.highlight .sb {
- color: #d14;
-}
-.highlight .sc {
- color: #d14;
-}
-.highlight .sd {
- color: #d14;
-}
-.highlight .s2 {
- color: #d14;
-}
-.highlight .se {
- color: #d14;
-}
-.highlight .sh {
- color: #d14;
-}
-.highlight .si {
- color: #d14;
-}
-.highlight .sx {
- color: #d14;
-}
-.highlight .sr {
- color: #009926;
-}
-.highlight .s1 {
- color: #d14;
-}
-.highlight .ss {
- color: #990073;
-}
-.highlight .s, .highlight .sa, .highlight .dl {
- color: #d14;
-}
-.highlight .na {
- color: #008080;
-}
-.highlight .bp {
- color: #999999;
-}
-.highlight .nb {
- color: #0086B3;
-}
-.highlight .nc {
- color: #445588;
- font-weight: bold;
-}
-.highlight .no {
- color: #008080;
-}
-.highlight .nd {
- color: #3c5d5d;
- font-weight: bold;
-}
-.highlight .ni {
- color: #800080;
-}
-.highlight .ne {
- color: #990000;
- font-weight: bold;
-}
-.highlight .nf, .highlight .fm {
- color: #990000;
- font-weight: bold;
-}
-.highlight .nl {
- color: #990000;
- font-weight: bold;
-}
-.highlight .nn {
- color: #555555;
-}
-.highlight .nt {
- color: #000080;
-}
-.highlight .vc {
- color: #008080;
-}
-.highlight .vg {
- color: #008080;
-}
-.highlight .vi {
- color: #008080;
-}
-.highlight .nv, .highlight .vm {
- color: #008080;
-}
-.highlight .ow {
- color: #000000;
- font-weight: bold;
-}
-.highlight .o {
- color: #000000;
- font-weight: bold;
-}
-.highlight .w {
- color: #bbbbbb;
-}
-.highlight {
- background-color: #f8f8f8;
-}
-
-
-/* Code Blocks */
-.highlighter-rouge {
- padding: 2px 1rem;
- border-radius: 5px;
- background-color: var(--light1);
- max-width: 100%;
- overflow-x: auto;
-}
- @media only screen and (max-device-width : 480px) {
- /*mobile*/
- .highlighter-rouge { max-width: 80vw; }
- }
-
-.highlighter-rouge * {
- background-color: var(--light1);
-}
-
-/* Inline Code */
-code.highlighter-rouge {
- padding: 2px 6px;
- background-color: rgba(0,0,0, 0.07);
-}
-
-/* Buttons */
-
-.dialog-buttons {
- display: flex;
- flex-direction: row;
- align-items: baseline;
- justify-content: space-between;
- margin-top: 6rem;
-}
-
-.inline-button {
- display: inline-block;
- font-weight: 900;
- font-size: 90%;
- padding: .4rem 1rem;
- border-radius: var(--rounded-corner);
- background-color: rgba(0,0,0,0.05);
- color: var(--dark5);
-}
diff --git a/docs/usage/_index.md b/docs/usage/_index.md
new file mode 100644
index 0000000000..9bb7143fd7
--- /dev/null
+++ b/docs/usage/_index.md
@@ -0,0 +1,21 @@
++++
+title = "Usage"
++++
+
+## Outside the Distrobox
+
+- [distrobox-assemble](@/usage/distrobox-assemble.md)
+- [distrobox-create](@/usage/distrobox-create.md)
+- [distrobox-enter](@/usage/distrobox-enter.md)
+- [distrobox-ephemeral](@/usage/distrobox-ephemeral.md)
+- [distrobox-list](@/usage/distrobox-list.md)
+- [distrobox-rm](@/usage/distrobox-rm.md)
+- [distrobox-stop](@/usage/distrobox-stop.md)
+- [distrobox-upgrade](@/usage/distrobox-upgrade.md)
+- [distrobox-generate-entry](@/usage/distrobox-generate-entry.md)
+
+## Inside the Distrobox
+
+- [distrobox-export](@/usage/distrobox-export.md)
+- [distrobox-host-exec](@/usage/distrobox-host-exec.md)
+- [distrobox-init](@/usage/distrobox-init.md)
diff --git a/docs/usage/distrobox-assemble.md b/docs/usage/distrobox-assemble.md
index dffba3b66e..c4d8da3cb2 100644
--- a/docs/usage/distrobox-assemble.md
+++ b/docs/usage/distrobox-assemble.md
@@ -1,17 +1,23 @@
++++
+title = "distrobox-assemble"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox assemble
distrobox-assemble
-# DESCRIPTION
+## DESCRIPTION
distrobox-assemble takes care of creating or destroying containers in batches,
based on a manifest file.
The manifest file by default is `./distrobox.ini`, but can be specified using the
`--file` flag.
-# SYNOPSIS
+## SYNOPSIS
**distrobox assemble**
@@ -22,7 +28,7 @@ The manifest file by default is `./distrobox.ini`, but can be specified using th
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
This is an example manifest file to create two containers:
@@ -119,7 +125,7 @@ declared multiple times to be compounded:
| additional_flags | string_list | Additional flags to pass to the container manager |
| additional_packages | string_list | Additional packages to install inside the container |
| home | string | Which home directory should the container use |
-| image | string | Which image should the container use, look [here](../compatibility.md) for a list |
+| image | string | Which image should the container use, look [here](@/compatibility.md) for a list |
| init_hooks | string_list | Commands to run inside the container, after the packages setup |
| pre_init_hooks | string_list | Commands to run inside the container, before the packages setup |
| volume | string_list | Additional volumes to mount inside the containers |
@@ -138,7 +144,7 @@ declared multiple times to be compounded:
| unshare_devsys | bool | Specify if the container should unshare /dev (default: false) |
| unshare_all | bool | Specify if the container should unshare all the previous options (default: false) |
-For further explanation of each of the option in the list, take a look at the [distrobox create usage](distrobox-create.md#synopsis),
+For further explanation of each of the option in the list, take a look at the [distrobox create usage](@/usage/distrobox-create.md#synopsis),
each option corresponds to one of the `create` flags.
**Advanced example**
diff --git a/docs/usage/distrobox-create.md b/docs/usage/distrobox-create.md
index 73869856e3..d72628d046 100644
--- a/docs/usage/distrobox-create.md
+++ b/docs/usage/distrobox-create.md
@@ -1,17 +1,23 @@
++++
+title = "distrobox-create"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox create
distrobox-create
-# DESCRIPTION
+## DESCRIPTION
distrobox-create takes care of creating the container with input name and image.
The created container will be tightly integrated with the host, allowing sharing of
the HOME directory of the user, external storage, external usb devices and
graphical apps (X11/Wayland), and audio.
-# SYNOPSIS
+## SYNOPSIS
**distrobox create**
@@ -51,14 +57,14 @@ graphical apps (X11/Wayland), and audio.
--absolutely-disable-root-password-i-am-really-positively-sure: ⚠️ ⚠️ when setting up a rootful distrobox, this will skip user password setup, leaving it blank. ⚠️ ⚠️
-# COMPATIBILITY
+## COMPATIBILITY
for a list of compatible images and container managers, please consult the man page:
man distrobox
man distrobox-compatibility
or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros
-# EXAMPLES
+## EXAMPLES
Create a distrobox with image alpine, called my-alpine container
@@ -124,7 +130,7 @@ Use environment variables to specify container name, image and container manager
DBX_CONTAINER_MANAGER="docker" DBX_NON_INTERACTIVE=1 DBX_CONTAINER_NAME=test-alpine DBX_CONTAINER_IMAGE=alpine distrobox-create
-# ENVIRONMENT VARIABLES
+## ENVIRONMENT VARIABLES
DBX_CONTAINER_ALWAYS_PULL
DBX_CONTAINER_CUSTOM_HOME
@@ -139,7 +145,7 @@ Use environment variables to specify container name, image and container manager
DBX_CONTAINER_HOME_PREFIX defines where containers' home directories will be located.
If you define it as ~/dbx then all future containers' home directories will be ~/dbx/$container_name
-# EXTRA
+## EXTRA
The `--additional-flags` or `-a` is useful to modify defaults in the container creations.
For example:
@@ -221,7 +227,7 @@ leaving it blank.
From version 1.4.0 of distrobox, when you create a new container, it will also generate
an entry in the applications list.
-## NVidia integration
+### NVidia integration
If your host has an NVidia gpu, with installed proprietary drivers, you can integrate
them with the guests by using the `--nvidia` flag:
diff --git a/docs/usage/distrobox-enter.md b/docs/usage/distrobox-enter.md
index 63ac035a98..14f25c44ea 100644
--- a/docs/usage/distrobox-enter.md
+++ b/docs/usage/distrobox-enter.md
@@ -1,10 +1,16 @@
++++
+title = "distrobox-enter"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox enter
distrobox-enter
-# DESCRIPTION
+## DESCRIPTION
distrobox-enter takes care of entering the container with the name specified.
Default command executed is your SHELL, but you can specify different shells or
@@ -12,7 +18,7 @@ entire commands to execute.
If using it inside a script, an application, or a service, you can specify the
--headless mode to disable tty and interactivity.
-# SYNOPSIS
+## SYNOPSIS
**distrobox enter**
@@ -29,7 +35,7 @@ If using it inside a script, an application, or a service, you can specify the
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
Enter a distrobox named "example"
@@ -53,14 +59,14 @@ You can also use environment variables to specify container manager and containe
DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-enter
-# ENVIRONMENT VARIABLES
+## ENVIRONMENT VARIABLES
DBX_CONTAINER_NAME
DBX_CONTAINER_MANAGER
DBX_SKIP_WORKDIR
DBX_SUDO_PROGRAM
-# EXTRA
+## EXTRA
This command is used to enter the distrobox itself. Personally, I just create multiple profiles in
my `gnome-terminal` to have multiple distros accessible.
diff --git a/docs/usage/distrobox-ephemeral.md b/docs/usage/distrobox-ephemeral.md
index 5c0e25d393..820852d445 100644
--- a/docs/usage/distrobox-ephemeral.md
+++ b/docs/usage/distrobox-ephemeral.md
@@ -1,15 +1,21 @@
++++
+title = "distrobox-ephemeral"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox ephemeral
distrobox-ephemeral
-# DESCRIPTION
+## DESCRIPTION
distrobox-ephemeral creates a temporary distrobox that is automatically destroyed
when the command is terminated.
-# SYNOPSIS
+## SYNOPSIS
**distrobox ephemeral**
@@ -21,19 +27,19 @@ when the command is terminated.
--/-e: end arguments execute the rest as command to execute at login default: default ${USER}'s shell
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
distrobox-ephemeral --image alpine:latest -- cat /etc/os-release
distrobox-ephemeral --root --verbose --image alpine:latest --volume /opt:/opt
-You can also use [flags from **distrobox-create**](distrobox-create.md) to customize the ephemeral container to run.
+You can also use [flags from **distrobox-create**](@/usage/distrobox-create.md) to customize the ephemeral container to run.
-# SEE ALSO
+## SEE ALSO
distrobox-create --help
man distrobox-create
-# ENVIRONMENT VARIABLES
+## ENVIRONMENT VARIABLES
distrobox-ephemeral calls distrobox-create, SEE ALSO distrobox-create(1) for
a list of supported environment variables to use.
diff --git a/docs/usage/distrobox-export.md b/docs/usage/distrobox-export.md
index 21bbdd4848..2674d48961 100644
--- a/docs/usage/distrobox-export.md
+++ b/docs/usage/distrobox-export.md
@@ -1,10 +1,16 @@
++++
+title = "distrobox-export"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox-export
-# DESCRIPTION
+## DESCRIPTION
**Application and binary exporting**
@@ -14,7 +20,7 @@ to the host.
The exported app will be easily available in your normal launcher and it will
automatically be launched from the container it is exported from.
-# SYNOPSIS
+## SYNOPSIS
**distrobox-export**
@@ -37,7 +43,7 @@ automatically be launched from the container it is exported from.
You may want to install graphical applications or CLI tools in your distrobox.
Using `distrobox-export` from **inside** the container will let you use them from the host itself.
-# EXAMPLES
+## EXAMPLES
distrobox-export --app mpv [--extra-flags "flags"] [--delete] [--sudo]
distrobox-export --bin /path/to/bin [--export-path ~/.local/bin] [--extra-flags "flags"] [--delete] [--sudo]
diff --git a/docs/usage/distrobox-generate-entry.md b/docs/usage/distrobox-generate-entry.md
index 8f3c94e293..2cd9febfe8 100644
--- a/docs/usage/distrobox-generate-entry.md
+++ b/docs/usage/distrobox-generate-entry.md
@@ -1,14 +1,20 @@
++++
+title = "distrobox-generate-entry"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox generate-entry
-# DESCRIPTION
+## DESCRIPTION
distrobox-generate-entry will create a desktop icon for one of the available distroboxes.
This will be then deleted when you remove the matching distrobox.
-# SYNOPSIS
+## SYNOPSIS
**distrobox generate-entry**
@@ -20,7 +26,7 @@ This will be then deleted when you remove the matching distrobox.
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
Generate an entry for a container
diff --git a/docs/usage/distrobox-host-exec.md b/docs/usage/distrobox-host-exec.md
index 6d8b605055..8466663c70 100644
--- a/docs/usage/distrobox-host-exec.md
+++ b/docs/usage/distrobox-host-exec.md
@@ -1,9 +1,15 @@
++++
+title = "distrobox-host-exec"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox-host-exec
-# DESCRIPTION
+## DESCRIPTION
distrobox-host-exec lets one execute command on the host, while inside of a container.
@@ -11,7 +17,7 @@ Under the hood, distrobox-host-exec uses `host-spawn` a project that lets us
execute commands back on the host.
If the tool is not found the user will be prompted to install it.
-# SYNOPSIS
+## SYNOPSIS
Just pass to "distrobox-host-exec" any command and all its arguments, if any.
@@ -33,7 +39,7 @@ Alternatively, use symlinks to make `distrobox-host-exec` execute as that comman
~$: podman version
...this is executed on host...
-# EXAMPLES
+## EXAMPLES
distrobox-host-exec ls
distrobox-host-exec bash -l
diff --git a/docs/usage/distrobox-init.md b/docs/usage/distrobox-init.md
index 5353ddb773..3ae12804c1 100644
--- a/docs/usage/distrobox-init.md
+++ b/docs/usage/distrobox-init.md
@@ -1,9 +1,15 @@
++++
+title = "distrobox-init"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox-init
-# DESCRIPTION
+## DESCRIPTION
**Init the distrobox (not to be launched manually)**
@@ -18,7 +24,7 @@ distrobox-init will take care of installing missing dependencies (eg. sudo), set
up the user and groups, mount directories from the host to ensure the tight
integration.
-# SYNOPSIS
+## SYNOPSIS
**distrobox-init**
@@ -36,7 +42,7 @@ integration.
--version/-V: show version
--: end arguments execute the rest as command to execute during init
-# EXAMPLES
+## EXAMPLES
distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user
distrobox-init --upgrade
diff --git a/docs/usage/distrobox-list.md b/docs/usage/distrobox-list.md
index c0234796f9..de4c0da83e 100644
--- a/docs/usage/distrobox-list.md
+++ b/docs/usage/distrobox-list.md
@@ -1,15 +1,21 @@
++++
+title = "distrobox-list"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox list
distrobox-list
-# DESCRIPTION
+## DESCRIPTION
distrobox-list lists available distroboxes. It detects them and lists them separately
from the rest of normal containers.
-# SYNOPSIS
+## SYNOPSIS
**distrobox list**
@@ -21,7 +27,7 @@ from the rest of normal containers.
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
distrobox-list
@@ -29,7 +35,7 @@ You can also use environment variables to specify container manager
DBX_CONTAINER_MANAGER="docker" distrobox-list
-# ENVIRONMENT VARIABLES
+## ENVIRONMENT VARIABLES
DBX_CONTAINER_MANAGER
DBX_SUDO_PROGRAM
diff --git a/docs/usage/distrobox-rm.md b/docs/usage/distrobox-rm.md
index f3c1f5559d..f2416ff87f 100644
--- a/docs/usage/distrobox-rm.md
+++ b/docs/usage/distrobox-rm.md
@@ -1,14 +1,20 @@
++++
+title = "distrobox-rm"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox rm
distrobox-rm
-# DESCRIPTION
+## DESCRIPTION
distrobox-rm delete one of the available distroboxes.
-# SYNOPSIS
+## SYNOPSIS
**distrobox rm**
@@ -22,7 +28,7 @@ distrobox-rm delete one of the available distroboxes.
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
distrobox-rm container-name [--force] [--all]
@@ -30,7 +36,7 @@ You can also use environment variables to specify container manager and name:
DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-rm
-# ENVIRONMENT VARIABLES
+## ENVIRONMENT VARIABLES
DBX_CONTAINER_MANAGER
DBX_CONTAINER_NAME
diff --git a/docs/usage/distrobox-stop.md b/docs/usage/distrobox-stop.md
index ecd5c6f982..d7b51b4078 100644
--- a/docs/usage/distrobox-stop.md
+++ b/docs/usage/distrobox-stop.md
@@ -1,17 +1,23 @@
++++
+title = "distrobox-stop"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox stop
distrobox-stop
-# DESCRIPTION
+## DESCRIPTION
distrobox-stop stop a running distrobox.
Distroboxes are left running, even after exiting out of them, so that
subsequent enters are really quick. This is how they can be stopped.
-# SYNOPSIS
+## SYNOPSIS
**distrobox stop**
@@ -24,7 +30,7 @@ subsequent enters are really quick. This is how they can be stopped.
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
distrobox-stop container-name1 container-name2
distrobox-stop container-name
@@ -34,7 +40,7 @@ You can also use environment variables to specify container manager and name:
DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-stop
-# ENVIRONMENT VARIABLES
+## ENVIRONMENT VARIABLES
DBX_CONTAINER_MANAGER
DBX_CONTAINER_NAME
diff --git a/docs/usage/distrobox-upgrade.md b/docs/usage/distrobox-upgrade.md
index 3b0a490126..26f443cab1 100644
--- a/docs/usage/distrobox-upgrade.md
+++ b/docs/usage/distrobox-upgrade.md
@@ -1,14 +1,20 @@
++++
+title = "distrobox-upgrade"
+[extra]
+toc = true
++++
+
-# NAME
+## NAME
distrobox-upgrade
-# DESCRIPTION
+## DESCRIPTION
distrobox-upgrade will enter the specified list of containers and will perform
an upgrade using the container's package manager.
-# SYNOPSIS
+## SYNOPSIS
**distrobox upgrade**
@@ -21,7 +27,7 @@ an upgrade using the container's package manager.
--verbose/-v: show more verbosity
--version/-V: show version
-# EXAMPLES
+## EXAMPLES
Upgrade all distroboxes
diff --git a/docs/usage/usage.md b/docs/usage/usage.md
deleted file mode 100644
index 6c89ee2fad..0000000000
--- a/docs/usage/usage.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-- [Distrobox](../README.md)
- - [Outside the distrobox](#outside-the-distrobox)
- - [distrobox-assemble](distrobox-assemble.md)
- - [distrobox-create](distrobox-create.md)
- - [distrobox-enter](distrobox-enter.md)
- - [distrobox-ephemeral](distrobox-ephemeral.md)
- - [distrobox-list](distrobox-list.md)
- - [distrobox-rm](distrobox-rm.md)
- - [distrobox-stop](distrobox-stop.md)
- - [distrobox-upgrade](distrobox-upgrade.md)
- - [distrobox-generate-entry](distrobox-generate-entry.md)
- - [Inside the distrobox](#inside-the-distrobox)
- - [distrobox-export](distrobox-export.md)
- - [distrobox-host-exec](distrobox-host-exec.md)
- - [distrobox-init](distrobox-init.md)
diff --git a/docs/useful_tips.md b/docs/useful_tips.md
index 500ec6cf55..19b009a87a 100644
--- a/docs/useful_tips.md
+++ b/docs/useful_tips.md
@@ -1,91 +1,72 @@
-- [Distrobox](README.md)
- - [Launch a distrobox from you applications list](#launch-a-distrobox-from-you-applications-list)
- - [Create a distrobox with a custom HOME directory](#create-a-distrobox-with-a-custom-home-directory)
- - [Mount additional volumes in a distrobox](#mount-additional-volumes-in-a-distrobox)
- - [Use a different shell than the host](#use-a-different-shell-than-the-host)
- - [Run the container with real root](#run-the-container-with-real-root)
- - [Run Debian/Ubuntu container behind proxy](#run-debianubuntu-container-behind-proxy)
- - [Using a command other than sudo to run a rootful container](#using-a-command-other-than-sudo-to-run-a-rootful-container)
- - [Duplicate an existing distrobox](#duplicate-an-existing-distrobox)
- - [Export to the host](#export-to-the-host)
- - [Execute commands on the host](#execute-commands-on-the-host)
- - [Resolve "Error cannot open display: :0"](#resolve-error-cannot-open-display-0)
- - [Using init system inside a distrobox](#using-init-system-inside-a-distrobox)
- - [Using Docker inside a Distrobox](#using-docker-inside-a-distrobox)
- - [Using Podman inside a Distrobox](#using-podman-inside-a-distrobox)
- - [Using LXC inside a Distrobox](#using-lxc-inside-a-distrobox)
- - [Using Waydroid inside a Distrobox](#using-waydroid-inside-a-distrobox)
- - [Manual Installation](#manual-installation)
- - [Automated Installation](#automated-installation)
- - [Using host's Podman or Docker inside a Distrobox](#using-hosts-podman-or-docker-inside-a-distrobox)
- - [Using distrobox as main cli](#using-distrobox-as-main-cli)
- - [Using a different architecture](#using-a-different-architecture)
- - [Using the GPU inside the container](#using-the-gpu-inside-the-container)
- - [Using nvidia-container-toolkit](#using-nvidia-container-toolkit)
- - [Slow creation on podman and image size getting bigger with distrobox create](#slow-creation-on-podman-and-image-size-getting-bigger-with-distrobox-create)
- - [Container save and restore](#container-save-and-restore)
- - [Check used resources](#check-used-resources)
- - [Pre-installing additional package repositories](#pre-installing-additional-package-repositories)
- - [Apply resource limitation on the fly](#apply-resource-limitation-on-the-fly)
- - [Copy/yank text to host clipboard](#copy-text-to-host-clipboard)
++++
+title = "Useful Tips"
+[extra]
+toc = true
++++
----
-
-# Useful tips
-
-## Detect if you're in a distrobox
+## Detect If You're in a Distrobox
Being this tightly integrated, it may be useful to know when you're in a container or not.
To detect you can just check the environment variable `"${CONTAINER_ID}"`, if set, you're in a distrobox.
-## Launch a distrobox from you applications list
+## Launch a Distrobox from You Applications List
Starting from distrobox 1.4.0, containers created will automatically generate a desktop entry.
-For containers generated with older versions, you can use:
+For contaias ners generated with older versions, you can use:
-`distrobox generate-entry you-container-name`
+```bash
+distrobox generate-entry you-container-name
+```
To delete it:
-`distrobox generate-entry you-container-name --delete`
+```bash
+distrobox generate-entry you-container-name --delete
+```
-## Create a distrobox with a custom HOME directory
+## Create a Distrobox with a Custom HOME Directory
`distrobox create` supports the use of the `--home` flag, as specified in the
-usage [HERE](./usage/distrobox-create.md)
+usage [HERE](@/usage/distrobox-create.md)
Simply use:
-`distrobox create --name test --image your-chosen-image:tag --home /your/custom/home`
+```bash
+distrobox create --name test --image your-chosen-image:tag --home /your/custom/home
+```
-## Mount additional volumes in a distrobox
+## Mount Additional Volumes in a Distrobox
`distrobox create` supports the use of the `--volume` flag, as specified in the
-usage [HERE](./usage/distrobox-create.md)
+usage [HERE](@/usage/distrobox-create.md)
Simply use:
-`distrobox create --name test --image your-chosen-image:tag --volume /your/custom/volume/path`
+```bash
+distrobox create --name test --image your-chosen-image:tag --volume /your/custom/volume/path
+```
-## Use a different shell than the host
+## Use a Different Shell than the Host
From version 1.4.0, `distrobox enter` will execute the login shell of the container's user
by default. So, just change the default shell in the container using:
-`chsh -s /bin/shell-to-use`
+```bash
+chsh -s /bin/shell-to-use
+```
exit and log back in the container.
For version older than 1.4.0, distrobox will pick up the shell from the host and use it inside the container.
If you want a different one you can use:
-```sh
+```bash
SHELL=/bin/zsh distrobox create -n test
SHELL=/bin/zsh distrobox enter test
```
-## Run the container with real root
+## Run the Container with Real Root
When using podman, distrobox will prefer to use rootless containers. In this mode the `root`
user inside the container is **not** the real `root` user of the host. But it still has
@@ -97,8 +78,8 @@ Running `sudo distrobox` is not supported, instead, it is better to simply use n
command with the `--root` or `-r` flag, so that distrobox can still integrate better
with your `$USER`.
-```console
-:~$ distrobox create --name test --image your-chosen-image:tag --root
+```bash
+~$ distrobox create --name test --image your-chosen-image:tag --root
```
Another use case, what if you want or need to run distrobox with the root user, in a login
@@ -108,25 +89,25 @@ Before the 1.4.3 release, it wasn't possible. We couldn't make a distinction bet
running distrobox via `sudo` from someone logged in as the root user in a shell. Now things are
as easy as it would be if you were creating a rootless container:
-```console
-:~# distrobox create --name your-container --pull --image your-chosen-image:tag`
+```bash
+~# distrobox create --name your-container --pull --image your-chosen-image:tag`
```
And:
-```console
-:~# distrobox enter your-container`
+```bash
+~# distrobox enter your-container`
```
We trust you already know the implications of running distrobox, as well as anything else,
with the root user and that with great power comes great responsibilities.
-## Run Debian/Ubuntu container behind proxy
+## Run Debian/ubuntu Container behind Proxy
It might be that you're trying to set-up your distrobox, but you're stuck behind a proxy.
A simple solution can be crafted using `pre-init-hooks`
-```console
+```bash
proxy=http://my_proxy.domain.example:3128
t="echo 'Acquire::http::Proxy \\\""${proxy}"\\\";' > /etc/apt/apt.conf.d/proxy.conf; echo 'Acquire::https::Proxy \\\""${proxy}"\\\";' >> /etc/apt/apt.conf.d/proxy.conf;"
http_proxy="${proxy}" distrobox create --image debian --name deb --pre-init-hooks "${t}"
@@ -134,7 +115,7 @@ http_proxy="${proxy}" distrobox create --image debian --name deb --pre-init-hook
This way, we're configuring `apt` before using it.
-## Using a command other than sudo to run a rootful container
+## Using a Command Other than Sudo to Run a Rootful Container
When using the `--root` option with Distrobox, internally, it uses `sudo` to be able to
interact with the rootful container through podman/docker, which will prompt for a valid
@@ -144,7 +125,9 @@ display a graphical authentication prompt. If you need this, make sure to specif
the desired command through the `DBX_SUDO_PROGRAM` environment variable
(supported by most `distrobox` subcommands), alongside `--root`. Sample usage:
-`DBX_SUDO_PROGRAM="pkexec" distrobox create --name test --image your-chosen-image:tag --root`
+```bash
+DBX_SUDO_PROGRAM="pkexec" distrobox create --name test --image your-chosen-image:tag --root
+```
Additionally, you may also have any further distrobox commands use `pkexec` (for example)
for rootful containers by appending the line `distrobox_sudo_program="pkexec"`
@@ -171,7 +154,7 @@ So, for example, assume you'd like to use `zenity --password` to prompt for the
You may save a script, e.g. `my-password-prompt`, to somewhere in your machine - say,
to `~/.local/bin/my-password-prompt` - with the following contents:
-```sh
+```bash
#!/bin/sh
zenity --password
```
@@ -181,31 +164,35 @@ replace with the path to your script). Afterwards, make sure `SUDO_ASKPASS` is s
and also ensure `DBX_SUDO_PROGRAM` is set to `sudo --askpass`, and you should be good to go. For example,
running the below command should only prompt the root authentication GUI once throughout the whole process:
-`SUDO_ASKPASS="$HOME/.local/bin/my-password-prompt" DBX_SUDO_PROGRAM="sudo --askpass" distrobox-ephemeral -r`
+```bash
+SUDO_ASKPASS="$HOME/.local/bin/my-password-prompt" DBX_SUDO_PROGRAM="sudo --askpass" distrobox-ephemeral -r
+```
You may make these options persist by specifying those environment variables in your shell's rc file (such as `~/.bashrc`).
Note that this will also work if `distrobox_sudo_program="sudo --askpass"` is specified in one of distrobox's config files
(such as `~/.distroboxrc`), alongside `export SUDO_ASKPASS="/path/to/password/prompt/program"` (for example - however, this
last line is usually better suited to your shell's rc file).
-## Duplicate an existing distrobox
+## Duplicate an Existing Distrobox
It can be useful to just duplicate an already set up environment, to do this,
`distrobox create` supports the use of the
-`--clone` flag, as specified in the usage [HERE](./usage/distrobox-create.md)
+`--clone` flag, as specified in the usage [HERE](@/usage/distrobox-create.md)
Simply use:
-`distrobox create --name test --clone name-of-distrobox-to-clone`
+```bash
+distrobox create --name test --clone name-of-distrobox-to-clone
+```
-## Export to the host
+## Export to the Host
Distrobox supports exporting to the host either binaries or applications.
-[Head over the usage page to have an explanation and examples.](usage/distrobox-export.md)
+[Head over the usage page to have an explanation and examples.](@/usage/distrobox-export.md)
-## Execute commands on the host
+## Execute Commands on the Host
-You can check this little post about [executing commands on the host.](posts/execute_commands_on_host.md)
+You can check this little post about [executing commands on the host.](@/posts/execute_commands_on_host.md)
## Resolve "Error cannot open display: :0"
@@ -214,12 +201,12 @@ install `xhost` on the host machine and run `xhost +si:localuser:$USER`.
If you wish to enable this functionality on future reboots add the above command
to your `~/.distroboxrc`
-```console
+```bash
-$ cat ~/.distroboxrc
xhost +si:localuser:$USER >/dev/null
```
-## Using init system inside a distrobox
+## Using Init System inside a Distrobox
You can use an init system inside the container. You can either use supported
pre-created images, or have to add additional packages.
@@ -235,11 +222,13 @@ Example of such images are:
You can use such feature using:
-`distrobox create -i docker.io/almalinux/8-init --init --name test`
+```bash
+distrobox create -i docker.io/almalinux/8-init --init --name test
+```
If you want to use a non-pre-create image, you'll need to add the additional package:
-```console
+```bash
distrobox create -i alpine:latest --init --additional-packages "openrc" -n test
distrobox create -i debian:stable --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test
distrobox create -i ubuntu:22.04 --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test
@@ -261,7 +250,7 @@ OpenRC running on Alpine Linux
Example use:
-```shell
+```bash
~$ distrobox create -i docker.io/almalinux/8-init --init --name test
user@test:~$ sudo systemctl enable --now sshd
@@ -283,7 +272,7 @@ In order to do this, create a [container with an init system](#using-init-system
Example:
-```sh
+```bash
distrobox create --root \
--image registry.opensuse.org/opensuse/distrobox:latest \
--additional-packages "systemd docker" \
@@ -293,7 +282,7 @@ distrobox create --root \
Inside the container:
-```console
+```bash
luca-linux@tumbleweed:~$ sudo systemctl enable --now docker
luca-linux@tumbleweed:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
@@ -317,7 +306,7 @@ Aug 26 19:23:16 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:16.57
Aug 26 19:23:44 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:44.744144975Z" level=warning msg="cleaning up after shim disconnected" id=bd4cb19537b4c39131b084e04c354712bac71c6d1ced33d6d1d6933ada0507cc namespace=moby
Aug 26 19:23:44 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:44.754027382Z" level=warning msg="cleanup warnings time=\"2023-08-26T19:23:44Z\" level=info msg=\"starting signal loop\" namespace=moby pid=2221 runtime=io.contain>
luca-linux@tumbleweed:~$ sudo docker run --rm -ti alpine
-/ #
+~#
```
## Using Podman inside a Distrobox
@@ -328,7 +317,7 @@ container manager can be anyone of choice.
Example:
-```sh
+```bash
distrobox create \
--image registry.opensuse.org/opensuse/distrobox:latest \
--additional-packages "podman crun" \
@@ -337,7 +326,7 @@ distrobox create \
Inside it install podman, and add subuids for the user:
-```sh
+```bash
sudo usermod --add-subuids 10000-65536 $USER
sudo usermod --add-subgids 10000-65536 $USER
cat << EOF | sudo tee /etc/containers/containers.conf
@@ -356,11 +345,11 @@ EOF
Then you'll be able to use both rootful and rootless podman inside the container:
-```console
+```bash
luca-linux@tumbleweed:~> podman run --rm -ti alpine
-/ #
+~#
luca-linux@tumbleweed:~> sudo podman run --rm -ti alpine
-/ #
+~#
```
## Using LXC inside a Distrobox
@@ -371,7 +360,7 @@ using the **unshare-all flag**, this works with either docker, rootful podman, o
Example:
-```sh
+```bash
distrobox create --root \
--image registry.opensuse.org/opensuse/distrobox:latest \
--additional-packages "systemd lxc" \
@@ -381,7 +370,7 @@ distrobox create --root \
Inside the container we will need to first setup the lxcbr0 network and enable the services:
-```console
+```bash
luca-linux@tumbleweed:~> sudo systemctl enable --now lxc-monitord.service lxc-net.service lxc.service lxcfs.service
Created symlink /etc/systemd/system/multi-user.target.wants/lxc-monitord.service → /usr/lib/systemd/system/lxc-monitord.service.
Created symlink /etc/systemd/system/multi-user.target.wants/lxc-net.service → /usr/lib/systemd/system/lxc-net.service.
@@ -410,7 +399,7 @@ luca-linux@tumbleweed:~> sudo ip address add 10.0.2.100/24 dev lxcbr0
Then we can proceed with the LXC container creation:
-```console
+```bash
luca-linux@tumbleweed:~> sudo lxc-create -n test-nested-lxc -t download
[ ... ] # Here do the interactive rootfs choice, I'll use alpine:edge amd64
@@ -425,7 +414,7 @@ You just created an Alpinelinux edge x86_64 (20230826_13:00) container.
luca-linux@tumbleweed:~> sudo lxc-start test-nested-lxc
luca-linux@tumbleweed:~> sudo lxc-attach test-nested-lxc
-/ # ps aux
+~# ps aux
PID USER TIME COMMAND
1 root 0:00 /sbin/init
266 root 0:00 /sbin/syslogd -t -n
@@ -438,7 +427,7 @@ PID USER TIME COMMAND
372 root 0:00 /sbin/udhcpc -b -R -p /var/run/udhcpc.eth0.pid -i eth0 -x hostname:test-nested-lxc
375 root 0:00 /bin/ash
376 root 0:00 ps aux
-/ #
+~#
```
And you have a working LXC inside your Distrobox container.
@@ -465,7 +454,7 @@ some additional dependencies (tested with Vanilla OS Pico and Debian Sid):
Let's create a rootful and unshared container as follows:
-```sh
+```bash
distrobox create --root \
--image ghcr.io/vanilla-os/pico:main \
--additional-packages "systemd libpam-systemd curl kmod dbus-x11 iptables mutter" \
@@ -520,30 +509,30 @@ ewaydroid --help
Make sure to use the `ewaydroid` command each time you need to work with Waydroid. This command is a
wrapper that sets the proper environment variables to make it work with the host D-Bus.
-## Using host's Podman or Docker inside a Distrobox
+## Using Host's Podman or Docker inside a Distrobox
You can easily control host's instance of docker or podman, using `distrobox-host-exec`
You can use:
-```console
+```bash
sudo ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman
```
or
-```console
+```bash
sudo ln -s /usr/bin/distrobox-host-exec /usr/local/bin/docker
```
This will create a `podman` or `docker` command inside the distrobox that will
transparently execute the command on the host.
-## Using distrobox as main cli
+## Using Distrobox as Main CLI
In case you want (like me) to use your container as the main CLI environment,
it comes handy to use `gnome-terminal` profiles to create a dedicated setup for it:
-
+
Personally, I just bind `Ctrl-Alt-T` to the Distrobox profile and `Super+Enter`
to the Host profile.
@@ -551,7 +540,7 @@ to the Host profile.
For other terminals, there are similar features (profiles) or you can set up a
dedicated shortcut to launch a terminal directly in the distrobox
-## Using a different architecture
+## Using a Different Architecture
In case you want to run a container with a different architecture from your host,
you can leverage the use of `qemu` and support from podman/docker.
@@ -564,7 +553,7 @@ Install on your host the following dependencies:
Then you can easily run the image you like:
-```console
+```bash
~$ uname -m
x86_64
~$ distrobox create -i aarch64/fedora -n fedora-arm64
@@ -576,15 +565,15 @@ aarch64

-## Using the GPU inside the container
+## Using the GPU inside the Container
For Intel and AMD GPUs, the support is baked in, as the containers will install
their latest available mesa/dri drivers.
-For NVidia, you can use the `--nvidia` flag during create, see [distrobox-create](./usage/distrobox-create.md)
+For NVidia, you can use the `--nvidia` flag during create, see [distrobox-create](@/usage/distrobox-create.md)
documentation to discover how to use it.
-```console
+```bash
~$ distrobox create --nvidia --name ubuntu-nvidia --image ubuntu:latest
```
@@ -594,11 +583,11 @@ Alternatively from the `--nvidia` flag, you can use NVidia's own [nvidia-contain
After following the [official guide to set nvidia-ctk up](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html)
you can use it from distrobox doing:
-```console
+```bash
distrobox create --name example-nvidia-toolkit --additional-flags "--runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all" --image nvidia/cuda
```
-## Slow creation on podman and image size getting bigger with distrobox create
+## Slow Creation on Podman and Image Size Getting Bigger with Distrobox Create
For rootless podman 3.4.0 and upward, adding this to your `~/.config/containers/storage.conf`
file will improve container creation speed and fix issues with images getting
@@ -616,12 +605,12 @@ Note that this is necessary only on Kernel version older than `5.11` .
From version `5.11` onwards native `overlayfs` is supported and reports noticeable
gains in performance as explained [HERE](https://www.redhat.com/sysadmin/podman-rootless-overlay)
-## Permission problems when using VirtualBox
+## Permission Problems When Using VirtualBox
If you have VirtualBox installed on your host, you may encounter some permission
problems using **rootless Podman**:
-```log
+```txt
Error: unable to start container "XYZ": runc: runc create failed: unable to start container process: error during container init: error mounting "/dev/vboxusb/002/005" to rootfs at "/dev/vboxusb/002/005": lstat /..../dev/vboxusb/002: permission denied: OCI permission denied
```
@@ -632,14 +621,14 @@ The solution is to install `crun` from your package manager, and recreate your c
crun supports the flag
-```sh
+```bash
run.oci.keep_original_groups=1
```
Which will allow porting the host's group inside the container, thus making it possible
for the rootless container to read vbox files.
-## Container save and restore
+## Container save and Restore
To save, export and reuse an already configured container, you can leverage
`podman save` or `docker save` and `podman import` or `docker import` to
@@ -651,14 +640,14 @@ To save a container to an image:
with podman:
-```sh
+```bash
podman container commit -p distrobox_name image_name_you_choose
podman save image_name_you_choose:latest | bzip2 > image_name_you_choose.tar.bz
```
with docker:
-```sh
+```bash
docker container commit -p distrobox_name image_name_you_choose
docker save image_name_you_choose:latest | gzip > image_name_you_choose.tar.gz
```
@@ -670,19 +659,19 @@ This will create a tar.gz of the container of your choice at that exact moment.
Now you can backup that archive or transfer it to another host, and to restore it
just run
-```sh
+```bash
podman load < image_name_you_choose.tar.bz2
```
or
-```sh
+```bash
docker load < image_name_you_choose.tar.gz
```
And create a new container based on that image:
-```sh
+```bash
distrobox create --image image_name_you_choose:latest --name distrobox_name
distrobox enter --name distrobox_name
```
@@ -690,13 +679,13 @@ distrobox enter --name distrobox_name
And you're good to go, now you can reproduce your personal environment everywhere
in simple (and scriptable) steps.
-## Check used resources
+## Check Used Resources
- You can always check how much space a `distrobox` is taking by using `podman` command:
`podman system df -v` or `docker system df -v`
-## Pre-installing additional package repositories
+## Pre-Installing Additional Package Repositories
On Red Hat Enterprise Linux and its derivatives, the amount of packages in the
base repositories is limited, and additional packages need to be brought in by
@@ -709,19 +698,19 @@ the shell you use on the host is not available in the default repos (e.g.
Use the pre-initialization hooks for this:
-```shell
+```bash
distrobox create -i docker.io/almalinux/8-init --init --name test --pre-init-hooks "dnf -y install dnf-plugins-core && dnf config-manager --enable powertools && dnf -y install epel-release"
```
-```shell
+```bash
distrobox create -i docker.io/library/almalinux:9 -n alma9 --pre-init-hooks "dnf -y install dnf-plugins-core && dnf config-manager --enable crb && dnf -y install epel-release"
```
-```shell
+```bash
distrobox create -i quay.io/centos/centos:stream9 c9s --pre-init-hooks "dnf -y install dnf-plugins-core && dnf config-manager --enable crb && dnf -y install epel-next-release"
```
-## Apply resource limitation on the fly
+## Apply Resource Limitation on the Fly
Podman has `--cpuset-cpus` and `--memory` flags to apply limitation on how much resources a container can use. However,
these flags only work during container creation (`podman create` / `podman run`) and not after it's created
@@ -806,7 +795,7 @@ systemctl --user status libpod-$UUID.scope
Look for the `Drop-In` lines. Something like this should be shown:
-```console
+```bash
Drop-In: /run/user/1000/systemd/transient/libpod-45ae38d61c9a636230b2ba89ea07792d662e01cd9ee38d04feb0a994b039a271.scope.d
└─50-AllowedCPUs.conf
```
@@ -828,7 +817,7 @@ Then reload systemd daemon to apply the changes:
systemctl --user daemon-reload
```
-## Copy text to host clipboard
+## Copy Text to Host Clipboard
To copy/yank text from the container to the host clipboard you need to install
`xsel` in the container for Xorg hosts or `wlroots` for wayland hosts.
diff --git a/site/config.toml b/site/config.toml
new file mode 100644
index 0000000000..d54241bdde
--- /dev/null
+++ b/site/config.toml
@@ -0,0 +1,45 @@
+title = "Distrobox"
+base_url = "https://distrobox.it"
+description = "Use any linux distribution inside your terminal."
+
+theme = "duckquill"
+
+compile_sass = true
+build_search_index = true
+
+[markdown]
+highlight_code = true
+highlight_theme = "css"
+highlight_themes_css = [
+ { theme = "gruvbox-dark", filename = "syntax-theme-dark.css" },
+ { theme = "gruvbox-light", filename = "syntax-theme-light.css" },
+]
+smart_punctuation = true
+bottom_footnotes = true
+
+[search]
+index_format = "elasticlunr_json"
+
+[extra]
+accent_color = "#70594d"
+accent_color_dark = "#f0e2d1"
+fix_contrast_dark = true
+bundled_fonts = true
+show_copy_button = true
+issues_url = "https://github.com/89luca89/distrobox/issues"
+source_url = "https://github.com/89luca89/distrobox/tree/main/docs"
+styles = ["custom.css", "mods.css"]
+
+[extra.nav]
+links = [
+ { url = "@/compatibility.md", name = "Compatibility" },
+ { url = "@/featured_articles.md", name = "Articles" },
+ { url = "@/posts/_index.md", name = "Posts" },
+ { url = "@/usage/_index.md", name = "Usage" },
+ { url = "@/useful_tips.md", name = "Tips" },
+]
+
+[extra.footer]
+show_copyright = true
+show_powered_by = true
+show_source = true
diff --git a/site/content b/site/content
new file mode 120000
index 0000000000..a9594bfe4a
--- /dev/null
+++ b/site/content
@@ -0,0 +1 @@
+../docs
\ No newline at end of file
diff --git a/site/sass/custom.scss b/site/sass/custom.scss
new file mode 100644
index 0000000000..775d364149
--- /dev/null
+++ b/site/sass/custom.scss
@@ -0,0 +1,7 @@
+#badges {
+ text-align: center;
+
+ img {
+ display: inline-block;
+ }
+}
diff --git a/site/sass/mods.scss b/site/sass/mods.scss
new file mode 100644
index 0000000000..30d91e5cc6
--- /dev/null
+++ b/site/sass/mods.scss
@@ -0,0 +1 @@
+@use "../themes/duckquill/sass/mods/modern-hr";
diff --git a/docs/CNAME b/site/static/CNAME
similarity index 100%
rename from docs/CNAME
rename to site/static/CNAME
diff --git a/docs/apple-touch-icon.png b/site/static/apple-touch-icon.png
similarity index 100%
rename from docs/apple-touch-icon.png
rename to site/static/apple-touch-icon.png
diff --git a/docs/assets/brand/distrobox-logo-guidelines.pdf b/site/static/assets/brand/distrobox-logo-guidelines.pdf
similarity index 100%
rename from docs/assets/brand/distrobox-logo-guidelines.pdf
rename to site/static/assets/brand/distrobox-logo-guidelines.pdf
diff --git a/docs/assets/brand/distrobox-symbolic.svg b/site/static/assets/brand/distrobox-symbolic.svg
similarity index 100%
rename from docs/assets/brand/distrobox-symbolic.svg
rename to site/static/assets/brand/distrobox-symbolic.svg
diff --git a/docs/assets/brand/png/distrobox-dark-mono.png b/site/static/assets/brand/png/distrobox-dark-mono.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-dark-mono.png
rename to site/static/assets/brand/png/distrobox-dark-mono.png
diff --git a/docs/assets/brand/png/distrobox-dark-vertical-color.png b/site/static/assets/brand/png/distrobox-dark-vertical-color.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-dark-vertical-color.png
rename to site/static/assets/brand/png/distrobox-dark-vertical-color.png
diff --git a/docs/assets/brand/png/distrobox-dark-vertical-mono.png b/site/static/assets/brand/png/distrobox-dark-vertical-mono.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-dark-vertical-mono.png
rename to site/static/assets/brand/png/distrobox-dark-vertical-mono.png
diff --git a/docs/assets/brand/png/distrobox-dark.png b/site/static/assets/brand/png/distrobox-dark.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-dark.png
rename to site/static/assets/brand/png/distrobox-dark.png
diff --git a/docs/assets/brand/png/distrobox-light-mono.png b/site/static/assets/brand/png/distrobox-light-mono.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-light-mono.png
rename to site/static/assets/brand/png/distrobox-light-mono.png
diff --git a/docs/assets/brand/png/distrobox-light-vertical-color.png b/site/static/assets/brand/png/distrobox-light-vertical-color.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-light-vertical-color.png
rename to site/static/assets/brand/png/distrobox-light-vertical-color.png
diff --git a/docs/assets/brand/png/distrobox-light-vertical-mono.png b/site/static/assets/brand/png/distrobox-light-vertical-mono.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-light-vertical-mono.png
rename to site/static/assets/brand/png/distrobox-light-vertical-mono.png
diff --git a/docs/assets/brand/png/distrobox-light.png b/site/static/assets/brand/png/distrobox-light.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-light.png
rename to site/static/assets/brand/png/distrobox-light.png
diff --git a/docs/assets/brand/png/distrobox-logomark-dark-mono.png b/site/static/assets/brand/png/distrobox-logomark-dark-mono.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-logomark-dark-mono.png
rename to site/static/assets/brand/png/distrobox-logomark-dark-mono.png
diff --git a/docs/assets/brand/png/distrobox-logomark-dark.png b/site/static/assets/brand/png/distrobox-logomark-dark.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-logomark-dark.png
rename to site/static/assets/brand/png/distrobox-logomark-dark.png
diff --git a/docs/assets/brand/png/distrobox-logomark-light-mono.png b/site/static/assets/brand/png/distrobox-logomark-light-mono.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-logomark-light-mono.png
rename to site/static/assets/brand/png/distrobox-logomark-light-mono.png
diff --git a/docs/assets/brand/png/distrobox-logomark-light.png b/site/static/assets/brand/png/distrobox-logomark-light.png
similarity index 100%
rename from docs/assets/brand/png/distrobox-logomark-light.png
rename to site/static/assets/brand/png/distrobox-logomark-light.png
diff --git a/site/static/assets/brand/svg/distrobox-dark-mono.svg b/site/static/assets/brand/svg/distrobox-dark-mono.svg
new file mode 100644
index 0000000000..1a4c8813cb
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-dark-mono.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-dark-vertical-color.svg b/site/static/assets/brand/svg/distrobox-dark-vertical-color.svg
new file mode 100644
index 0000000000..570ba45724
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-dark-vertical-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-dark-vertical-mono.svg b/site/static/assets/brand/svg/distrobox-dark-vertical-mono.svg
new file mode 100644
index 0000000000..36067a0bbc
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-dark-vertical-mono.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-dark.svg b/site/static/assets/brand/svg/distrobox-dark.svg
new file mode 100644
index 0000000000..e133b33558
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-light-mono.svg b/site/static/assets/brand/svg/distrobox-light-mono.svg
new file mode 100644
index 0000000000..b068d623d1
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-light-mono.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-light-vertical-color.svg b/site/static/assets/brand/svg/distrobox-light-vertical-color.svg
new file mode 100644
index 0000000000..4b7c7a9ac0
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-light-vertical-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-light-vertical-mono.svg b/site/static/assets/brand/svg/distrobox-light-vertical-mono.svg
new file mode 100644
index 0000000000..afd08da466
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-light-vertical-mono.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-light.svg b/site/static/assets/brand/svg/distrobox-light.svg
new file mode 100644
index 0000000000..571060e411
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-logomark-dark-mono.svg b/site/static/assets/brand/svg/distrobox-logomark-dark-mono.svg
new file mode 100644
index 0000000000..0c4a8a8286
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-logomark-dark-mono.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-logomark-dark.svg b/site/static/assets/brand/svg/distrobox-logomark-dark.svg
new file mode 100644
index 0000000000..539a4addf2
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-logomark-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-logomark-light-mono.svg b/site/static/assets/brand/svg/distrobox-logomark-light-mono.svg
new file mode 100644
index 0000000000..e593198e3a
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-logomark-light-mono.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/brand/svg/distrobox-logomark-light.svg b/site/static/assets/brand/svg/distrobox-logomark-light.svg
new file mode 100644
index 0000000000..a7544f21ea
--- /dev/null
+++ b/site/static/assets/brand/svg/distrobox-logomark-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/assets/distro-box.webp b/site/static/assets/distro-box.webp
new file mode 100644
index 0000000000..5959438ce0
Binary files /dev/null and b/site/static/assets/distro-box.webp differ
diff --git a/docs/assets/brand/png/distros/alma-distrobox.png b/site/static/assets/distros/alma-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/alma-distrobox.png
rename to site/static/assets/distros/alma-distrobox.png
diff --git a/docs/assets/brand/png/distros/alpine-distrobox.png b/site/static/assets/distros/alpine-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/alpine-distrobox.png
rename to site/static/assets/distros/alpine-distrobox.png
diff --git a/docs/assets/brand/png/distros/arch-distrobox.png b/site/static/assets/distros/arch-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/arch-distrobox.png
rename to site/static/assets/distros/arch-distrobox.png
diff --git a/docs/assets/brand/png/distros/centos-distrobox.png b/site/static/assets/distros/centos-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/centos-distrobox.png
rename to site/static/assets/distros/centos-distrobox.png
diff --git a/docs/assets/brand/png/distros/clear-distrobox.png b/site/static/assets/distros/clear-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/clear-distrobox.png
rename to site/static/assets/distros/clear-distrobox.png
diff --git a/docs/assets/brand/png/distros/debian-distrobox.png b/site/static/assets/distros/debian-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/debian-distrobox.png
rename to site/static/assets/distros/debian-distrobox.png
diff --git a/docs/assets/png/distros/deepin-distrobox.png b/site/static/assets/distros/deepin-distrobox.png
similarity index 100%
rename from docs/assets/png/distros/deepin-distrobox.png
rename to site/static/assets/distros/deepin-distrobox.png
diff --git a/docs/assets/brand/png/distros/fedora-distrobox.png b/site/static/assets/distros/fedora-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/fedora-distrobox.png
rename to site/static/assets/distros/fedora-distrobox.png
diff --git a/docs/assets/brand/png/distros/gentoo-distrobox.png b/site/static/assets/distros/gentoo-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/gentoo-distrobox.png
rename to site/static/assets/distros/gentoo-distrobox.png
diff --git a/docs/assets/png/distros/kali-distrobox.png b/site/static/assets/distros/kali-distrobox.png
similarity index 100%
rename from docs/assets/png/distros/kali-distrobox.png
rename to site/static/assets/distros/kali-distrobox.png
diff --git a/docs/assets/png/distros/kdeneon-distrobox.png b/site/static/assets/distros/kdeneon-distrobox.png
similarity index 100%
rename from docs/assets/png/distros/kdeneon-distrobox.png
rename to site/static/assets/distros/kdeneon-distrobox.png
diff --git a/docs/assets/brand/png/distros/opensuse-distrobox.png b/site/static/assets/distros/opensuse-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/opensuse-distrobox.png
rename to site/static/assets/distros/opensuse-distrobox.png
diff --git a/docs/assets/brand/png/distros/redhat-distrobox.png b/site/static/assets/distros/redhat-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/redhat-distrobox.png
rename to site/static/assets/distros/redhat-distrobox.png
diff --git a/docs/assets/brand/png/distros/rocky-distrobox.png b/site/static/assets/distros/rocky-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/rocky-distrobox.png
rename to site/static/assets/distros/rocky-distrobox.png
diff --git a/docs/assets/brand/png/distros/ubuntu-distrobox.png b/site/static/assets/distros/ubuntu-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/ubuntu-distrobox.png
rename to site/static/assets/distros/ubuntu-distrobox.png
diff --git a/docs/assets/png/distros/vanilla-distrobox.png b/site/static/assets/distros/vanilla-distrobox.png
similarity index 100%
rename from docs/assets/png/distros/vanilla-distrobox.png
rename to site/static/assets/distros/vanilla-distrobox.png
diff --git a/docs/assets/brand/png/distros/void-distrobox.png b/site/static/assets/distros/void-distrobox.png
similarity index 100%
rename from docs/assets/brand/png/distros/void-distrobox.png
rename to site/static/assets/distros/void-distrobox.png
diff --git a/site/static/assets/splash.svg b/site/static/assets/splash.svg
new file mode 100644
index 0000000000..0c308b4d94
--- /dev/null
+++ b/site/static/assets/splash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/static/card.png b/site/static/card.png
new file mode 100644
index 0000000000..97317ec474
Binary files /dev/null and b/site/static/card.png differ
diff --git a/docs/favicon.png b/site/static/favicon.png
similarity index 100%
rename from docs/favicon.png
rename to site/static/favicon.png
diff --git a/site/static/syntax-theme-dark.css b/site/static/syntax-theme-dark.css
new file mode 100644
index 0000000000..7d8a5628e4
--- /dev/null
+++ b/site/static/syntax-theme-dark.css
@@ -0,0 +1,188 @@
+/*
+ * theme "gruvbox" generated by syntect
+ */
+
+.z-code {
+ color: #fdf4c1;
+ background-color: #282828;
+}
+
+.z-punctuation.z-definition.z-tag {
+ color: #83a598;
+}
+.z-punctuation.z-definition.z-entity {
+ color: #d3869b;
+}
+.z-constant {
+ color: #d3869b;
+}
+.z-constant.z-character.z-escape {
+ color: #b8bb26;
+}
+.z-constant.z-other {
+ color: #fdf4c1;
+}
+.z-entity {
+ color: #8ec07c;
+}
+.z-keyword.z-operator.z-comparison, .z-keyword.z-operator, .z-keyword.z-operator.z-symbolic, .z-keyword.z-operator.z-string, .z-keyword.z-operator.z-assignment, .z-keyword.z-operator.z-arithmetic, .z-keyword.z-operator.z-class, .z-keyword.z-operator.z-key, .z-keyword.z-operator.z-logical {
+ color: #fe8019;
+}
+.z-keyword, .z-keyword.z-operator.z-new, .z-keyword.z-other, .z-keyword.z-control {
+ color: #fa5c4b;
+}
+.z-storage {
+ color: #fa5c4b;
+}
+.z-string, .z-string.z-unquoted.z-heredoc .z-string {
+ color: #b8bb26;
+}
+.z-comment {
+ color: #928374;
+font-style: italic;
+}
+.z-string.z-regexp .z-constant.z-character.z-escape {
+ color: #b8bb26;
+}
+.z-support {
+ color: #fabd2f;
+}
+.z-variable {
+ color: #fdf4c1;
+}
+.z-variable.z-language {
+ color: #fdf4c1;
+}
+.z-meta.z-function-call {
+ color: #fdf4c1;
+}
+.z-invalid {
+ color: #fdf4c1;
+ background-color: #932b1e;
+}
+.z-text .z-source, .z-string.z-unquoted.z-heredoc, .z-source .z-source {
+ color: #fdf4c1;
+}
+.z-string.z-quoted .z-source {
+ color: #b8bb26;
+}
+.z-string {
+ color: #b8bb26;
+}
+.z-support.z-constant {
+ color: #fabd2f;
+}
+.z-support.z-class {
+ color: #8ec07c;
+}
+.z-entity.z-name.z-tag {
+ color: #8ec07c;
+font-weight: bold;
+}
+.z-meta.z-tag, .z-meta.z-tag .z-entity {
+ color: #8ec07c;
+}
+.z-constant.z-other.z-color.z-rgb-value {
+ color: #83a598;
+}
+.z-meta.z-selector.z-css .z-entity.z-name.z-tag {
+ color: #fa5c4b;
+}
+.z-meta.z-selector.z-css, .z-entity.z-other.z-attribute-name.z-id {
+ color: #b8bb26;
+}
+.z-meta.z-selector.z-css .z-entity.z-other.z-attribute-name.z-class {
+ color: #b8bb26;
+}
+.z-support.z-type.z-property-name.z-css {
+ color: #8ec07c;
+}
+.z-meta.z-preprocessor.z-at-rule .z-keyword.z-control.z-at-rule {
+ color: #fabd2f;
+}
+.z-meta.z-property-value .z-constant {
+ color: #fabd2f;
+}
+.z-meta.z-property-value .z-support.z-constant.z-named-color.z-css {
+ color: #fe8019;
+}
+.z-meta.z-constructor.z-argument.z-css {
+ color: #fabd2f;
+}
+.z-meta.z-diff, .z-meta.z-diff.z-header {
+ color: #83a598;
+}
+.z-markup.z-deleted {
+ color: #fa5c4b;
+}
+.z-markup.z-changed {
+ color: #fabd2f;
+}
+.z-markup.z-inserted {
+ color: #8ec07c;
+}
+.z-markup.z-bold {
+font-weight: bold;
+}
+.z-markup.z-italic {
+font-style: italic;
+}
+.z-markup.z-heading {
+ color: #8ec07c;
+font-weight: bold;
+}
+.z-entity.z-name.z-type.z-class.z-php {
+ color: #8ec07c;
+}
+.z-keyword.z-other.z-phpdoc {
+ color: #928374;
+}
+.z-constant.z-numeric.z-css, .z-keyword.z-other.z-unit.z-css {
+ color: #d3869b;
+}
+.z-punctuation.z-definition.z-entity.z-css {
+ color: #b8bb26;
+}
+.z-variable.z-language.z-js {
+ color: #fabd2f;
+}
+.z-string.z-unquoted.z-label.z-js {
+ color: #fdf4c1;
+}
+.z-constant.z-other.z-table-name.z-sql {
+ color: #b8bb26;
+}
+.z-constant.z-other.z-database-name.z-sql {
+ color: #b8bb26;
+}
+.z-storage.z-type.z-dired.z-item.z-directory, .z-dired.z-item.z-directory {
+ color: #8ec07c;
+}
+.z-orgmode.z-link {
+ color: #fabd2f;
+text-decoration: underline;
+}
+.z-orgmode.z-page {
+ color: #b8bb26;
+}
+.z-orgmode.z-break {
+ color: #d3869b;
+}
+.z-orgmode.z-headline {
+ color: #8ec07c;
+}
+.z-orgmode.z-tack {
+ color: #fabd2f;
+}
+.z-orgmode.z-follow_up {
+ color: #fabd2f;
+}
+.z-orgmode.z-checkbox {
+ color: #fabd2f;
+}
+.z-orgmode.z-checkbox.z-summary {
+ color: #fabd2f;
+}
+.z-orgmode.z-tags {
+ color: #fa5c4b;
+}
diff --git a/site/static/syntax-theme-light.css b/site/static/syntax-theme-light.css
new file mode 100644
index 0000000000..bd30b6995c
--- /dev/null
+++ b/site/static/syntax-theme-light.css
@@ -0,0 +1,192 @@
+/*
+ * theme "gruvbox" generated by syntect
+ */
+
+.z-code {
+ color: #282828;
+ background-color: #fcf0ca;
+}
+
+.z-punctuation.z-definition.z-tag {
+ color: #076678;
+}
+.z-punctuation.z-definition.z-entity {
+ color: #8f3f71;
+}
+.z-constant {
+ color: #8f3f71;
+}
+.z-constant.z-character.z-escape {
+ color: #79740e;
+}
+.z-constant.z-other {
+ color: #282828;
+}
+.z-entity {
+ color: #407959;
+}
+.z-keyword.z-operator.z-comparison, .z-keyword.z-operator, .z-keyword.z-operator.z-symbolic, .z-keyword.z-operator.z-string, .z-keyword.z-operator.z-assignment, .z-keyword.z-operator.z-arithmetic, .z-keyword.z-operator.z-class, .z-keyword.z-operator.z-key, .z-keyword.z-operator.z-logical {
+ color: #b23c15;
+}
+.z-keyword, .z-keyword.z-operator.z-new, .z-keyword.z-other, .z-keyword.z-control {
+ color: #9d0006;
+}
+.z-storage {
+ color: #9d0006;
+}
+.z-string, .z-string.z-unquoted.z-heredoc .z-string {
+ color: #79740e;
+}
+.z-comment {
+ color: #928374;
+font-style: italic;
+}
+.z-string.z-regexp .z-constant.z-character.z-escape {
+ color: #79740e;
+}
+.z-support {
+ color: #b57614;
+}
+.z-variable {
+ color: #282828;
+}
+.z-variable.z-language {
+ color: #282828;
+}
+.z-meta.z-function-call {
+ color: #282828;
+}
+.z-invalid {
+ color: #282828;
+ background-color: #932b1e;
+}
+.z-text .z-source, .z-string.z-unquoted.z-heredoc, .z-source .z-source {
+ color: #282828;
+}
+.z-string.z-quoted .z-source {
+ color: #79740e;
+}
+.z-string {
+ color: #79740e;
+}
+.z-support.z-constant {
+ color: #b57614;
+}
+.z-support.z-class {
+ color: #407959;
+}
+.z-entity.z-name.z-tag {
+ color: #407959;
+font-weight: bold;
+}
+.z-meta.z-tag, .z-meta.z-tag .z-entity {
+ color: #407959;
+}
+.z-constant.z-other.z-color.z-rgb-value {
+ color: #076678;
+}
+.z-meta.z-selector.z-css .z-entity.z-name.z-tag {
+ color: #9d0006;
+}
+.z-meta.z-selector.z-css, .z-entity.z-other.z-attribute-name.z-id {
+ color: #79740e;
+}
+.z-meta.z-selector.z-css .z-entity.z-other.z-attribute-name.z-class {
+ color: #79740e;
+}
+.z-support.z-type.z-property-name.z-css {
+ color: #407959;
+}
+.z-meta.z-preprocessor.z-at-rule .z-keyword.z-control.z-at-rule {
+ color: #b57614;
+}
+.z-meta.z-property-value .z-constant {
+ color: #b57614;
+}
+.z-meta.z-property-value .z-support.z-constant.z-named-color.z-css {
+ color: #b23c15;
+}
+.z-meta.z-constructor.z-argument.z-css {
+ color: #b57614;
+}
+.z-meta.z-diff, .z-meta.z-diff.z-header {
+ color: #282828;
+ background-color: #076678;
+}
+.z-markup.z-deleted {
+ color: #282828;
+ background-color: #9d0006;
+}
+.z-markup.z-changed {
+ color: #282828;
+ background-color: #b57614;
+}
+.z-markup.z-inserted {
+ color: #282828;
+ background-color: #407959;
+}
+.z-markup.z-bold {
+font-weight: bold;
+}
+.z-markup.z-italic {
+font-style: italic;
+}
+.z-markup.z-heading {
+ color: #407959;
+font-weight: bold;
+}
+.z-entity.z-name.z-type.z-class.z-php {
+ color: #407959;
+}
+.z-keyword.z-other.z-phpdoc {
+ color: #928374;
+}
+.z-constant.z-numeric.z-css, .z-keyword.z-other.z-unit.z-css {
+ color: #8f3f71;
+}
+.z-punctuation.z-definition.z-entity.z-css {
+ color: #79740e;
+}
+.z-variable.z-language.z-js {
+ color: #b57614;
+}
+.z-string.z-unquoted.z-label.z-js {
+ color: #282828;
+}
+.z-constant.z-other.z-table-name.z-sql {
+ color: #79740e;
+}
+.z-constant.z-other.z-database-name.z-sql {
+ color: #79740e;
+}
+.z-storage.z-type.z-dired.z-item.z-directory, .z-dired.z-item.z-directory {
+ color: #407959;
+}
+.z-orgmode.z-link {
+ color: #b57614;
+text-decoration: underline;
+}
+.z-orgmode.z-page {
+ color: #79740e;
+}
+.z-orgmode.z-break {
+ color: #8f3f71;
+}
+.z-orgmode.z-headline {
+ color: #407959;
+}
+.z-orgmode.z-tack {
+ color: #b57614;
+}
+.z-orgmode.z-follow_up {
+ color: #b57614;
+}
+.z-orgmode.z-checkbox {
+ color: #b57614;
+}
+.z-orgmode.z-checkbox.z-summary {
+ color: #b57614;
+}
+.z-orgmode.z-tags {
+ color: #9d0006;
+}
diff --git a/site/themes/duckquill b/site/themes/duckquill
new file mode 160000
index 0000000000..d2853606f9
--- /dev/null
+++ b/site/themes/duckquill
@@ -0,0 +1 @@
+Subproject commit d2853606f9625423f88082f02a2265636a0087b9