diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py index 05a4d09778..045a4854ab 100644 --- a/archinstall/default_profiles/desktops/awesome.py +++ b/archinstall/default_profiles/desktops/awesome.py @@ -19,7 +19,6 @@ def packages(self) -> list[str]: return super().packages + [ '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 9921172972..e5f1f55adf 100644 --- a/archinstall/default_profiles/desktops/bspwm.py +++ b/archinstall/default_profiles/desktops/bspwm.py @@ -12,7 +12,7 @@ def __init__(self) -> None: @override def packages(self) -> list[str]: # return super().packages + [ - return [ + return super().packages + [ 'bspwm', 'sxhkd', 'dmenu', diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py index 17dc4de58e..5c52989517 100644 --- a/archinstall/default_profiles/desktops/budgie.py +++ b/archinstall/default_profiles/desktops/budgie.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'materia-gtk-theme', 'budgie', 'mate-terminal', diff --git a/archinstall/default_profiles/desktops/cinnamon.py b/archinstall/default_profiles/desktops/cinnamon.py index 797f73fe80..21327d38a2 100644 --- a/archinstall/default_profiles/desktops/cinnamon.py +++ b/archinstall/default_profiles/desktops/cinnamon.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'cinnamon', 'system-config-printer', 'gnome-keyring', diff --git a/archinstall/default_profiles/desktops/cosmic.py b/archinstall/default_profiles/desktops/cosmic.py index 96742de6f6..7327d7b7fd 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 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, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/cutefish.py b/archinstall/default_profiles/desktops/cutefish.py index 0ad8a65de8..ec1b0f9be2 100644 --- a/archinstall/default_profiles/desktops/cutefish.py +++ b/archinstall/default_profiles/desktops/cutefish.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'cutefish', 'noto-fonts', ] diff --git a/archinstall/default_profiles/desktops/deepin.py b/archinstall/default_profiles/desktops/deepin.py index 1b871ed93f..ab88cfd703 100644 --- a/archinstall/default_profiles/desktops/deepin.py +++ b/archinstall/default_profiles/desktops/deepin.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'deepin', 'deepin-terminal', 'deepin-editor', diff --git a/archinstall/default_profiles/desktops/enlightenment.py b/archinstall/default_profiles/desktops/enlightenment.py index 7a329d9ea7..81f6cd9c44 100644 --- a/archinstall/default_profiles/desktops/enlightenment.py +++ b/archinstall/default_profiles/desktops/enlightenment.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'enlightenment', 'terminology', ] diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py index 58936434b1..d759ff743f 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 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, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 9593421140..36eadd0fa8 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 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, + is_wayland=True, + ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/i3.py b/archinstall/default_profiles/desktops/i3.py index b2a883afc8..fd81c96af4 100644 --- a/archinstall/default_profiles/desktops/i3.py +++ b/archinstall/default_profiles/desktops/i3.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'i3-wm', 'i3lock', 'i3status', diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index b4ebd95539..fe1eadfbc7 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 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, + is_wayland=True, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/lxqt.py b/archinstall/default_profiles/desktops/lxqt.py index 819134cdcb..9bf6baa64f 100644 --- a/archinstall/default_profiles/desktops/lxqt.py +++ b/archinstall/default_profiles/desktops/lxqt.py @@ -14,7 +14,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'lxqt', 'breeze-icons', 'oxygen-icons', diff --git a/archinstall/default_profiles/desktops/mate.py b/archinstall/default_profiles/desktops/mate.py index 8d3dc2e1a3..74baf75cb8 100644 --- a/archinstall/default_profiles/desktops/mate.py +++ b/archinstall/default_profiles/desktops/mate.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'mate', 'mate-extra', ] diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index 4ba613c212..00c95e68db 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 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, + is_wayland=True, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/plasma.py b/archinstall/default_profiles/desktops/plasma.py index a29a5c5c2f..0265dbb64b 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 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, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/qtile.py b/archinstall/default_profiles/desktops/qtile.py index eeb1713b21..86d1ad0efd 100644 --- a/archinstall/default_profiles/desktops/qtile.py +++ b/archinstall/default_profiles/desktops/qtile.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'qtile', 'alacritty', ] diff --git a/archinstall/default_profiles/desktops/river.py b/archinstall/default_profiles/desktops/river.py index 8e1396bb41..15035e107d 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 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, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 7418ad49db..9414100f26 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 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, + is_wayland=True, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/xfce4.py b/archinstall/default_profiles/desktops/xfce4.py index 34dfd8e342..c6a4988c97 100644 --- a/archinstall/default_profiles/desktops/xfce4.py +++ b/archinstall/default_profiles/desktops/xfce4.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'xfce4', 'xfce4-goodies', 'pavucontrol', diff --git a/archinstall/default_profiles/desktops/xmonad.py b/archinstall/default_profiles/desktops/xmonad.py index 4a9cac0b8e..8b8b9dcb87 100644 --- a/archinstall/default_profiles/desktops/xmonad.py +++ b/archinstall/default_profiles/desktops/xmonad.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'xmonad', 'xmonad-contrib', 'xmonad-extras', diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index df55f03fdb..f3cd43b783 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -52,6 +52,7 @@ def __init__( services: list[str] = [], support_gfx_driver: bool = False, support_greeter: bool = False, + is_wayland: bool = False, ) -> None: self.name = name self.profile_type = profile_type @@ -59,6 +60,7 @@ def __init__( self._support_gfx_driver = support_gfx_driver self._support_greeter = support_greeter + self._is_wayland = is_wayland # self.gfx_driver: str | None = None @@ -169,10 +171,21 @@ def is_graphic_driver_supported(self) -> bool: def is_greeter_supported(self) -> bool: return self._support_greeter + @property + def is_wayland(self) -> bool: + return self._is_wayland + def preview_text(self) -> str: """ Override this method to provide a preview text for the profile """ + if self.is_desktop_type_profile(): + display_type = 'Wayland' if self._is_wayland else 'Xorg' + text = tr('Environment type: {} {}').format(display_type, 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 52b03151ff..fd60c66964 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 + +if TYPE_CHECKING: + from archinstall.lib.installer import Installer class XorgProfile(Profile): @@ -16,17 +18,14 @@ def __init__( support_gfx_driver=True, ) - @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 5af72b0763..ae790febac 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 @@ def packages_text(self) -> str: 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 1145a09411..47e358aaa7 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -349,8 +349,8 @@ def _find_available_profiles(self) -> list[Profile]: 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)