From 7daca57714e1a4e613833b7e28c3abf18ab8f7c0 Mon Sep 17 00:00:00 2001 From: nocode Date: Wed, 24 Jun 2026 17:58:52 +0200 Subject: [PATCH] feat(anaconda): add desktop environment selection spoke for FWS Implement a new Anaconda spoke that allows users to select their preferred desktop environment (CLI, GNOME, KDE Plasma, Hyprland, or XFCE) during installation. The spoke: - Displays radio buttons for five desktop choices with CLI as the default - Persists the selection to /tmp/fws-desktop for the kickstart %post script - Supports revisiting the spoke and resuming previous selections - Includes a GTK UI definition file (glade) with translatable labels - Integrates as a SoftwareCategory spoke in the Anaconda installer The implementation leverages Anaconda's runtime spoke discovery mechanism via the airootfs overlay, avoiding the need to rebuild the anaconda package. --- .../__pycache__/fws_desktop.cpython-314.pyc | Bin 0 -> 4538 bytes .../pyanaconda/ui/gui/spokes/fws_desktop.py | 105 ++++++++++++ .../anaconda/ui/spokes/fws_desktop.glade | 153 ++++++++++++++++++ .../share/anaconda/interactive-defaults.ks | 2 + 4 files changed, 260 insertions(+) create mode 100644 configs/baseline/airootfs/usr/lib/python3.14/site-packages/pyanaconda/ui/gui/spokes/__pycache__/fws_desktop.cpython-314.pyc create mode 100644 configs/baseline/airootfs/usr/lib/python3.14/site-packages/pyanaconda/ui/gui/spokes/fws_desktop.py create mode 100644 configs/baseline/airootfs/usr/share/anaconda/ui/spokes/fws_desktop.glade diff --git a/configs/baseline/airootfs/usr/lib/python3.14/site-packages/pyanaconda/ui/gui/spokes/__pycache__/fws_desktop.cpython-314.pyc b/configs/baseline/airootfs/usr/lib/python3.14/site-packages/pyanaconda/ui/gui/spokes/__pycache__/fws_desktop.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c8dabfc81f29a11f55176b6acc950c0785ff6e8 GIT binary patch literal 4538 zcma)AU2GHC6}~f`vB&oKFC=kD9AZeCV6w4cpO=KP?1=puh{EG;4B#&-Aw-Xy@XfKjS^% zakR{U;O|DM@V`hgMO&W1anYj06lFyx^*M81!t$VG%6T0xKwWTL#|259Eb13!D>6Ja zd0aLwntIWx@MKlx)s8{EP>{4-QdKlLscY&&a<`@@bB? z6B2xJbif_b43oW^5y1~KDg;2rgdoVKnQa1Jr`HVSP+hqN%Hg_lE0iO3<+uve7W9 zv=s$Axh9@cw46S_*k%yh8^nO3Yru3~m2&c8PZ7&=GM2ThT(j*!PBDtAv@l>S6lQf* z$u9a&{ABd9?XJaU(H%NDrlrYbv^S2jLKO-+&*oX0y6Br{s;ytON=Gmy85P(#<&| zQ!;QyRc15A1@nTg?N9GJkTDcf9wo4O3vzRz-;=p<}|FzAnq%pXI>QT!*D=R);&*g+V(qOMvd z-<{|zN>gX4)71C9JE1F_RH)Hvni*1Z&mnTHi#g~xo?8d(%QXFU_Ks@~?eN+uJ;#to_3R%8T<{8cHo3!P)OUgHm8gdFTNfu@dXwLOqy zMt(`ukNVs>@?fh3Qs5Hk1Q?OOll_N0ok*dQXu7q!5HHHX6_S9~PJ09eIXZw9uZUH%|WLKqY*Kc{~9_@a~LKF1-?gfXU@fV2l$1Fa& z?t$+sV-GCuZfksyMt29gj%C<;d>7>JWrD|!`0xFQgZzCuI2iNXk5V9CV-#}!?F02^ zdxHQJ_%@~qqScTHa`gHFPM#M_T7pz0_^U@sXQn}FjqL5_Yy66mTXaGML; zl*i$)GeBZCbUc712OR+eP$j`da7j+l4nSx;>u{HY1RGFVxS~)lmOhXm}+weB1o}Zzqu%RP_zF7PYg{y!-0r#8jCz1^w=0Q8os(HlJnzDuC7AW#xLQH}8G>{#tp z^OvLFjnGtd^LFS$r)ZbRYScJgM;XkV=o2(8$xVzE-Os4iG7jX1Ka$B6zV5P+h1$BoO^FR#T@58|oE@&2U~z$lT} zr$4{B>(;=R1Gh52%K!^}#y^R+JoBNpch)(^<&m3{Yq8X$Sn9S=i8kHfu5-)HUnD+H zJc{-b9@ztp@b6(P_1!-rtqp{+7pA`JZ#&k3?(R$+^Rah7;2?j`7d+PHzt_Z&e4B^J zj^MF9o_i?@)fg4Fa)&x&N11mhdw~W~ z>2;Rm&+3JuDw}f7+TOUTS`#s8T^QK>R+FZvVS7^iKIvUQC3y`=COn|toU+!GC7p=% z%jj>Bx0?_j0`;w@WXZj}1@!IeeEn40?7aaQliS-qiQ}nu5_W1*L58q1Ac_S&S5iry z7sZcDlIpfZL~%~RhDqXfO}8UdF{fuC6Ly1$({}h^SmA=CXj4iKu7PnF)$*2VJ zKmmV1#8Dy!L0B!K=nNxDCd4VTB~vzFkug!ss*+*kl&qPRRaGQU-cVg7bR$kY>Vzod z?z10uJ&-YOf%x|?z*kS0v8S!OS6Wi#@k&b{h)`d7xDx3qk5q#D%EzDZk!!(~&i$+W zf%4E(Huj9B*}e@A@;0rL+;h&uwm%O9+1T@ThD|=_18i))4SB=QXolTS^up^Tx6a#j zG~4XfL2jM1>nOIxt%KaU*R6B(zNIPFfzmhxfNWmV!T9Wn@zbY<$V2}kycq*y$A^*= zV26SPRosPzB31#d7B}MNpqBY$4xSy%x#7W~RM2YPe0Zg^I+oMQzJrd}FauVxcGk6* zl(g$zMK;og``-zU-`if-g9lvNdB8d0sZSIo;uME+k}$GueFyI3YH^M;_r8P9!}w=V zNBm`w@Cl+aih9|LsNLV7!{4C2PlJh-Kxf%Uj22w_a3!2x + + + + + + False + True + True + DESKTOP ENVIRONMENT + + + + False + vertical + 6 + + + False + + + False + 6 + 6 + 6 + + + + + False + False + 0 + + + + + False + 12 + 0 + 0 + 0 + 48 + 24 + 24 + + + False + vertical + 8 + + + True + False + 0 + 12 + True + 60 + Choose the desktop environment to install. A web browser (Firefox) is installed automatically with any desktop. + + + False + True + 0 + + + + + Command line only (no desktop) + True + True + False + True + True + + + False + True + 1 + + + + + GNOME + True + True + False + True + radio_cli + + + False + True + 2 + + + + + KDE Plasma + True + True + False + True + radio_cli + + + False + True + 3 + + + + + Hyprland + True + True + False + True + radio_cli + + + False + True + 4 + + + + + XFCE + True + True + False + True + radio_cli + + + False + True + 5 + + + + + + + + + + + DESKTOP ENVIRONMENT + + + + diff --git a/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks b/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks index 91a1e5e..34e01cd 100644 --- a/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks +++ b/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks @@ -216,6 +216,8 @@ case "$DESK" in hyprland) PKGS="hyprland kitty wofi waybar sddm"; DM="sddm" ;; cli|*) PKGS="" ;; esac +# Navigateur de base ajouté DÈS QU'un bureau est choisi (jamais en CLI). +[ -n "$PKGS" ] && PKGS="$PKGS firefox" if [ -n "$PKGS" ]; then pacman-key --init &>/dev/null || true pacman-key --populate archlinux &>/dev/null || true