diff --git a/archinstall/default_profiles/desktops/__init__.py b/archinstall/default_profiles/desktops/__init__.py index d91a0f3a93..e69de29bb2 100644 --- a/archinstall/default_profiles/desktops/__init__.py +++ b/archinstall/default_profiles/desktops/__init__.py @@ -1,6 +0,0 @@ -from enum import Enum - - -class SeatAccess(Enum): - seatd = 'seatd' - polkit = 'polkit' diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index fa0bc5810b..0bf46b96db 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -1,11 +1,7 @@ from typing import override -from archinstall.default_profiles.desktops import SeatAccess +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, 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(Profile): @@ -49,26 +45,8 @@ def services(self) -> list[str]: return [pref] return [] - async def _select_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give Hyprland access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get(CustomSetting.SeatAccess, None) - group.set_default_by_value(default) - - result = await Selection[SeatAccess]( - group, - header=header, - allow_skip=False, - ).show() - - if result.type_ == ResultType.Selection: - self.custom_settings[CustomSetting.SeatAccess] = result.get_value().value - @override async def do_on_select(self) -> None: - await self._select_seat_access() + default = self.custom_settings.get(CustomSetting.SeatAccess, None) + seat_access = await select_seat_access(self.name, default) + self.custom_settings[CustomSetting.SeatAccess] = seat_access.value diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index bf4a32975c..48fe344e13 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -1,11 +1,7 @@ from typing import override -from archinstall.default_profiles.desktops import SeatAccess +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, 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(Profile): @@ -43,26 +39,8 @@ def services(self) -> list[str]: return [pref] return [] - async def _select_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give labwc access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get(CustomSetting.SeatAccess, None) - group.set_default_by_value(default) - - result = await Selection[SeatAccess]( - group, - header=header, - allow_skip=False, - ).show() - - if result.type_ == ResultType.Selection: - self.custom_settings[CustomSetting.SeatAccess] = result.get_value().value - @override async def do_on_select(self) -> None: - await self._select_seat_access() + default = self.custom_settings.get(CustomSetting.SeatAccess, None) + seat_access = await select_seat_access(self.name, default) + self.custom_settings[CustomSetting.SeatAccess] = seat_access.value diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index 347290fed0..4d955fbfdc 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -1,11 +1,7 @@ from typing import override -from archinstall.default_profiles.desktops import SeatAccess +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, 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(Profile): @@ -51,26 +47,8 @@ def services(self) -> list[str]: return [pref] return [] - async def _select_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give niri access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get(CustomSetting.SeatAccess, None) - group.set_default_by_value(default) - - result = await Selection[SeatAccess]( - group, - header=header, - allow_skip=False, - ).show() - - if result.type_ == ResultType.Selection: - self.custom_settings[CustomSetting.SeatAccess] = result.get_value().value - @override async def do_on_select(self) -> None: - await self._select_seat_access() + default = self.custom_settings.get(CustomSetting.SeatAccess, None) + seat_access = await select_seat_access(self.name, default) + self.custom_settings[CustomSetting.SeatAccess] = seat_access.value diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 5d22230762..7a038dc0ba 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -1,11 +1,7 @@ from typing import override -from archinstall.default_profiles.desktops import SeatAccess +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, 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(Profile): @@ -53,26 +49,8 @@ def services(self) -> list[str]: return [pref] return [] - async def _select_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give Sway access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get(CustomSetting.SeatAccess, None) - group.set_default_by_value(default) - - result = await Selection[SeatAccess]( - group, - header=header, - allow_skip=False, - ).show() - - if result.type_ == ResultType.Selection: - self.custom_settings[CustomSetting.SeatAccess] = result.get_value().value - @override async def do_on_select(self) -> None: - await self._select_seat_access() + default = self.custom_settings.get(CustomSetting.SeatAccess, None) + seat_access = await select_seat_access(self.name, default) + self.custom_settings[CustomSetting.SeatAccess] = seat_access.value diff --git a/archinstall/default_profiles/desktops/utils.py b/archinstall/default_profiles/desktops/utils.py new file mode 100644 index 0000000000..f13bff3aa1 --- /dev/null +++ b/archinstall/default_profiles/desktops/utils.py @@ -0,0 +1,33 @@ +from enum import Enum + +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 SeatAccess(Enum): + seatd = 'seatd' + polkit = 'polkit' + + +async def select_seat_access(profile_name: str, default: str | None) -> SeatAccess: + header = tr('{} needs access to your seat').format(profile_name) + header += f' ({tr("collection of hardware devices i.e. keyboard, mouse")})' + '\n' + header += tr('Choose an option how to give access to your hardware') + + items = [MenuItem(s.value, value=s) for s in SeatAccess] + group = MenuItemGroup(items, sort_items=True) + + group.set_default_by_value(default) + + result = await Selection[SeatAccess]( + group, + header=header, + allow_skip=False, + ).show() + + if result.type_ == ResultType.Selection: + return result.get_value() + else: + raise ValueError('Unexpected result type from seat access selection')