From 6c6c8d8000af4d395abe9c453b21bdd074b6c6bb Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Thu, 2 Apr 2026 18:38:02 -0400 Subject: [PATCH] Stop installing xorg packages for Wayland profiles (#4348) * Add WaylandProfile to avoid installing xorg packages for Wayland compositors * Refactor: use composition (is_wayland) instead of WaylandProfile inheritance * Fix X11 profiles to inherit xorg packages from XorgProfile * Style: use consistent multi-line super().__init__ for Wayland profiles * Refactor: replace is_wayland with DisplayServerType enum Add DisplayServerType enum (Xorg/Wayland) to Profile. All profiles now inherit Profile directly with an explicit display_server param. desktop.py installs xorg-server and xorg-xinit for Xorg profiles. XorgProfile remains for standalone Xorg selection. * Remove unnecessary super().packages from desktop profiles --- archinstall/default_profiles/desktop.py | 8 ++++++- .../default_profiles/desktops/awesome.py | 15 ++++++++----- .../default_profiles/desktops/bspwm.py | 13 ++++++----- .../default_profiles/desktops/budgie.py | 12 ++++++---- .../default_profiles/desktops/cinnamon.py | 12 ++++++---- .../default_profiles/desktops/cosmic.py | 12 ++++++---- .../default_profiles/desktops/cutefish.py | 12 ++++++---- .../default_profiles/desktops/deepin.py | 12 ++++++---- .../desktops/enlightenment.py | 12 ++++++---- .../default_profiles/desktops/gnome.py | 12 ++++++---- .../default_profiles/desktops/hyprland.py | 12 ++++++---- archinstall/default_profiles/desktops/i3.py | 12 ++++++---- .../default_profiles/desktops/labwc.py | 7 +++--- archinstall/default_profiles/desktops/lxqt.py | 12 ++++++---- archinstall/default_profiles/desktops/mate.py | 12 ++++++---- archinstall/default_profiles/desktops/niri.py | 7 +++--- .../default_profiles/desktops/plasma.py | 12 ++++++---- .../default_profiles/desktops/qtile.py | 12 ++++++---- .../default_profiles/desktops/river.py | 12 ++++++---- archinstall/default_profiles/desktops/sway.py | 7 +++--- .../default_profiles/desktops/xfce4.py | 12 ++++++---- .../default_profiles/desktops/xmonad.py | 12 ++++++---- archinstall/default_profiles/profile.py | 20 +++++++++++++++++ archinstall/default_profiles/xorg.py | 22 +++++++++---------- archinstall/lib/hardware.py | 4 +--- archinstall/lib/profile/profiles_handler.py | 4 ++-- 26 files changed, 198 insertions(+), 101 deletions(-) diff --git a/archinstall/default_profiles/desktop.py b/archinstall/default_profiles/desktop.py index 2beb3d8c..d61c0ef7 100644 --- a/archinstall/default_profiles/desktop.py +++ b/archinstall/default_profiles/desktop.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Self, override -from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType, SelectResult +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType, SelectResult from archinstall.lib.menu.helpers import Selection from archinstall.lib.output import info from archinstall.lib.profile.profiles_handler import profile_handler @@ -95,10 +95,16 @@ class DesktopProfile(Profile): # Install common packages for all desktop environments install_session.add_additional_packages(self.packages) + xorg_installed = False + for profile in self.current_selection: info(f'Installing profile {profile.name}...') install_session.add_additional_packages(profile.packages) install_session.enable_service(profile.services) + if not xorg_installed and profile.display_server == DisplayServerType.Xorg: + install_session.add_additional_packages(['xorg-server', 'xorg-xinit']) + xorg_installed = True + profile.install(install_session) diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py index 05a4d097..de38d7a4 100644 --- a/archinstall/default_profiles/desktops/awesome.py +++ b/archinstall/default_profiles/desktops/awesome.py @@ -2,24 +2,27 @@ from __future__ import annotations from typing import TYPE_CHECKING, override -from archinstall.default_profiles.profile import ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, Profile, ProfileType if TYPE_CHECKING: from archinstall.lib.installer import Installer -class AwesomeProfile(XorgProfile): +class AwesomeProfile(Profile): def __init__(self) -> None: - super().__init__('Awesome', ProfileType.WindowMgr) + super().__init__( + 'Awesome', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override def packages(self) -> list[str]: - return super().packages + [ + return [ 'awesome', 'alacritty', - 'xorg-xinit', 'xorg-xrandr', 'xterm', 'feh', diff --git a/archinstall/default_profiles/desktops/bspwm.py b/archinstall/default_profiles/desktops/bspwm.py index 99211729..f8c2a7b2 100644 --- a/archinstall/default_profiles/desktops/bspwm.py +++ b/archinstall/default_profiles/desktops/bspwm.py @@ -1,17 +1,20 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class BspwmProfile(XorgProfile): +class BspwmProfile(Profile): def __init__(self) -> None: - super().__init__('Bspwm', ProfileType.WindowMgr) + super().__init__( + 'Bspwm', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override def packages(self) -> list[str]: - # return super().packages + [ return [ 'bspwm', 'sxhkd', diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py index 17dc4de5..e6680b7a 100644 --- a/archinstall/default_profiles/desktops/budgie.py +++ b/archinstall/default_profiles/desktops/budgie.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class BudgieProfile(XorgProfile): +class BudgieProfile(Profile): def __init__(self) -> None: - super().__init__('Budgie', ProfileType.DesktopEnv) + super().__init__( + 'Budgie', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/cinnamon.py b/archinstall/default_profiles/desktops/cinnamon.py index 797f73fe..a0ebd45f 100644 --- a/archinstall/default_profiles/desktops/cinnamon.py +++ b/archinstall/default_profiles/desktops/cinnamon.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class CinnamonProfile(XorgProfile): +class CinnamonProfile(Profile): def __init__(self) -> None: - super().__init__('Cinnamon', ProfileType.DesktopEnv) + super().__init__( + 'Cinnamon', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/cosmic.py b/archinstall/default_profiles/desktops/cosmic.py index 96742de6..109e9c0b 100644 --- a/archinstall/default_profiles/desktops/cosmic.py +++ b/archinstall/default_profiles/desktops/cosmic.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class CosmicProfile(XorgProfile): +class CosmicProfile(Profile): def __init__(self) -> None: - super().__init__('Cosmic', ProfileType.DesktopEnv) + super().__init__( + 'Cosmic', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, + ) @property @override diff --git a/archinstall/default_profiles/desktops/cutefish.py b/archinstall/default_profiles/desktops/cutefish.py index 0ad8a65d..b014c8ca 100644 --- a/archinstall/default_profiles/desktops/cutefish.py +++ b/archinstall/default_profiles/desktops/cutefish.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class CutefishProfile(XorgProfile): +class CutefishProfile(Profile): def __init__(self) -> None: - super().__init__('Cutefish', ProfileType.DesktopEnv) + super().__init__( + 'Cutefish', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/deepin.py b/archinstall/default_profiles/desktops/deepin.py index 1b871ed9..e56aca90 100644 --- a/archinstall/default_profiles/desktops/deepin.py +++ b/archinstall/default_profiles/desktops/deepin.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class DeepinProfile(XorgProfile): +class DeepinProfile(Profile): def __init__(self) -> None: - super().__init__('Deepin', ProfileType.DesktopEnv) + super().__init__( + 'Deepin', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/enlightenment.py b/archinstall/default_profiles/desktops/enlightenment.py index 7a329d9e..7e383563 100644 --- a/archinstall/default_profiles/desktops/enlightenment.py +++ b/archinstall/default_profiles/desktops/enlightenment.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class EnlightenmentProfile(XorgProfile): +class EnlightenmentProfile(Profile): def __init__(self) -> None: - super().__init__('Enlightenment', ProfileType.WindowMgr) + super().__init__( + 'Enlightenment', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py index 58936434..fe3ca486 100644 --- a/archinstall/default_profiles/desktops/gnome.py +++ b/archinstall/default_profiles/desktops/gnome.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class GnomeProfile(XorgProfile): +class GnomeProfile(Profile): def __init__(self) -> None: - super().__init__('GNOME', ProfileType.DesktopEnv) + super().__init__( + 'GNOME', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, + ) @property @override diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 95934211..84b94aa0 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -1,17 +1,21 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class HyprlandProfile(XorgProfile): +class HyprlandProfile(Profile): def __init__(self) -> None: - super().__init__('Hyprland', ProfileType.DesktopEnv) + super().__init__( + 'Hyprland', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, + ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/i3.py b/archinstall/default_profiles/desktops/i3.py index b2a883af..1c1bb07b 100644 --- a/archinstall/default_profiles/desktops/i3.py +++ b/archinstall/default_profiles/desktops/i3.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class I3wmProfile(XorgProfile): +class I3wmProfile(Profile): def __init__(self) -> None: - super().__init__('i3-wm', ProfileType.WindowMgr) + super().__init__( + 'i3-wm', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index b4ebd955..d109ef13 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -1,19 +1,20 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class LabwcProfile(XorgProfile): +class LabwcProfile(Profile): def __init__(self) -> None: super().__init__( 'Labwc', ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/lxqt.py b/archinstall/default_profiles/desktops/lxqt.py index 819134cd..0fb35475 100644 --- a/archinstall/default_profiles/desktops/lxqt.py +++ b/archinstall/default_profiles/desktops/lxqt.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class LxqtProfile(XorgProfile): +class LxqtProfile(Profile): def __init__(self) -> None: - super().__init__('Lxqt', ProfileType.DesktopEnv) + super().__init__( + 'Lxqt', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) # NOTE: SDDM is the only officially supported greeter for LXQt, so unlike other DEs, lightdm is not used here. # LXQt works with lightdm, but since this is not supported, we will not default to this. diff --git a/archinstall/default_profiles/desktops/mate.py b/archinstall/default_profiles/desktops/mate.py index 8d3dc2e1..d81cebc2 100644 --- a/archinstall/default_profiles/desktops/mate.py +++ b/archinstall/default_profiles/desktops/mate.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class MateProfile(XorgProfile): +class MateProfile(Profile): def __init__(self) -> None: - super().__init__('Mate', ProfileType.DesktopEnv) + super().__init__( + 'Mate', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index 4ba613c2..b05f3068 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -1,19 +1,20 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class NiriProfile(XorgProfile): +class NiriProfile(Profile): def __init__(self) -> None: super().__init__( 'Niri', ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/plasma.py b/archinstall/default_profiles/desktops/plasma.py index a29a5c5c..7ee58f0e 100644 --- a/archinstall/default_profiles/desktops/plasma.py +++ b/archinstall/default_profiles/desktops/plasma.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class PlasmaProfile(XorgProfile): +class PlasmaProfile(Profile): def __init__(self) -> None: - super().__init__('KDE Plasma', ProfileType.DesktopEnv) + super().__init__( + 'KDE Plasma', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, + ) @property @override diff --git a/archinstall/default_profiles/desktops/qtile.py b/archinstall/default_profiles/desktops/qtile.py index eeb1713b..4a5b6afc 100644 --- a/archinstall/default_profiles/desktops/qtile.py +++ b/archinstall/default_profiles/desktops/qtile.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class QtileProfile(XorgProfile): +class QtileProfile(Profile): def __init__(self) -> None: - super().__init__('Qtile', ProfileType.WindowMgr) + super().__init__( + 'Qtile', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/river.py b/archinstall/default_profiles/desktops/river.py index 8e1396bb..e29c8166 100644 --- a/archinstall/default_profiles/desktops/river.py +++ b/archinstall/default_profiles/desktops/river.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class RiverProfile(XorgProfile): +class RiverProfile(Profile): def __init__(self) -> None: - super().__init__('River', ProfileType.WindowMgr) + super().__init__( + 'River', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, + ) @property @override diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 7418ad49..09a8e7fd 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -1,19 +1,20 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class SwayProfile(XorgProfile): +class SwayProfile(Profile): def __init__(self) -> None: super().__init__( 'Sway', ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Wayland, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/xfce4.py b/archinstall/default_profiles/desktops/xfce4.py index 34dfd8e3..f261cf21 100644 --- a/archinstall/default_profiles/desktops/xfce4.py +++ b/archinstall/default_profiles/desktops/xfce4.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class Xfce4Profile(XorgProfile): +class Xfce4Profile(Profile): def __init__(self) -> None: - super().__init__('Xfce4', ProfileType.DesktopEnv) + super().__init__( + 'Xfce4', + ProfileType.DesktopEnv, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/desktops/xmonad.py b/archinstall/default_profiles/desktops/xmonad.py index 4a9cac0b..a53cc3f0 100644 --- a/archinstall/default_profiles/desktops/xmonad.py +++ b/archinstall/default_profiles/desktops/xmonad.py @@ -1,12 +1,16 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType -class XmonadProfile(XorgProfile): +class XmonadProfile(Profile): def __init__(self) -> None: - super().__init__('Xmonad', ProfileType.WindowMgr) + super().__init__( + 'Xmonad', + ProfileType.WindowMgr, + support_gfx_driver=True, + display_server=DisplayServerType.Xorg, + ) @property @override diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index df55f03f..d7a43260 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -10,6 +10,11 @@ if TYPE_CHECKING: from archinstall.lib.models.users import User +class DisplayServerType(Enum): + Xorg = 'Xorg' + Wayland = 'Wayland' + + class ProfileType(Enum): # top level default_profiles Server = 'Server' @@ -52,6 +57,7 @@ class Profile: services: list[str] = [], support_gfx_driver: bool = False, support_greeter: bool = False, + display_server: DisplayServerType | None = None, ) -> None: self.name = name self.profile_type = profile_type @@ -59,6 +65,7 @@ class Profile: self._support_gfx_driver = support_gfx_driver self._support_greeter = support_greeter + self._display_server = display_server # self.gfx_driver: str | None = None @@ -169,10 +176,23 @@ class Profile: def is_greeter_supported(self) -> bool: return self._support_greeter + @property + def display_server(self) -> DisplayServerType | None: + return self._display_server + def preview_text(self) -> str: """ Override this method to provide a preview text for the profile """ + if self.is_desktop_type_profile(): + if self._display_server: + text = tr('Environment type: {} {}').format(self._display_server.value, self.profile_type.value) + else: + text = tr('Environment type: {}').format(self.profile_type.value) + if packages := self.packages_text(): + text += f'\n{packages}' + return text + return self.packages_text() def packages_text(self, include_sub_packages: bool = False) -> str: diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index 52b03151..1b96843b 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -1,7 +1,9 @@ -from typing import override +from typing import TYPE_CHECKING, override -from archinstall.default_profiles.profile import Profile, ProfileType -from archinstall.lib.translationhandler import tr +from archinstall.default_profiles.profile import DisplayServerType, Profile, ProfileType + +if TYPE_CHECKING: + from archinstall.lib.installer import Installer class XorgProfile(Profile): @@ -14,19 +16,17 @@ class XorgProfile(Profile): name, profile_type, support_gfx_driver=True, + display_server=DisplayServerType.Xorg, ) - @override - def preview_text(self) -> str: - text = tr('Environment type: {}').format(self.profile_type.value) - if packages := self.packages_text(): - text += f'\n{packages}' - - return text - @property @override def packages(self) -> list[str]: return [ 'xorg-server', + 'xorg-xinit', ] + + @override + def install(self, install_session: Installer) -> None: + install_session.add_additional_packages(self.packages) diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py index 5af72b07..ae790feb 100644 --- a/archinstall/lib/hardware.py +++ b/archinstall/lib/hardware.py @@ -51,8 +51,6 @@ class GfxPackage(Enum): Xf86VideoAmdgpu = 'xf86-video-amdgpu' Xf86VideoAti = 'xf86-video-ati' Xf86VideoNouveau = 'xf86-video-nouveau' - XorgServer = 'xorg-server' - XorgXinit = 'xorg-xinit' class GfxDriver(Enum): @@ -80,7 +78,7 @@ class GfxDriver(Enum): return text def gfx_packages(self) -> list[GfxPackage]: - packages = [GfxPackage.XorgServer, GfxPackage.XorgXinit] + packages: list[GfxPackage] = [] match self: case GfxDriver.AllOpenSource: diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 1145a094..47e358aa 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -349,8 +349,8 @@ class ProfileHandler: profiles_path = Path(__file__).parents[2] / 'default_profiles' profiles = [] for file in profiles_path.glob('**/*.py'): - # ignore the abstract default_profiles class - if 'profile.py' in file.name: + # ignore the abstract base classes + if file.name == 'profile.py': continue profiles += self._process_profile_file(file)