From 00b0ae7ba439a5a420095175b3bedd52c569db51 Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Wed, 19 Apr 2023 20:55:42 +1000 Subject: PyParted and a large rewrite of the underlying partitioning (#1604) * Invert mypy files * Add optional pre-commit hooks * New profile structure * Serialize profiles * Use profile instead of classmethod * Custom profile setup * Separator between back * Support profile import via url * Move profiles module * Refactor files * Remove symlink * Add user to docker group * Update schema description * Handle list services * mypy fixes * mypy fixes * Rename profilesv2 to profiles * flake8 * mypy again * Support selecting DM * Fix mypy * Cleanup * Update greeter setting * Update schema * Revert toml changes * Poc external dependencies * Dependency support * New encryption menu * flake8 * Mypy and flake8 * Unify lsblk command * Update bootloader configuration * Git hooks * Fix import * Pyparted * Remove custom font setting * flake8 * Remove default preview * Manual partitioning menu * Update structure * Disk configuration * Update filesystem * luks2 encryption * Everything works until installation * Btrfsutil * Btrfs handling * Update btrfs * Save encryption config * Fix pipewire issue * Update mypy version * Update all pre-commit * Update package versions * Revert audio/pipewire * Merge master PRs * Add master changes * Merge master changes * Small renaming * Pull master changes * Reset disk enc after disk config change * Generate locals * Update naming * Fix imports * Fix broken sync * Fix pre selection on table menu * Profile menu * Update profile * Fix post_install * Added python-pyparted to PKGBUILD, this requires [testing] to be enabled in order to run makepkg. Package still works via python -m build etc. * Swaped around some setuptools logic in pyproject Since we define `package-data` and `packages` there should be no need for: ``` [tool.setuptools.packages.find] where = ["archinstall", "archinstall.*"] ``` * Removed pyproject collisions. Duplicate definitions. * Made sure pyproject.toml includes languages * Add example and update README * Fix pyproject issues * Generate locale * Refactor imports * Simplify imports * Add profile description and package examples * Align code * Fix mypy * Simplify imports * Fix saving config * Fix wrong luks merge * Refactor installation * Fix cdrom device loading * Fix wrongly merged code * Fix imports and greeter * Don't terminate on partprobe error * Use specific path on partprobe from luks * Update archinstall/lib/disk/device_model.py Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com> * Update archinstall/lib/disk/device_model.py Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com> * Update github workflow to test archinstall installation * Update sway merge * Generate locales * Update workflow --------- Co-authored-by: Daniel Girtler Co-authored-by: Anton Hvornum Co-authored-by: Anton Hvornum Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com> --- archinstall/default_profiles/desktops/__init__.py | 0 archinstall/default_profiles/desktops/awesome.py | 36 ++++++++++++ archinstall/default_profiles/desktops/bspwm.py | 30 ++++++++++ archinstall/default_profiles/desktops/budgie.py | 30 ++++++++++ archinstall/default_profiles/desktops/cinnamon.py | 31 ++++++++++ archinstall/default_profiles/desktops/cutefish.py | 31 ++++++++++ archinstall/default_profiles/desktops/deepin.py | 28 +++++++++ .../default_profiles/desktops/enlightenment.py | 27 +++++++++ archinstall/default_profiles/desktops/gnome.py | 27 +++++++++ archinstall/default_profiles/desktops/i3.py | 33 +++++++++++ archinstall/default_profiles/desktops/kde.py | 32 +++++++++++ archinstall/default_profiles/desktops/lxqt.py | 35 ++++++++++++ archinstall/default_profiles/desktops/mate.py | 27 +++++++++ archinstall/default_profiles/desktops/qtile.py | 27 +++++++++ archinstall/default_profiles/desktops/sway.py | 66 ++++++++++++++++++++++ archinstall/default_profiles/desktops/xfce4.py | 30 ++++++++++ 16 files changed, 490 insertions(+) create mode 100644 archinstall/default_profiles/desktops/__init__.py create mode 100644 archinstall/default_profiles/desktops/awesome.py create mode 100644 archinstall/default_profiles/desktops/bspwm.py create mode 100644 archinstall/default_profiles/desktops/budgie.py create mode 100644 archinstall/default_profiles/desktops/cinnamon.py create mode 100644 archinstall/default_profiles/desktops/cutefish.py create mode 100644 archinstall/default_profiles/desktops/deepin.py create mode 100644 archinstall/default_profiles/desktops/enlightenment.py create mode 100644 archinstall/default_profiles/desktops/gnome.py create mode 100644 archinstall/default_profiles/desktops/i3.py create mode 100644 archinstall/default_profiles/desktops/kde.py create mode 100644 archinstall/default_profiles/desktops/lxqt.py create mode 100644 archinstall/default_profiles/desktops/mate.py create mode 100644 archinstall/default_profiles/desktops/qtile.py create mode 100644 archinstall/default_profiles/desktops/sway.py create mode 100644 archinstall/default_profiles/desktops/xfce4.py (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/__init__.py b/archinstall/default_profiles/desktops/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py new file mode 100644 index 00000000..bb481914 --- /dev/null +++ b/archinstall/default_profiles/desktops/awesome.py @@ -0,0 +1,36 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + from archinstall.lib.installer import Installer + _: Any + + +class AwesomeProfile(XorgProfile): + def __init__(self): + super().__init__('Awesome', ProfileType.WindowMgr, description='') + + @property + def packages(self) -> List[str]: + return ['alacritty'] + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() + + def install(self, install_session: 'Installer'): + super().install(install_session) + + # TODO: Copy a full configuration to ~/.config/awesome/rc.lua instead. + with open(f"{install_session.target}/etc/xdg/awesome/rc.lua", 'r') as fh: + awesome_lua = fh.read() + + # Replace xterm with alacritty for a smoother experience. + awesome_lua = awesome_lua.replace('"xterm"', '"alacritty"') + + with open(f"{install_session.target}/etc/xdg/awesome/rc.lua", 'w') as fh: + fh.write(awesome_lua) + + # TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config) diff --git a/archinstall/default_profiles/desktops/bspwm.py b/archinstall/default_profiles/desktops/bspwm.py new file mode 100644 index 00000000..f3bc982d --- /dev/null +++ b/archinstall/default_profiles/desktops/bspwm.py @@ -0,0 +1,30 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class BspwmProfile(XorgProfile): + def __init__(self): + super().__init__('Bspwm', ProfileType.WindowMgr, description='') + + @property + def packages(self) -> List[str]: + return [ + 'bspwm', + 'sxhkd', + 'dmenu', + 'xdo', + 'rxvt-unicode' + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py new file mode 100644 index 00000000..32bd718d --- /dev/null +++ b/archinstall/default_profiles/desktops/budgie.py @@ -0,0 +1,30 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class BudgieProfile(XorgProfile): + def __init__(self): + super().__init__('Budgie', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "arc-gtk-theme", + "budgie", + "mate-terminal", + "nemo", + "papirus-icon-theme", + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/cinnamon.py b/archinstall/default_profiles/desktops/cinnamon.py new file mode 100644 index 00000000..22fd0d9d --- /dev/null +++ b/archinstall/default_profiles/desktops/cinnamon.py @@ -0,0 +1,31 @@ +from typing import Optional, List, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class CinnamonProfile(XorgProfile): + def __init__(self): + super().__init__('Cinnamon', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "cinnamon", + "system-config-printer", + "gnome-keyring", + "gnome-terminal", + "blueberry", + "metacity" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/cutefish.py b/archinstall/default_profiles/desktops/cutefish.py new file mode 100644 index 00000000..6f88c47a --- /dev/null +++ b/archinstall/default_profiles/desktops/cutefish.py @@ -0,0 +1,31 @@ +from typing import Optional, List, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + from archinstall.lib.installer import Installer + _: Any + + +class CutefishProfile(XorgProfile): + def __init__(self): + super().__init__('Cutefish', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "cutefish", + "noto-fonts" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Sddm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() + + def install(self, install_session: 'Installer'): + super().install(install_session) diff --git a/archinstall/default_profiles/desktops/deepin.py b/archinstall/default_profiles/desktops/deepin.py new file mode 100644 index 00000000..054c8fdf --- /dev/null +++ b/archinstall/default_profiles/desktops/deepin.py @@ -0,0 +1,28 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class DeepinProfile(XorgProfile): + def __init__(self): + super().__init__('Deepin', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "deepin", + "deepin-terminal", + "deepin-editor" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/enlightenment.py b/archinstall/default_profiles/desktops/enlightenment.py new file mode 100644 index 00000000..164f64fe --- /dev/null +++ b/archinstall/default_profiles/desktops/enlightenment.py @@ -0,0 +1,27 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class EnlighenmentProfile(XorgProfile): + def __init__(self): + super().__init__('Enlightenment', ProfileType.WindowMgr, description='') + + @property + def packages(self) -> List[str]: + return [ + "enlightenment", + "terminology" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py new file mode 100644 index 00000000..3cbd49bd --- /dev/null +++ b/archinstall/default_profiles/desktops/gnome.py @@ -0,0 +1,27 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class GnomeProfile(XorgProfile): + def __init__(self): + super().__init__('Gnome', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + 'gnome', + 'gnome-tweaks' + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Gdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/i3.py b/archinstall/default_profiles/desktops/i3.py new file mode 100644 index 00000000..7c6f24ca --- /dev/null +++ b/archinstall/default_profiles/desktops/i3.py @@ -0,0 +1,33 @@ +from typing import Optional, List, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class I3wmProfile(XorgProfile): + def __init__(self): + super().__init__('i3-wm', ProfileType.WindowMgr, description='') + + @property + def packages(self) -> List[str]: + return [ + 'i3-wm', + 'i3lock', + 'i3status', + 'i3blocks', + 'xterm', + 'lightdm-gtk-greeter', + 'lightdm', + 'dmenu', + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/kde.py b/archinstall/default_profiles/desktops/kde.py new file mode 100644 index 00000000..cd02e069 --- /dev/null +++ b/archinstall/default_profiles/desktops/kde.py @@ -0,0 +1,32 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class KdeProfile(XorgProfile): + def __init__(self): + super().__init__('Kde', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "plasma-meta", + "konsole", + "kwrite", + "dolphin", + "ark", + "plasma-wayland-session", + "egl-wayland" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Sddm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/lxqt.py b/archinstall/default_profiles/desktops/lxqt.py new file mode 100644 index 00000000..146e168e --- /dev/null +++ b/archinstall/default_profiles/desktops/lxqt.py @@ -0,0 +1,35 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class LxqtProfile(XorgProfile): + def __init__(self): + super().__init__('Lxqt', ProfileType.DesktopEnv, description='') + + # 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. + # https://github.com/lxqt/lxqt/issues/795 + @property + def packages(self) -> List[str]: + return [ + "lxqt", + "breeze-icons", + "oxygen-icons", + "xdg-utils", + "ttf-freefont", + "leafpad", + "slock", + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Sddm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/mate.py b/archinstall/default_profiles/desktops/mate.py new file mode 100644 index 00000000..0ddaaaab --- /dev/null +++ b/archinstall/default_profiles/desktops/mate.py @@ -0,0 +1,27 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class MateProfile(XorgProfile): + def __init__(self): + super().__init__('Mate', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "mate", + "mate-extra" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/qtile.py b/archinstall/default_profiles/desktops/qtile.py new file mode 100644 index 00000000..66c6fa1b --- /dev/null +++ b/archinstall/default_profiles/desktops/qtile.py @@ -0,0 +1,27 @@ +from typing import Optional, List, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class QtileProfile(XorgProfile): + def __init__(self): + super().__init__('Qtile', ProfileType.WindowMgr, description='') + + @property + def packages(self) -> List[str]: + return [ + 'qtile', + 'alacritty' + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py new file mode 100644 index 00000000..519f5bbb --- /dev/null +++ b/archinstall/default_profiles/desktops/sway.py @@ -0,0 +1,66 @@ +from typing import List, Optional, TYPE_CHECKING, Any + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile +from archinstall.lib.menu import Menu + +if TYPE_CHECKING: + from archinstall.lib.installer import Installer + _: Any + + +class SwayProfile(XorgProfile): + def __init__(self): + super().__init__( + 'Sway', + ProfileType.WindowMgr, + description='' + ) + self._control_preference = [] + + @property + def packages(self) -> List[str]: + return [ + "sway", + "swaybg", + "swaylock", + "swayidle", + "waybar", + "dmenu", + "brightnessctl", + "grim", + "slurp", + "pavucontrol", + "foot", + "xorg-xwayland" + ] + self._control_preference + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + @property + def services(self) -> List[str]: + if "seatd" in self._control_preference: + return ['seatd'] + elif "polkit" in self._control_preference: + return ['polkit'] + + return [] + + def _get_system_privelege_control_preference(self): + # need to activate seat service and add to seat group + title = str(_('Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)')) + title += str(_('\n\nChoose an option to give Sway access to your hardware')) + choice = Menu(title, ["polkit", "seatd"], skip=False).run() + self._control_preference = [choice.value] + + def do_on_select(self): + self._get_system_privelege_control_preference() + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() + + def install(self, install_session: 'Installer'): + super().install(install_session) diff --git a/archinstall/default_profiles/desktops/xfce4.py b/archinstall/default_profiles/desktops/xfce4.py new file mode 100644 index 00000000..bd6c3038 --- /dev/null +++ b/archinstall/default_profiles/desktops/xfce4.py @@ -0,0 +1,30 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class Xfce4Profile(XorgProfile): + def __init__(self): + super().__init__('Xfce4', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "xfce4", + "xfce4-goodies", + "pavucontrol", + "gvfs", + "xarchiver" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() -- cgit v1.2.3-70-g09d2 From 15199081e542caf38c9c0f163af764616d9420ef Mon Sep 17 00:00:00 2001 From: xenium <76689618+xeniumcode@users.noreply.github.com> Date: Thu, 4 May 2023 21:00:40 +0530 Subject: Adding Hyperland wm (#1785) --- archinstall/default_profiles/desktops/hyperland.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 archinstall/default_profiles/desktops/hyperland.py (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/hyperland.py b/archinstall/default_profiles/desktops/hyperland.py new file mode 100644 index 00000000..e55dd7c4 --- /dev/null +++ b/archinstall/default_profiles/desktops/hyperland.py @@ -0,0 +1,31 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class HyperlandProfile(XorgProfile): + def __init__(self): + super().__init__('Hyperland', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "hyprland", + "dunst", + "xdg-desktop-portal-hyprland", + "kitty", + "qt5-wayland", + "qt6-wayland" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Sddm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() -- cgit v1.2.3-70-g09d2 From 235c1190b003b8f69ff344d6e2ac31f4bd1d0ba2 Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Sat, 6 May 2023 16:09:58 +1000 Subject: Fix 1763 (#1790) * Fix 1763 --------- Co-authored-by: Daniel Girtler --- archinstall/default_profiles/desktops/sway.py | 37 +++++++++++++++++++-------- archinstall/default_profiles/profile.py | 25 ++++++++---------- archinstall/lib/profile/profiles_handler.py | 8 ++++++ 3 files changed, 44 insertions(+), 26 deletions(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 519f5bbb..ae814e46 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -1,3 +1,4 @@ +from enum import Enum from typing import List, Optional, TYPE_CHECKING, Any from archinstall.default_profiles.profile import ProfileType, GreeterType @@ -9,6 +10,11 @@ if TYPE_CHECKING: _: Any +class SeatAccess(Enum): + seatd = 'seatd' + polkit = 'polkit' + + class SwayProfile(XorgProfile): def __init__(self): super().__init__( @@ -16,10 +22,15 @@ class SwayProfile(XorgProfile): ProfileType.WindowMgr, description='' ) - self._control_preference = [] + + self.custom_settings = {'seat_access': None} @property def packages(self) -> List[str]: + additional = [] + if seat := self.custom_settings.get('seat_access', None): + additional = [seat] + return [ "sway", "swaybg", @@ -33,7 +44,7 @@ class SwayProfile(XorgProfile): "pavucontrol", "foot", "xorg-xwayland" - ] + self._control_preference + ] + additional @property def default_greeter_type(self) -> Optional[GreeterType]: @@ -41,22 +52,26 @@ class SwayProfile(XorgProfile): @property def services(self) -> List[str]: - if "seatd" in self._control_preference: - return ['seatd'] - elif "polkit" in self._control_preference: - return ['polkit'] - + if pref := self.custom_settings.get('seat_access', None): + return [pref.value] return [] - def _get_system_privelege_control_preference(self): + def _ask_seat_access(self): # need to activate seat service and add to seat group title = str(_('Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)')) title += str(_('\n\nChoose an option to give Sway access to your hardware')) - choice = Menu(title, ["polkit", "seatd"], skip=False).run() - self._control_preference = [choice.value] + + options = [e.value for e in SeatAccess] + default = None + + if seat := self.custom_settings.get('seat_access', None): + default = seat + + choice = Menu(title, options, skip=False, preset_values=default).run() + self.custom_settings['seat_access'] = choice.single_value def do_on_select(self): - self._get_system_privelege_control_preference() + self._ask_seat_access() def preview_text(self) -> Optional[str]: text = str(_('Environment type: {}')).format(self.profile_type.value) diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index c7d6b3dc..b1ad1f50 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -1,6 +1,5 @@ from __future__ import annotations -from dataclasses import dataclass from enum import Enum, auto from typing import List, Optional, Any, Dict, TYPE_CHECKING, TypeVar @@ -43,20 +42,6 @@ class SelectResult(Enum): ResetCurrent = auto() -@dataclass -class ProfileInfo: - name: str - details: Optional[str] - gfx_driver: Optional[str] = None - greeter: Optional[str] = None - - @property - def absolute_name(self) -> str: - if self.details is not None: - return self.details - return self.name - - class Profile: def __init__( self, @@ -72,6 +57,8 @@ class Profile: self.name = name self.description = description self.profile_type = profile_type + self.custom_settings: Dict[str, Any] = {} + self._support_gfx_driver = support_gfx_driver self._support_greeter = support_greeter @@ -135,6 +122,14 @@ class Profile: """ return SelectResult.NewSelection + def set_custom_settings(self, settings: Dict[str, Any]): + """ + Set the custom settings for the profile. + This is also called when the settings are parsed from the config + and can be overriden to perform further actions based on the profile + """ + self.custom_settings = settings + def current_selection_names(self) -> List[str]: if self._current_selection: return [s.name for s in self._current_selection] diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 824849c3..6ed95f8e 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -43,6 +43,7 @@ class ProfileHandler: data = { 'main': profile.name, 'details': [profile.name for profile in profile.current_selection], + 'custom_settings': {profile.name: profile.custom_settings for profile in profile.current_selection} } if self._url_path is not None: @@ -98,6 +99,7 @@ class ProfileHandler: profile = self.get_profile_by_name(main) if main else None valid: List[Profile] = [] + if details := profile_config.get('details', []): resolved = {detail: self.get_profile_by_name(detail) for detail in details if detail} valid = [p for p in resolved.values() if p is not None] @@ -106,6 +108,12 @@ class ProfileHandler: if invalid: log(f'No profile definition found: {invalid}') + custom_settings = profile_config.get('custom_settings', {}) + for profile in valid: + profile.set_custom_settings( + custom_settings.get(profile.name, {}) + ) + if profile is not None: profile.set_current_selection(valid) -- cgit v1.2.3-70-g09d2 From 1b0c8f3ce3bc7887632f0d08b7afe8073f7a3958 Mon Sep 17 00:00:00 2001 From: Nikita Triblya <69369034+Tr3bleee@users.noreply.github.com> Date: Mon, 12 Jun 2023 10:54:38 +0200 Subject: Removed comma at the end of package listing in i3.py (#1839) Removed comma at the end of package listing in i3.py --- archinstall/default_profiles/desktops/i3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/i3.py b/archinstall/default_profiles/desktops/i3.py index 7c6f24ca..93c38906 100644 --- a/archinstall/default_profiles/desktops/i3.py +++ b/archinstall/default_profiles/desktops/i3.py @@ -21,7 +21,7 @@ class I3wmProfile(XorgProfile): 'xterm', 'lightdm-gtk-greeter', 'lightdm', - 'dmenu', + 'dmenu' ] @property -- cgit v1.2.3-70-g09d2 From 64a0d097f047b8923881daa1d4c2516aa6538dae Mon Sep 17 00:00:00 2001 From: Nikita Triblya <69369034+Tr3bleee@users.noreply.github.com> Date: Wed, 21 Jun 2023 09:48:48 +0200 Subject: Update budgie.py (#1877) Removed the comma after the "papirus-icon-theme" package, since it is the final package --- archinstall/default_profiles/desktops/budgie.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py index 32bd718d..93be320f 100644 --- a/archinstall/default_profiles/desktops/budgie.py +++ b/archinstall/default_profiles/desktops/budgie.py @@ -18,7 +18,7 @@ class BudgieProfile(XorgProfile): "budgie", "mate-terminal", "nemo", - "papirus-icon-theme", + "papirus-icon-theme" ] @property -- cgit v1.2.3-70-g09d2 From 96cb6cc943758664ca4b91ea8adc4c4e29f124d2 Mon Sep 17 00:00:00 2001 From: Nikita Triblya <69369034+Tr3bleee@users.noreply.github.com> Date: Wed, 21 Jun 2023 09:49:06 +0200 Subject: Update lxqt.py (#1878) Removed the comma after the "slock" package, since it is the final package --- archinstall/default_profiles/desktops/lxqt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/lxqt.py b/archinstall/default_profiles/desktops/lxqt.py index 146e168e..60bf47f2 100644 --- a/archinstall/default_profiles/desktops/lxqt.py +++ b/archinstall/default_profiles/desktops/lxqt.py @@ -23,7 +23,7 @@ class LxqtProfile(XorgProfile): "xdg-utils", "ttf-freefont", "leafpad", - "slock", + "slock" ] @property -- cgit v1.2.3-70-g09d2 From 2450c7bdff093aafba4a227156234ceed1887c31 Mon Sep 17 00:00:00 2001 From: Sumit Patel <89197795+Dark-Kernel@users.noreply.github.com> Date: Wed, 28 Jun 2023 23:34:32 +0530 Subject: Created dwm.py (#1902) Created dwm.py for suckless users. --- archinstall/default_profiles/desktops/dwm.py | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 archinstall/default_profiles/desktops/dwm.py (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/dwm.py b/archinstall/default_profiles/desktops/dwm.py new file mode 100644 index 00000000..3a7c0348 --- /dev/null +++ b/archinstall/default_profiles/desktops/dwm.py @@ -0,0 +1,35 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + + +class BspwmProfile(XorgProfile): + def __init__(self): + super().__init__('Bspwm', ProfileType.WindowMgr, description='') + + @property + def packages(self) -> List[str]: + return [ + 'dwm', + 'st', + 'dmenu', + 'picom', + 'xorg-xsetroot', + 'xorg-xset', + 'pywal', + 'xdo', + 'dunst', + 'slock' + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Lightdm + + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() -- cgit v1.2.3-70-g09d2 From 025ee8f064f6a142aa3de702c42c52101e8da9f6 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 28 Jun 2023 23:07:25 +0200 Subject: Fixed indentation issues from #1902 (#1904) --- archinstall/default_profiles/desktops/dwm.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/dwm.py b/archinstall/default_profiles/desktops/dwm.py index 3a7c0348..6b9ca6bc 100644 --- a/archinstall/default_profiles/desktops/dwm.py +++ b/archinstall/default_profiles/desktops/dwm.py @@ -19,11 +19,11 @@ class BspwmProfile(XorgProfile): 'dmenu', 'picom', 'xorg-xsetroot', - 'xorg-xset', - 'pywal', - 'xdo', - 'dunst', - 'slock' + 'xorg-xset', + 'pywal', + 'xdo', + 'dunst', + 'slock' ] @property -- cgit v1.2.3-70-g09d2 From 58bccccd5d2048dd002ec0f2efeb185e480a72bd Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Thu, 29 Jun 2023 09:49:22 +0200 Subject: Revert "Created dwm.py (#1902)" - This reverts commit 2450c7bdff093aafba4a227156234ceed1887c31. (#1905) --- archinstall/default_profiles/desktops/dwm.py | 35 ---------------------------- 1 file changed, 35 deletions(-) delete mode 100644 archinstall/default_profiles/desktops/dwm.py (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/dwm.py b/archinstall/default_profiles/desktops/dwm.py deleted file mode 100644 index 6b9ca6bc..00000000 --- a/archinstall/default_profiles/desktops/dwm.py +++ /dev/null @@ -1,35 +0,0 @@ -from typing import List, Optional, Any, TYPE_CHECKING - -from archinstall.default_profiles.profile import ProfileType, GreeterType -from archinstall.default_profiles.xorg import XorgProfile - -if TYPE_CHECKING: - _: Any - - -class BspwmProfile(XorgProfile): - def __init__(self): - super().__init__('Bspwm', ProfileType.WindowMgr, description='') - - @property - def packages(self) -> List[str]: - return [ - 'dwm', - 'st', - 'dmenu', - 'picom', - 'xorg-xsetroot', - 'xorg-xset', - 'pywal', - 'xdo', - 'dunst', - 'slock' - ] - - @property - def default_greeter_type(self) -> Optional[GreeterType]: - return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() -- cgit v1.2.3-70-g09d2 From 29b528072551f32a0075b3f5c9d91d5ded019534 Mon Sep 17 00:00:00 2001 From: codefiles <11915375+codefiles@users.noreply.github.com> Date: Sat, 29 Jul 2023 06:20:55 -0400 Subject: Add `awesome` package to Awesome profile (#1954) --- archinstall/default_profiles/desktops/awesome.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py index bb481914..371e51db 100644 --- a/archinstall/default_profiles/desktops/awesome.py +++ b/archinstall/default_profiles/desktops/awesome.py @@ -14,7 +14,10 @@ class AwesomeProfile(XorgProfile): @property def packages(self) -> List[str]: - return ['alacritty'] + return [ + 'awesome', + 'alacritty' + ] def preview_text(self) -> Optional[str]: text = str(_('Environment type: {}')).format(self.profile_type.value) -- cgit v1.2.3-70-g09d2 From a43344c5ae2249ddb70e535637915b30563c5038 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sun, 30 Jul 2023 00:28:21 +0200 Subject: Adding pack packages to profiles after they were removed (#1956) * Added back xinit for awesome, since it can be used without a greeter, as well as other useful tools we've had in previous releases * Fixing xinitrc for awesome profile * Attempting to grab xorg packages when installing the desktop profile * Spelling error on xorg-server * Fixed sway value error on seat selection --- archinstall/__init__.py | 4 +-- archinstall/default_profiles/desktops/awesome.py | 32 ++++++++++++++++++++++-- archinstall/default_profiles/desktops/bspwm.py | 22 ++++++++++++++++ archinstall/default_profiles/desktops/sway.py | 2 +- archinstall/default_profiles/xorg.py | 8 +++++- archinstall/lib/general.py | 2 +- 6 files changed, 63 insertions(+), 7 deletions(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/__init__.py b/archinstall/__init__.py index cfaecd16..56f0b278 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -145,12 +145,12 @@ def cleanup_empty_args(args: Union[Namespace, Dict]) -> Dict: Takes arguments (dictionary or argparse Namespace) and removes any None values. This ensures clean mergers during dict.update(args) """ - if type(args) == Namespace: + if type(args) is Namespace: args = vars(args) clean_args = {} for key, val in args.items(): - if type(val) == dict: + if isinstance(val, dict): val = cleanup_empty_args(val) if val is not None: diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py index 371e51db..79e0eb71 100644 --- a/archinstall/default_profiles/desktops/awesome.py +++ b/archinstall/default_profiles/desktops/awesome.py @@ -14,9 +14,18 @@ class AwesomeProfile(XorgProfile): @property def packages(self) -> List[str]: - return [ + return super().packages + [ 'awesome', - 'alacritty' + 'alacritty', + 'xorg-xinit', + 'xorg-xrandr', + 'xterm', + 'feh', + 'slock', + 'terminus-font', + 'gnu-free-fonts', + 'ttf-liberation', + 'xsel', ] def preview_text(self) -> Optional[str]: @@ -37,3 +46,22 @@ class AwesomeProfile(XorgProfile): fh.write(awesome_lua) # TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config) + + # TODO: check if we selected a greeter, + # but for now, awesome is intended to run without one. + with open(f"{install_session.target}/etc/X11/xinit/xinitrc", 'r') as xinitrc: + xinitrc_data = xinitrc.read() + + for line in xinitrc_data.split('\n'): + if "twm &" in line: + xinitrc_data = xinitrc_data.replace(line, f"# {line}") + if "xclock" in line: + xinitrc_data = xinitrc_data.replace(line, f"# {line}") + if "xterm" in line: + xinitrc_data = xinitrc_data.replace(line, f"# {line}") + + xinitrc_data += '\n' + xinitrc_data += 'exec awesome\n' + + with open(f"{install_session.target}/etc/X11/xinit/xinitrc", 'w') as xinitrc: + xinitrc.write(xinitrc_data) \ No newline at end of file diff --git a/archinstall/default_profiles/desktops/bspwm.py b/archinstall/default_profiles/desktops/bspwm.py index f3bc982d..2a29f41b 100644 --- a/archinstall/default_profiles/desktops/bspwm.py +++ b/archinstall/default_profiles/desktops/bspwm.py @@ -13,6 +13,7 @@ class BspwmProfile(XorgProfile): @property def packages(self) -> List[str]: + # return super().packages + [ return [ 'bspwm', 'sxhkd', @@ -28,3 +29,24 @@ class BspwmProfile(XorgProfile): def preview_text(self) -> Optional[str]: text = str(_('Environment type: {}')).format(self.profile_type.value) return text + '\n' + self.packages_text() + + # The wiki specified xinit, but we already use greeter? + # https://wiki.archlinux.org/title/Bspwm#Starting + # + # # TODO: check if we selected a greeter, else run this: + # with open(f"{install_session.target}/etc/X11/xinit/xinitrc", 'r') as xinitrc: + # xinitrc_data = xinitrc.read() + + # for line in xinitrc_data.split('\n'): + # if "twm &" in line: + # xinitrc_data = xinitrc_data.replace(line, f"# {line}") + # if "xclock" in line: + # xinitrc_data = xinitrc_data.replace(line, f"# {line}") + # if "xterm" in line: + # xinitrc_data = xinitrc_data.replace(line, f"# {line}") + + # xinitrc_data += '\n' + # xinitrc_data += 'exec bspwn\n' + + # with open(f"{install_session.target}/etc/X11/xinit/xinitrc", 'w') as xinitrc: + # xinitrc.write(xinitrc_data) diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index ae814e46..25d74a88 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -53,7 +53,7 @@ class SwayProfile(XorgProfile): @property def services(self) -> List[str]: if pref := self.custom_settings.get('seat_access', None): - return [pref.value] + return [pref] return [] def _ask_seat_access(self): diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index 553421a4..13154818 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -1,4 +1,4 @@ -from typing import Any, TYPE_CHECKING +from typing import Any, TYPE_CHECKING, List from archinstall.default_profiles.profile import Profile, ProfileType @@ -19,3 +19,9 @@ class XorgProfile(Profile): description=description, support_gfx_driver=True ) + + @property + def packages(self) -> List[str]: + return [ + 'xorg-server' + ] diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 473f85a4..90af25ed 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -211,7 +211,7 @@ class SysCommandWorker: return False def write(self, data: bytes, line_ending :bool = True) -> int: - assert type(data) == bytes # TODO: Maybe we can support str as well and encode it + assert isinstance(data, bytes) # TODO: Maybe we can support str as well and encode it self.make_sure_we_are_executing() -- cgit v1.2.3-70-g09d2 From f8d269092033f49b9f9621580fa1862e0c3b6cdb Mon Sep 17 00:00:00 2001 From: Himadri Bhattacharjee <107522312+lavafroth@users.noreply.github.com> Date: Mon, 31 Jul 2023 07:40:45 +0000 Subject: move preview text method for profiles into xorg superclass, override when needed (#1918) Co-authored-by: Anton Hvornum --- archinstall/default_profiles/desktops/awesome.py | 6 +----- archinstall/default_profiles/desktops/budgie.py | 4 ---- archinstall/default_profiles/desktops/cinnamon.py | 4 ---- archinstall/default_profiles/desktops/cutefish.py | 4 ---- archinstall/default_profiles/desktops/deepin.py | 4 ---- archinstall/default_profiles/desktops/enlightenment.py | 4 ---- archinstall/default_profiles/desktops/gnome.py | 4 ---- archinstall/default_profiles/desktops/hyperland.py | 4 ---- archinstall/default_profiles/desktops/i3.py | 4 ---- archinstall/default_profiles/desktops/kde.py | 4 ---- archinstall/default_profiles/desktops/lxqt.py | 4 ---- archinstall/default_profiles/desktops/mate.py | 4 ---- archinstall/default_profiles/desktops/qtile.py | 4 ---- archinstall/default_profiles/desktops/sway.py | 4 ---- archinstall/default_profiles/desktops/xfce4.py | 4 ---- archinstall/default_profiles/xorg.py | 6 +++++- 16 files changed, 6 insertions(+), 62 deletions(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py index 79e0eb71..3833ce71 100644 --- a/archinstall/default_profiles/desktops/awesome.py +++ b/archinstall/default_profiles/desktops/awesome.py @@ -1,4 +1,4 @@ -from typing import List, Optional, Any, TYPE_CHECKING +from typing import List, Any, TYPE_CHECKING from archinstall.default_profiles.profile import ProfileType from archinstall.default_profiles.xorg import XorgProfile @@ -28,10 +28,6 @@ class AwesomeProfile(XorgProfile): 'xsel', ] - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() - def install(self, install_session: 'Installer'): super().install(install_session) diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py index 93be320f..68506d45 100644 --- a/archinstall/default_profiles/desktops/budgie.py +++ b/archinstall/default_profiles/desktops/budgie.py @@ -24,7 +24,3 @@ class BudgieProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/cinnamon.py b/archinstall/default_profiles/desktops/cinnamon.py index 22fd0d9d..a819b4d1 100644 --- a/archinstall/default_profiles/desktops/cinnamon.py +++ b/archinstall/default_profiles/desktops/cinnamon.py @@ -25,7 +25,3 @@ class CinnamonProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/cutefish.py b/archinstall/default_profiles/desktops/cutefish.py index 6f88c47a..c4202920 100644 --- a/archinstall/default_profiles/desktops/cutefish.py +++ b/archinstall/default_profiles/desktops/cutefish.py @@ -23,9 +23,5 @@ class CutefishProfile(XorgProfile): def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Sddm - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() - def install(self, install_session: 'Installer'): super().install(install_session) diff --git a/archinstall/default_profiles/desktops/deepin.py b/archinstall/default_profiles/desktops/deepin.py index 054c8fdf..e6a9f6b5 100644 --- a/archinstall/default_profiles/desktops/deepin.py +++ b/archinstall/default_profiles/desktops/deepin.py @@ -22,7 +22,3 @@ class DeepinProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/enlightenment.py b/archinstall/default_profiles/desktops/enlightenment.py index 164f64fe..7dd7822a 100644 --- a/archinstall/default_profiles/desktops/enlightenment.py +++ b/archinstall/default_profiles/desktops/enlightenment.py @@ -21,7 +21,3 @@ class EnlighenmentProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py index 3cbd49bd..24ade437 100644 --- a/archinstall/default_profiles/desktops/gnome.py +++ b/archinstall/default_profiles/desktops/gnome.py @@ -21,7 +21,3 @@ class GnomeProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Gdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/hyperland.py b/archinstall/default_profiles/desktops/hyperland.py index e55dd7c4..58ee8cca 100644 --- a/archinstall/default_profiles/desktops/hyperland.py +++ b/archinstall/default_profiles/desktops/hyperland.py @@ -25,7 +25,3 @@ class HyperlandProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Sddm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/i3.py b/archinstall/default_profiles/desktops/i3.py index 93c38906..9c2994de 100644 --- a/archinstall/default_profiles/desktops/i3.py +++ b/archinstall/default_profiles/desktops/i3.py @@ -27,7 +27,3 @@ class I3wmProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/kde.py b/archinstall/default_profiles/desktops/kde.py index cd02e069..b65a9620 100644 --- a/archinstall/default_profiles/desktops/kde.py +++ b/archinstall/default_profiles/desktops/kde.py @@ -26,7 +26,3 @@ class KdeProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Sddm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/lxqt.py b/archinstall/default_profiles/desktops/lxqt.py index 60bf47f2..5d75e08d 100644 --- a/archinstall/default_profiles/desktops/lxqt.py +++ b/archinstall/default_profiles/desktops/lxqt.py @@ -29,7 +29,3 @@ class LxqtProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Sddm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/mate.py b/archinstall/default_profiles/desktops/mate.py index 0ddaaaab..d3c4a6e1 100644 --- a/archinstall/default_profiles/desktops/mate.py +++ b/archinstall/default_profiles/desktops/mate.py @@ -21,7 +21,3 @@ class MateProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/qtile.py b/archinstall/default_profiles/desktops/qtile.py index 66c6fa1b..96e93b1d 100644 --- a/archinstall/default_profiles/desktops/qtile.py +++ b/archinstall/default_profiles/desktops/qtile.py @@ -21,7 +21,3 @@ class QtileProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 25d74a88..c757797d 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -73,9 +73,5 @@ class SwayProfile(XorgProfile): def do_on_select(self): self._ask_seat_access() - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() - def install(self, install_session: 'Installer'): super().install(install_session) diff --git a/archinstall/default_profiles/desktops/xfce4.py b/archinstall/default_profiles/desktops/xfce4.py index bd6c3038..a7f0a7e6 100644 --- a/archinstall/default_profiles/desktops/xfce4.py +++ b/archinstall/default_profiles/desktops/xfce4.py @@ -24,7 +24,3 @@ class Xfce4Profile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index 13154818..c9abf4da 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -1,4 +1,4 @@ -from typing import Any, TYPE_CHECKING, List +from typing import Any, Optional, TYPE_CHECKING, List from archinstall.default_profiles.profile import Profile, ProfileType @@ -20,6 +20,10 @@ class XorgProfile(Profile): support_gfx_driver=True ) + def preview_text(self) -> Optional[str]: + text = str(_('Environment type: {}')).format(self.profile_type.value) + return text + '\n' + self.packages_text() + @property def packages(self) -> List[str]: return [ -- cgit v1.2.3-70-g09d2 From 06d46ac762f58d051b2dba1aea50a2e3314ab403 Mon Sep 17 00:00:00 2001 From: Campbell Jones Date: Fri, 15 Sep 2023 07:51:36 -0400 Subject: Add option to use slick-greeter with lightdm (#1970) --- archinstall/default_profiles/desktops/budgie.py | 2 +- archinstall/default_profiles/profile.py | 3 ++- archinstall/lib/profile/profiles_handler.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py index 68506d45..28c05f45 100644 --- a/archinstall/default_profiles/desktops/budgie.py +++ b/archinstall/default_profiles/desktops/budgie.py @@ -23,4 +23,4 @@ class BudgieProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: - return GreeterType.Lightdm + return GreeterType.LightdmSlick diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index c7683013..982bd5a3 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -31,7 +31,8 @@ class ProfileType(Enum): class GreeterType(Enum): - Lightdm = 'lightdm' + Lightdm = 'lightdm-gtk-greeter' + LightdmSlick = 'lightdm-slick-greeter' Sddm = 'sddm' Gdm = 'gdm' Ly = 'ly' diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 8ea646b6..07910b08 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -173,6 +173,9 @@ class ProfileHandler: service = None match greeter: + case GreeterType.LightdmSlick: + packages = ['lightdm', 'lightdm-slick-greeter'] + service = ['lightdm'] case GreeterType.Lightdm: packages = ['lightdm', 'lightdm-gtk-greeter'] service = ['lightdm'] @@ -191,6 +194,17 @@ class ProfileHandler: if service: install_session.enable_service(service) + # slick-greeter requires a config change + if greeter == GreeterType.LightdmSlick: + path = install_session.target.joinpath('etc/lightdm/lightdm.conf') + with open(path, 'r') as file: + filedata = file.read() + + filedata = filedata.replace('#greeter-session=example-gtk-gnome', 'greeter-session=lightdm-slick-greeter') + + with open(path, 'w') as file: + file.write(filedata) + def install_gfx_driver(self, install_session: 'Installer', driver: Optional[GfxDriver]): try: -- cgit v1.2.3-70-g09d2 From d6e3a4651f2ff944a00e8acfb316db8be2fbcf3e Mon Sep 17 00:00:00 2001 From: Sxmourai <49468969+Sxmourai@users.noreply.github.com> Date: Fri, 22 Sep 2023 11:46:59 +0200 Subject: Renamed hyperland to hyprland, fixed seatd via post_installation and added waybar-hyprland (#1824) * Renamed hyperland to hyprland, fixed seatd via post_installation and installed waybar * Removed the launching of seatd on the installation process * Starting to add nvidia support, and automatic configuring of hyprland * Starting to add auto configuration of hyprland... But this will need maintenance * Added hyprpaper auto config Gonna make waybar auto config next * Waybar auto config is starting... I can't test rn I'm on vacation and my connection is quite bad (68 days for arch iso) * Added wlogout support (and swaylock) * Fixed file managers printing * Starting to add a shell config... Definitely don't push this * Reverted custom-shell config (create a separate PR) * Removed systemd-logind, as that was just for testing the selector * Added polkit as an option for the seat. As it's a dependency of the hyprland package * Flake8 fix * The name change wasn't propegated to the menu * Added newline at the end of general_conf.py to not alter it * Removed newline at the end of general_conf.py to not alter it * Renamed the Hyprland class --------- Co-authored-by: Anton Hvornum Co-authored-by: Anton Hvornum --- archinstall/default_profiles/desktops/hyperland.py | 27 ---------- archinstall/default_profiles/desktops/hyprland.py | 62 ++++++++++++++++++++++ archinstall/lib/interactions/general_conf.py | 2 +- 3 files changed, 63 insertions(+), 28 deletions(-) delete mode 100644 archinstall/default_profiles/desktops/hyperland.py create mode 100644 archinstall/default_profiles/desktops/hyprland.py (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/hyperland.py b/archinstall/default_profiles/desktops/hyperland.py deleted file mode 100644 index 58ee8cca..00000000 --- a/archinstall/default_profiles/desktops/hyperland.py +++ /dev/null @@ -1,27 +0,0 @@ -from typing import List, Optional, Any, TYPE_CHECKING - -from archinstall.default_profiles.profile import ProfileType, GreeterType -from archinstall.default_profiles.xorg import XorgProfile - -if TYPE_CHECKING: - _: Any - - -class HyperlandProfile(XorgProfile): - def __init__(self): - super().__init__('Hyperland', ProfileType.DesktopEnv, description='') - - @property - def packages(self) -> List[str]: - return [ - "hyprland", - "dunst", - "xdg-desktop-portal-hyprland", - "kitty", - "qt5-wayland", - "qt6-wayland" - ] - - @property - def default_greeter_type(self) -> Optional[GreeterType]: - return GreeterType.Sddm diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py new file mode 100644 index 00000000..f464c828 --- /dev/null +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -0,0 +1,62 @@ +from enum import Enum +from typing import List, Optional, TYPE_CHECKING, Any + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile +from archinstall.lib.menu import Menu + +if TYPE_CHECKING: + from archinstall.lib.installer import Installer + _: Any + + +class SeatAccess(Enum): + seatd = 'seatd' + polkit = 'polkit' + + +class HyprlandProfile(XorgProfile): + def __init__(self): + super().__init__('Hyprland', ProfileType.DesktopEnv, description='') + + self.custom_settings = {'seat_access': None} + + @property + def packages(self) -> List[str]: + return [ + "hyprland", + "dunst", + "xdg-desktop-portal-hyprland", + "qt5-wayland", + "qt6-wayland" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Sddm + + @property + def services(self) -> List[str]: + if pref := self.custom_settings.get('seat_access', None): + return [pref] + return [] + + def _ask_seat_access(self): + # need to activate seat service and add to seat group + title = str(_('Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)')) + title += str(_('\n\nChoose an option to give Hyprland access to your hardware')) + + options = [e.value for e in SeatAccess] + default = None + + if seat := self.custom_settings.get('seat_access', None): + default = seat + + choice = Menu(title, options, skip=False, preset_values=default).run() + self.custom_settings['seat_access'] = choice.single_value + + def do_on_select(self): + self._ask_seat_access() + + def install(self, install_session: 'Installer'): + super().install(install_session) diff --git a/archinstall/lib/interactions/general_conf.py b/archinstall/lib/interactions/general_conf.py index 8dd6e94f..56598e25 100644 --- a/archinstall/lib/interactions/general_conf.py +++ b/archinstall/lib/interactions/general_conf.py @@ -218,4 +218,4 @@ def select_additional_repositories(preset: List[str]) -> List[str]: case MenuSelectionType.Reset: return [] case MenuSelectionType.Selection: return choice.single_value - return [] + return [] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From ca3051ebf3ddd45f90a3bd3244df4640fb0b1c58 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 22 Sep 2023 16:47:50 +0200 Subject: Added kitty, dolphin, wofi to hyprland (#2092) --- archinstall/default_profiles/desktops/hyprland.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index f464c828..065ca6f2 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -26,6 +26,9 @@ class HyprlandProfile(XorgProfile): return [ "hyprland", "dunst", + "kitty", + "dolphin", + "wofi", "xdg-desktop-portal-hyprland", "qt5-wayland", "qt6-wayland" -- cgit v1.2.3-70-g09d2 From 8e25f2e9926e5da2532fd0d52cdac1722b6d766d Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Thu, 7 Mar 2024 01:49:51 -0500 Subject: plasma-workspace replaces plasma-wayland-session (#2386) --- archinstall/default_profiles/desktops/kde.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/kde.py b/archinstall/default_profiles/desktops/kde.py index b65a9620..62274d51 100644 --- a/archinstall/default_profiles/desktops/kde.py +++ b/archinstall/default_profiles/desktops/kde.py @@ -19,7 +19,7 @@ class KdeProfile(XorgProfile): "kwrite", "dolphin", "ark", - "plasma-wayland-session", + "plasma-workspace", "egl-wayland" ] -- cgit v1.2.3-70-g09d2 From 08a6d402c4792cae95aec196460dc67aadd86f3c Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Fri, 8 Mar 2024 00:43:51 +1100 Subject: Fix 2215 | Display installed packages for all profile submenus (#2355) * Display all packages to be installed * Display all packages to be installed --- archinstall/default_profiles/desktops/bspwm.py | 25 --------------------- archinstall/default_profiles/profile.py | 31 ++++++++++++++++++-------- archinstall/default_profiles/xorg.py | 5 ++++- archinstall/lib/hardware.py | 12 +++++++++- archinstall/lib/interactions/system_conf.py | 7 +++--- archinstall/lib/menu/menu.py | 4 +++- archinstall/lib/profile/profile_menu.py | 22 ++++++++++++++++-- archinstall/lib/utils/util.py | 8 +++---- 8 files changed, 68 insertions(+), 46 deletions(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/bspwm.py b/archinstall/default_profiles/desktops/bspwm.py index 2a29f41b..61eeba43 100644 --- a/archinstall/default_profiles/desktops/bspwm.py +++ b/archinstall/default_profiles/desktops/bspwm.py @@ -25,28 +25,3 @@ class BspwmProfile(XorgProfile): @property def default_greeter_type(self) -> Optional[GreeterType]: return GreeterType.Lightdm - - def preview_text(self) -> Optional[str]: - text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() - - # The wiki specified xinit, but we already use greeter? - # https://wiki.archlinux.org/title/Bspwm#Starting - # - # # TODO: check if we selected a greeter, else run this: - # with open(f"{install_session.target}/etc/X11/xinit/xinitrc", 'r') as xinitrc: - # xinitrc_data = xinitrc.read() - - # for line in xinitrc_data.split('\n'): - # if "twm &" in line: - # xinitrc_data = xinitrc_data.replace(line, f"# {line}") - # if "xclock" in line: - # xinitrc_data = xinitrc_data.replace(line, f"# {line}") - # if "xterm" in line: - # xinitrc_data = xinitrc_data.replace(line, f"# {line}") - - # xinitrc_data += '\n' - # xinitrc_data += 'exec bspwn\n' - - # with open(f"{install_session.target}/etc/X11/xinit/xinitrc", 'w') as xinitrc: - # xinitrc.write(xinitrc_data) diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index 49a9c19d..4c85b0c7 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -178,15 +178,28 @@ class Profile: def preview_text(self) -> Optional[str]: """ - Used for preview text in profiles_bck. If a description is set for a - profile it will automatically display that one in the preview. - If no preview or a different text should be displayed just + Override this method to provide a preview text for the profile """ - if self.description: - return self.description - return None + return self.packages_text() - def packages_text(self) -> str: + def packages_text(self, include_sub_packages: bool = False) -> Optional[str]: header = str(_('Installed packages')) - output = format_cols(self.packages, header) - return output + + text = '' + packages = [] + + if self.packages: + packages = self.packages + + if include_sub_packages: + for p in self.current_selection: + if p.packages: + packages += p.packages + + text += format_cols(sorted(set(packages))) + + if text: + text = f'{header}: \n{text}' + return text + + return None diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index c9abf4da..88ba55a6 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -22,7 +22,10 @@ class XorgProfile(Profile): def preview_text(self) -> Optional[str]: text = str(_('Environment type: {}')).format(self.profile_type.value) - return text + '\n' + self.packages_text() + if packages := self.packages_text(): + text += f'\n{packages}' + + return text @property def packages(self) -> List[str]: diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py index efdae430..c8001c19 100644 --- a/archinstall/lib/hardware.py +++ b/archinstall/lib/hardware.py @@ -2,12 +2,16 @@ import os from enum import Enum from functools import cached_property from pathlib import Path -from typing import Optional, Dict, List +from typing import Optional, Dict, List, TYPE_CHECKING, Any from .exceptions import SysCallError from .general import SysCommand from .networking import list_interfaces, enrich_iface_types from .output import debug +from .utils.util import format_cols + +if TYPE_CHECKING: + _: Any class CpuVendor(Enum): @@ -73,6 +77,12 @@ class GfxDriver(Enum): case _: return False + def packages_text(self) -> str: + text = str(_('Installed packages')) + ':\n' + pkg_names = [p.value for p in self.gfx_packages()] + text += format_cols(sorted(pkg_names)) + return text + def gfx_packages(self) -> List[GfxPackage]: packages = [GfxPackage.XorgServer, GfxPackage.XorgXinit] diff --git a/archinstall/lib/interactions/system_conf.py b/archinstall/lib/interactions/system_conf.py index aa72748e..35ba5a8b 100644 --- a/archinstall/lib/interactions/system_conf.py +++ b/archinstall/lib/interactions/system_conf.py @@ -103,14 +103,15 @@ def select_driver(options: List[GfxDriver] = [], current_value: Optional[GfxDriv if SysInfo.has_nvidia_graphics(): title += str(_('For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n')) - title += str(_('\nSelect a graphics driver or leave blank to install all open-source drivers')) - preset = current_value.value if current_value else None + choice = Menu( title, drivers, preset_values=preset, - default_option=GfxDriver.AllOpenSource.value + default_option=GfxDriver.AllOpenSource.value, + preview_command=lambda x: GfxDriver(x).packages_text(), + preview_size=0.3 ).run() if choice.type_ != MenuSelectionType.Selection: diff --git a/archinstall/lib/menu/menu.py b/archinstall/lib/menu/menu.py index 3bd31b88..f14b855d 100644 --- a/archinstall/lib/menu/menu.py +++ b/archinstall/lib/menu/menu.py @@ -235,7 +235,9 @@ class Menu(TerminalMenu): if preview_command: if self._default_option is not None and self._default_menu_value == selection: selection = self._default_option - return preview_command(selection) + + if res := preview_command(selection): + return res.rstrip('\n') return None diff --git a/archinstall/lib/profile/profile_menu.py b/archinstall/lib/profile/profile_menu.py index d9e47190..aba75a88 100644 --- a/archinstall/lib/profile/profile_menu.py +++ b/archinstall/lib/profile/profile_menu.py @@ -40,6 +40,7 @@ class ProfileMenu(AbstractSubMenu): lambda preset: self._select_gfx_driver(preset), display_func=lambda x: x.value if x else None, dependencies=['profile'], + preview_func=self._preview_gfx, default=self._preset.gfx_driver if self._preset.profile and self._preset.profile.is_graphic_driver_supported() else None, enabled=self._preset.profile.is_graphic_driver_supported() if self._preset.profile else False ) @@ -67,6 +68,7 @@ class ProfileMenu(AbstractSubMenu): def _select_profile(self, preset: Optional[Profile]) -> Optional[Profile]: profile = select_profile(preset) + if profile is not None: if not profile.is_graphic_driver_supported(): self._menu_options['gfx_driver'].set_enabled(False) @@ -105,12 +107,28 @@ class ProfileMenu(AbstractSubMenu): return driver + def _preview_gfx(self) -> Optional[str]: + driver: Optional[GfxDriver] = self._menu_options['gfx_driver'].current_selection + + if driver: + return driver.packages_text() + + return None + def _preview_profile(self) -> Optional[str]: profile: Optional[Profile] = self._menu_options['profile'].current_selection + text = '' if profile: - names = profile.current_selection_names() - return '\n'.join(names) + if (sub_profiles := profile.current_selection) is not None: + text += str(_('Selected profiles: ')) + text += ', '.join([p.name for p in sub_profiles]) + '\n' + + if packages := profile.packages_text(include_sub_packages=True): + text += f'{packages}' + + if text: + return text return None diff --git a/archinstall/lib/utils/util.py b/archinstall/lib/utils/util.py index 8df75ab1..2e42b3cf 100644 --- a/archinstall/lib/utils/util.py +++ b/archinstall/lib/utils/util.py @@ -31,18 +31,18 @@ def is_subpath(first: Path, second: Path): return False -def format_cols(items: List[str], header: Optional[str]) -> str: +def format_cols(items: List[str], header: Optional[str] = None) -> str: if header: text = f'{header}:\n' else: text = '' nr_items = len(items) - if nr_items <= 5: + if nr_items <= 4: col = 1 - elif nr_items <= 10: + elif nr_items <= 8: col = 2 - elif nr_items <= 15: + elif nr_items <= 12: col = 3 else: col = 4 -- cgit v1.2.3-70-g09d2 From 0ea6dbbd7677b94e863b2ab333431716886b5f84 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 19 Apr 2024 14:47:18 +0200 Subject: Rename "Kde" profile to the correct "KDE Plasma" / "Plasma" (#2421) * schema.json: Remove dead misspelled i3-gasp profile * schema.json: Rename KDE Plasma profile to the correct "Plasma" shorthand * Rename to KDE Plasma in user facing parts and keep the old "Kde" profile for now * Add back an accidental deleted character * Backwards compat v2 --- archinstall/default_profiles/desktop.py | 2 +- archinstall/default_profiles/desktops/kde.py | 28 ------------------------- archinstall/default_profiles/desktops/plasma.py | 27 ++++++++++++++++++++++++ archinstall/lib/models/network_configuration.py | 2 +- archinstall/lib/profile/profiles_handler.py | 5 +++++ examples/config-sample.json | 2 +- mypy-strict.ini | 4 ++-- schema.json | 5 ++--- 8 files changed, 39 insertions(+), 36 deletions(-) delete mode 100644 archinstall/default_profiles/desktops/kde.py create mode 100644 archinstall/default_profiles/desktops/plasma.py (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktop.py b/archinstall/default_profiles/desktop.py index 9d92f822..417d86d6 100644 --- a/archinstall/default_profiles/desktop.py +++ b/archinstall/default_profiles/desktop.py @@ -15,7 +15,7 @@ class DesktopProfile(Profile): super().__init__( 'Desktop', ProfileType.Desktop, - description=str(_('Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway')), + description=str(_('Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway')), current_selection=current_selection, support_greeter=True ) diff --git a/archinstall/default_profiles/desktops/kde.py b/archinstall/default_profiles/desktops/kde.py deleted file mode 100644 index 62274d51..00000000 --- a/archinstall/default_profiles/desktops/kde.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import List, Optional, Any, TYPE_CHECKING - -from archinstall.default_profiles.profile import ProfileType, GreeterType -from archinstall.default_profiles.xorg import XorgProfile - -if TYPE_CHECKING: - _: Any - - -class KdeProfile(XorgProfile): - def __init__(self): - super().__init__('Kde', ProfileType.DesktopEnv, description='') - - @property - def packages(self) -> List[str]: - return [ - "plasma-meta", - "konsole", - "kwrite", - "dolphin", - "ark", - "plasma-workspace", - "egl-wayland" - ] - - @property - def default_greeter_type(self) -> Optional[GreeterType]: - return GreeterType.Sddm diff --git a/archinstall/default_profiles/desktops/plasma.py b/archinstall/default_profiles/desktops/plasma.py new file mode 100644 index 00000000..bcc1ea1b --- /dev/null +++ b/archinstall/default_profiles/desktops/plasma.py @@ -0,0 +1,27 @@ +from typing import List, Optional, Any, TYPE_CHECKING + +from archinstall.default_profiles.profile import ProfileType, GreeterType +from archinstall.default_profiles.xorg import XorgProfile + +if TYPE_CHECKING: + _: Any + +class PlasmaProfile(XorgProfile): + def __init__(self): + super().__init__('KDE Plasma', ProfileType.DesktopEnv, description='') + + @property + def packages(self) -> List[str]: + return [ + "plasma-meta", + "konsole", + "kwrite", + "dolphin", + "ark", + "plasma-workspace", + "egl-wayland" + ] + + @property + def default_greeter_type(self) -> Optional[GreeterType]: + return GreeterType.Sddm diff --git a/archinstall/lib/models/network_configuration.py b/archinstall/lib/models/network_configuration.py index b726bb73..dfd8b8cb 100644 --- a/archinstall/lib/models/network_configuration.py +++ b/archinstall/lib/models/network_configuration.py @@ -20,7 +20,7 @@ class NicType(Enum): case NicType.ISO: return str(_('Copy ISO network configuration to installation')) case NicType.NM: - return str(_('Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)')) + return str(_('Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)')) case NicType.MANUAL: return str(_('Manual configuration')) diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 12dcee3f..b9acb4fe 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -107,6 +107,11 @@ class ProfileHandler: if details: for detail in filter(None, details): + # [2024-04-19] TODO: Backwards compatibility after naming change: https://github.com/archlinux/archinstall/pull/2421 + # 'Kde' is deprecated, remove this block in a future version + if detail == 'Kde': + detail = 'KDE Plasma' + if sub_profile := self.get_profile_by_name(detail): valid_sub_profiles.append(sub_profile) else: diff --git a/examples/config-sample.json b/examples/config-sample.json index d43f7ea6..47a4e2e0 100644 --- a/examples/config-sample.json +++ b/examples/config-sample.json @@ -106,7 +106,7 @@ "greeter": "sddm", "profile": { "details": [ - "Kde" + "KDE Plasma" ], "main": "Desktop" } diff --git a/mypy-strict.ini b/mypy-strict.ini index be7ddf57..c670bbaa 100644 --- a/mypy-strict.ini +++ b/mypy-strict.ini @@ -66,10 +66,10 @@ exclude = (?x)( | ^archinstall/profiles/enlightenment\.py$ | ^archinstall/profiles/gnome\.py$ | ^archinstall/profiles/i3\.py$ - | ^archinstall/profiles/kde\.py$ | ^archinstall/profiles/lxqt\.py$ | ^archinstall/profiles/mate\.py$ | ^archinstall/profiles/minimal\.py$ + | ^archinstall/profiles/plasma\.py$ | ^archinstall/profiles/qtile\.py$ | ^archinstall/profiles/server\.py$ | ^archinstall/profiles/sway\.py$ @@ -86,10 +86,10 @@ exclude = (?x)( | ^profiles/enlightenment\.py$ | ^profiles/gnome\.py$ | ^profiles/i3\.py$ - | ^profiles/kde\.py$ | ^profiles/lxqt\.py$ | ^profiles/mate\.py$ | ^profiles/minimal\.py$ + | ^profiles/plasma\.py$ | ^profiles/qtile\.py$ | ^profiles/server\.py$ | ^profiles/sway\.py$ diff --git a/schema.json b/schema.json index 74ecc4d3..97cb42e1 100644 --- a/schema.json +++ b/schema.json @@ -129,7 +129,7 @@ ] }, "details": { - "description": "Specific profile to be installed based on the 'main' selection; these profiles are present in profiles_v2/, use the name of a profile to install it (case insensitive)", + "description": "Specific profile to be installed based on the 'main' selection; these profiles are present in default_profiles/, use the file name of a profile without the extension to install it (case insensitive)", "type": "string", "enum": [ "awesome", @@ -142,8 +142,7 @@ "enlightenment", "gnome", "i3-wm", - "i3-gasp", - "kde", + "plasma", "lxqt", "mate", "sway", -- cgit v1.2.3-70-g09d2 From e5b6f46032283e722c449ca8ad7b68dc8c0b350f Mon Sep 17 00:00:00 2001 From: Uday Jadhav <110811053+udqy@users.noreply.github.com> Date: Sun, 5 May 2024 10:38:03 +0530 Subject: Add applications to Hyprland desktop profile (#2481) --- archinstall/default_profiles/desktops/hyprland.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'archinstall/default_profiles/desktops') diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 065ca6f2..0c5452eb 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -31,7 +31,10 @@ class HyprlandProfile(XorgProfile): "wofi", "xdg-desktop-portal-hyprland", "qt5-wayland", - "qt6-wayland" + "qt6-wayland", + "polkit-kde-agent", + "grim", + "slurp" ] @property -- cgit v1.2.3-70-g09d2