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 @@ +

+ + + Distrobox logo + +

+ +

+ Use any linux distribution inside your terminal. +

+ +--- + +[![Lint](https://github.com/89luca89/distrobox/actions/workflows/main.yml/badge.svg)](https://github.com/89luca89/distrobox/actions/workflows/main.yml) +[![CI](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml/badge.svg)](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml) +[![GitHub](https://img.shields.io/github/license/89luca89/distrobox?color=blue)](https://github.com/89luca89/distrobox/blob/main/COPYING.md) +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/89luca89/distrobox)](https://github.com/89luca89/distrobox/releases/latest) +[![Packaging status](https://repology.org/badge/tiny-repos/distrobox.svg)](https://repology.org/project/distrobox/versions) +[![GitHub issues by-label](https://img.shields.io/github/issues-search/89luca89/distrobox?query=is%3Aissue%20is%3Aopen%20label%3Abug%20-label%3Await-on-user%20&label=Open%20Bug%20Reports&color=red)](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. + +![overview](https://user-images.githubusercontent.com/598882/144294862-f6684334-ccf4-4e5e-85f8-1d66210a0fff.png) + +## 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 ---- - -![404]({{site.baseurl}}/assets/404.png){:.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) - -[![Lint](https://github.com/89luca89/distrobox/actions/workflows/main.yml/badge.svg)](https://github.com/89luca89/distrobox/actions/workflows/main.yml) -[![CI](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml/badge.svg)](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml) -[![GitHub](https://img.shields.io/github/license/89luca89/distrobox?color=blue)](../COPYING.md) -[![GitHub release (latest by date)](https://img.shields.io/github/v/release/89luca89/distrobox)](https://github.com/89luca89/distrobox/releases/latest) -[![Packaging status](https://repology.org/badge/tiny-repos/distrobox.svg)](https://repology.org/project/distrobox/versions) -[![GitHub issues by-label](https://img.shields.io/github/issues-search/89luca89/distrobox?query=is%3Aissue%20is%3Aopen%20label%3Abug%20-label%3Await-on-user%20&label=Open%20Bug%20Reports&color=red)](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) - ---- - -![overview](https://user-images.githubusercontent.com/598882/144294862-f6684334-ccf4-4e5e-85f8-1d66210a0fff.png) - ---- - -> [!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!) - -[![Video](https://user-images.githubusercontent.com/598882/153680522-f5903607-2854-4cfb-a186-cba7403745bd.png)](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: - -[![Packaging status](https://repology.org/badge/vertical-allrepos/distrobox.svg)](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` - ---- - -![distro-box](./assets/distro-box.png) - -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 @@ - diff --git a/docs/_index.md b/docs/_index.md new file mode 100644 index 0000000000..eb5fd4ccd8 --- /dev/null +++ b/docs/_index.md @@ -0,0 +1,422 @@ ++++ +title = "Home" +insert_anchor_links = "left" ++++ + + + +![splash](assets/splash.svg#no-hover) + +# Distrobox + + + +Current logo by [daudix](https://daudix.one). +Previous logo by [hexared](https://github.com/hexared). + + +
+ +[![Lint](https://github.com/89luca89/distrobox/actions/workflows/main.yml/badge.svg#transparent#no-hover)](https://github.com/89luca89/distrobox/actions/workflows/main.yml) +[![CI](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml/badge.svg#transparent#no-hover)](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml) +[![GitHub](https://img.shields.io/github/license/89luca89/distrobox?color=blue#transparent#no-hover)](https://github.com/89luca89/distrobox/blob/main/COPYING.md) +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/89luca89/distrobox#transparent#no-hover)](https://github.com/89luca89/distrobox/releases/latest) +[![Packaging status](https://repology.org/badge/tiny-repos/distrobox.svg#transparent#no-hover)](https://repology.org/project/distrobox/versions) +[![GitHub issues by-label](https://img.shields.io/github/issues-search/89luca89/distrobox?query=is%3Aissue%20is%3Aopen%20label%3Abug%20-label%3Await-on-user%20&label=Open%20Bug%20Reports&color=red#transparent#no-hover)](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. + +--- + +[Matrix Room](https://matrix.to/#/%23distrobox:matrix.org) - +[Telegram Group](https://t.me/distrobox) + +--- + +![overview](https://user-images.githubusercontent.com/598882/144294862-f6684334-ccf4-4e5e-85f8-1d66210a0fff.png) + +--- + +- [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: + +[![Packaging status](https://repology.org/badge/vertical-allrepos/distrobox.svg#no-hover)](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` + +--- + +![distro-box](assets/distro-box.webp) + + + +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 -[![Packaging status](https://repology.org/badge/vertical-allrepos/distrobox.svg)](https://repology.org/project/distrobox/versions) +[![Packaging status](https://repology.org/badge/vertical-allrepos/distrobox.svg#no-hover)](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. ![image](https://user-images.githubusercontent.com/598882/149206335-1a2d0edd-8b2f-437d-aae0-44b9723d2c30.png) -![image](https://user-images.githubusercontent.com/598882/149206414-56bdbc5a-3728-45ef-8dd4-2e168a0d7ccc.png) +![image](https://user-images.githubusercontent.com/598882/149206414-56bdbc5a-3728-45ef-8dd4-2e168a0d7ccc.png#transparent) -## 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) -![image](https://user-images.githubusercontent.com/598882/149207447-76a82e91-dd3f-43fa-8c52-9c2e85ae8fee.png) +![image](https://user-images.githubusercontent.com/598882/149207447-76a82e91-dd3f-43fa-8c52-9c2e85ae8fee.png#transparent) -### 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 -![image](https://user-images.githubusercontent.com/598882/149208525-5ad630c9-fcbc-4ee6-9d77-e50d2c782a56.png) +![image](https://user-images.githubusercontent.com/598882/149208525-5ad630c9-fcbc-4ee6-9d77-e50d2c782a56.png#transparent) 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! -![image](https://user-images.githubusercontent.com/598882/149210881-749a8146-c69d-4382-bbef-91e4b477b7ba.png) +![image](https://user-images.githubusercontent.com/598882/149210881-749a8146-c69d-4382-bbef-91e4b477b7ba.png#transparent) -# 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! -![image](https://user-images.githubusercontent.com/598882/208442009-fe9df606-e6a8-44f9-94c2-1c2bfba4ca15.png) +![image](https://user-images.githubusercontent.com/598882/208442009-fe9df606-e6a8-44f9-94c2-1c2bfba4ca15.png#transparent) 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: -![Screenshot from 2021-12-19 22-29-08](https://user-images.githubusercontent.com/598882/146691460-b8a5bb0a-a83d-4e32-abd0-4a0ff9f50eb7.png) +![Screenshot from 2021-12-19 22-29-08](https://user-images.githubusercontent.com/598882/146691460-b8a5bb0a-a83d-4e32-abd0-4a0ff9f50eb7.png#transparent) 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 ![image](https://user-images.githubusercontent.com/598882/170837120-9170a9fa-6153-4684-a435-d60a0136b563.png) -## 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