Alright everyone, so far this cycle we’ve been concentrating on finishing up the developer experience for Bluefin-DX, today I’d like to give you a quick status of the command line experience.
The Ptyxis Terminal
We are shipping the Ptyxis in the F39 builds and newer, which has automatic built in support for toolboxes and distroboxes. Users can quickly fire up a host terminal if they need to do host-level things but we’re adding more host-exec functionality in our distroboxes to make this less of thing.
The plan for distroboxes
We’ve always shipped Ubuntu as the “default” distrobox, along with Fedora. There will be no changes here. I still need to go back and polish up the distrobox.ini, but generally speaking these boxes are complete.
The bluefin-cli
distrobox
After lots of false starts, we finally have a decent bluefin-cli
container. This is our attempt at shipping the perfect toolbox container that has everything any linux admin could ever want.This will be one of the options the user can choose on first run. You can try it this way:
distrobox create -i ghcr.io/ublue-os/bluefin-cli -n bluefin
This will make a bluefin
distrobox for you. This is a WolfiOS container designed to hold brew and is intended to be your terminal experience. At some point this will be managed via a systemd quadlet on your system and will automatically show up in your Ptyxis terminal when you enable it (but we’re not there yet). But you can start to use it today!
How it will behave
On a fresh install you’ll run Ptyxis and a dynamic motd system will ask you to enter a command to configure your distroboxes. After you do this the bluefin-cli quadlet will be enabled. This will pull the container, and will automatically update and destroy the container daily via the podman-auto-update.service
. You’ll get a freshly built container built from scratch regularly – no inplace upgrades. No pets.
The wolfi container contains brew
, which is where you can install your CLI apps from. ncspot, btop, zellij, ollama, and whatever other CLI tools exist in homebrew. We picked homebrew because it has just about everything and uses OCI blobs for transport, which means plenty of mirrors and bandwidth. Both Homebrew and WolfiOS also automate large portions of their packages so that we can get the newest versions of everything.
The packages you install via brew will survive the container’s destruction thanks to @M2 keeping the brew package state outside of the container. So your base wolfi container will always be up to date, and brew always ensures its packages are up to date. if you’re not familiar with brew
then I’ll make sure to link to the brew bundle
subcommand so that you can always save your package list and keep it synced however you want.
What’s left to do
The motd, quadlets, and lots of “wiring it up” is left to do, but the box is working well enough now to widen the net. We will be blinging it up a bit with starship and some colors.
Additionally there is a “blank” wolfi-base container in the repos with the minimal amount of packages you need to make your own distroless container. As wolfi continues automating the world more and more packages can just come via apk and via your personal container for that nice clean experience. In the meantime brew
can fill that long tail of packages. Personally I’ll be filing issues in wolfi to have them add the packages I need every day so that I can just run all my computers from my perfect container. Wolfi has been very responsive to packaging requests so dive if you want to learn how!
Source Code and Getting involved
Here’s the toolbox repo that contains the toolboxes. Issues and ideas are welcome here or in the issue tracker.
References
Consolidating a few threads from here:
- Setting up the Ptyxis Terminal
- https://universal-blue.discourse.group/t/moving-to-gnomes-prompt-for-a-default-terminal
- https://universal-blue.discourse.group/t/heads-up-change-on-the-homebrew-setup/
Happy to answer questions! Did I miss anything?