=== Desktop Script for BSDInstall

Links: +
link:https://github.com/FreeBSDFoundation/proj-laptop/issues/25[Laptop Support and Usability Project Task] URL: link:https://github.com/FreeBSDFoundation/proj-laptop/issues/25[] +
link:https://gitlab.com/alfix/kde-installer-dialogs[Project repository] URL: link:https://gitlab.com/alfix/kde-installer-dialogs[]

Contact: Alfonso Sabato Siciliano <asiciliano@FreeBSD.org>

In the past, I developed several shell scripts with graphical interfaces to install and configure a complete desktop environment on my laptop.
These interfaces allowed users to select their preferred options.
One script in particular included GPU drivers, desktop environments, and tools for both laptops and desktop systems.
These projects are still available in public online repositories, but they are now likely obsolete, as they have not been used or maintained for several years.

Recently, the FreeBSD Foundation launched the Laptop Support and Usability Project.
One of the short-term goals of this project is to provide a simple feature in man:bsdinstall[8], the FreeBSD system installer, to install and configure a graphical environment.
The installer should ask users whether they want to install a desktop environment and, if so, automatically install and configure everything needed with minimal or no user intervention.
After reboot, users should be presented with a KDE Plasma graphical login screen.

To implement this feature, I reused one of my previous scripts as a proof of concept.
It has been updated, simplified, and renamed to _desktop_.
The script installs and configures GPU drivers, Xorg, KDE Plasma, and SDDM.
Based on the feedback received, I introduced several improvements over the original version:

* Automatic GPU detection with a suggested video driver, since some users selected the wrong GPU during testing.
  This is particularly important as the script targets less experienced users.
* Addition of dialog-based messages to provide information, documentation, and error reporting.
* Extra features and menus to allow users to choose certain configurations.

In the future, depending on user interest and feedback, support can be extended to additional desktop environments and tools.

One of the main challenges was the wide variety of supported GPUs.
For this reason, I launched a call for testing, involving the community through a script to be executed on an already installed system.
The feedback and suggestions received were very positive and valuable.
Contributions are still welcome, especially for:

* NVIDIA Optimus with recent GPUs.
* Systems with non-amd64 architectures.

A version of the script was later adapted for integration into bsdinstall and into an installation ISO.
After successful testing on both CURRENT and STABLE, a review has been submitted to add the _desktop_ script to bsdinstall: link:https://reviews.freebsd.org/D56167[D56167].

Sponsor: The FreeBSD Foundation
