Desktop / August 16, 2026
A whole desktop, packed with cpak
When I started cpak in September 2023, I wanted to know whether I could simply build a Docker image of my software and make it behave like a real Linux application anywhere, without spending the rest of the week wiring graphics, audio and desktop integration by hand, and this week that question became much bigger because cpak can now start the desktop itself.
Five months before that first cpak commit I had announced Singularity Desktop, and although the two projects started for different reasons, they kept circling the same idea: software should be able to travel without feeling like a guest once it reaches another Linux system. For almost three years they grew beside each other, and now their two alphas meet at the login screen.
Now they can break each other
cpak already knew how to assemble an application from OCI layers, keep its writable data between updates and connect it to the parts of the machine it had permission to use, so putting the Singularity compositor, shell and applications into an image was surprisingly simple. The real work began at the login screen, where cpak had to register the session before any graphical environment existed, without giving the package arbitrary access to the host.
Singularity needs laptops, graphics drivers and daily habits that do not exist on my setup, while cpak needs a workload large enough to expose the assumptions hidden in its new session support, so putting the two alphas together gives each one the test it was missing.
A package can now declare a desktop or kiosk session, cpak shows what it is asking for and the system authority registers the login entry only after the user authorizes it, then removes it again when the capability is disabled or the package disappears. The manifest, permission model and display-manager setup are covered in the desktop session documentation, including the same mechanism for focused kiosk sessions.
A package, not a second computer
Singularity is split into a small runtime with its common userspace and a second image carrying the session, so cpak can reuse the runtime across updates and replace the software without touching its writable profile. The host still provides the kernel and drivers, while the package receives the hardware, services and user folders declared in its permissions.
The difference became obvious the first time I opened the application launcher and found the software already installed on my computer. My files were still in their usual XDG folders and the applications were still mine, so the result no longer felt like a demo sealed inside an image, it felt like Singularity running on my computer.
A real day is the test
Installing the same Singularity build I use removes a long compilation from the beginning of every report, then leaves both projects nowhere to hide once somebody starts using the session for a real day. Suspend, unusual monitors, updates and applications kept open for hours can now test the package format and its first complete environment at the same time.
This does not replace the packages that distributions are already preparing for Singularity, and I still want to work with every project carrying it natively. It gives Singularity one more official route onto other distributions today, while cpak gets a real session workload instead of another example written only for its documentation.