Moving forward PantherX OS will “support” multiple flavor of desktop environments, to embrace the variety of options, and make users with different preferences feel more at home (QT vs GTK). Our goal to provide a smooth, out of the box experience has not changed, but the approach on how-to achieve this needs to adapt; specifically, the only future for PantherX OS is a future with a vibrant community because keeping up requires contributors and different skill sets.
The environment in which we set out to develop PantherX has not changed, and I continue to believe that guix provides the most compelling and adaptive computing experience on the planet, which could be enjoyed by many more Linux users, if it was not for the steep learning curve, and time required to actually figure out guix, and get things running.
What follow’s is an overview of what the new configuration and options will looks like. For existing users, only a small change is required.
Important: These changes will go live on 23rd June 2023.
Desktop OS
Name: px-desktop-os
(use-modules (gnu)
(gnu system)
(gnu services desktop)
(px system config))
(px-desktop-os
(operating-system
...
;; Globally-installed packages.
(packages (cons*
%px-desktop-packages))
;; Services
(services (cons*
(service xfce-desktop-service-type)
%px-desktop-services))
))
Desktop operating system with various desktop environments including:
- LXQt
- XFCE
- Mate
- Gnome
and a set of matching package and services.
Defaults:
%px-desktop-packages
%px-desktop-services
Options:
%px-desktop-packages
(px-desktop-packages-qt
)%px-desktop-packages-qt
%px-desktop-packages-gtk
%px-desktop-services
(service px-desktop-service-type)
← PantherX Default (LXQt)- use
%px-desktop-packages
or%px-desktop-packages-qt
- use
(service xfce-desktop-service-type)
- best with
px-desktop-packages-gtk
- best with
(service mate-desktop-service-type)
- best with
px-desktop-packages-gtk
- best with
On the differentiation between qt
and gtk
, and why not desktop specific:
- The service usually provides all required desktop-specific packages
- The goal is, to select the “best” (if any) QT / GTK application to use across destops: QT (LXQt) and GTK (Mate, XFCE, Gnome). There are exceptions: Thunderbird (Email) and Firefox is default across both QT and GTK - desktops because it’s hard to beat in terms of usability.
- To make it easier to switch desktop environments, while continuing to use the applications you’re familiar with
So far we’ve focused on LXQt and QT so the GTK-parts are very much WIP and we welcome suggestions and contributions.
Desktop Installation
px-install-run
# Select DESKTOP
This currently defaults to:
%px-desktop-services
with(service px-desktop-service-type)
%px-desktop-packages
Server OS
Name: px-server-os
(use-modules (gnu)
(gnu system)
(px system config))
(px-server-os
(operating-system
...
;; Globally-installed packages.
(packages (cons*
%px-server-packages))
;; Services
(services (cons*
%px-server-services))
))
Defaults:
%px-server-packages
%px-server-services
Server Installation
px-install-run
# Select SERVER
Base OS (Minimal)
Name px-base-os
Foundation for all other OS. This provides stuff like px, px-install, gnutls and so on. This is great, if you have very specific requirements, and as the base for application templates.
Defaults:
%px-core-packages
(%base-packages
)%px-core-services
(%base-services
)
Migration
For existing user, the change is real easy.
Modules
(use-modules (gnu)
(gnu system)
(px system install)
(px system))
(px-server-os
(operating-system
...
))
These are the new, default modules:
(use-modules (gnu)
(gnu system)
(px system config))
(px-server-os
(operating-system
...
))
Services
PantherX Default:
(services (cons*
(service px-desktop-service-type)
%px-desktop-services))
Different desktop (XFCE):
;; Adapt your modules to look like this
(use-modules (gnu)
(gnu system)
(gnu services desktop)
(px system config))
;; ...
(services (cons*
;; Add desktop
(service xfce-desktop-service-type)
%px-desktop-services))
Community
So far our focus has been on LXQt but I recognize guix is niche, LXQt is niche, and PantherX well - I don’t have to tell you! However, with more options comes the requirement for different tools and mechanism to accomplish different goals like a new installer or supplementing missing features like a screen scaling GUI that works across all of them.
My hope here is, to provide the initial infrastructure, and hopefully get this project into everyone’s hands, and develop tools for more decentralized package submission, approval processes and package distribution - and of course, upstream whatever makes sense. I also recognize, and appreciate the nonguix community without which we probably wouldn’t exist, as their work provides a fundamental building block for PantherX.
For now, specifically I’m inviting people to:
- Help promote the project
- Improve the out of the box experience of different desktop environments
- Maintain and submit new packages
- Become a community moderator
- Contribute new services and configuration templates
Config generator
If this is all a little too much to digest, we’ve got a new config generator that will help you get started: Generate System Config.