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
This commit is contained in:
Anton Hvornum 2023-07-30 00:28:21 +02:00 committed by GitHub
parent 29b5280725
commit a43344c5ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 7 deletions

View File

@ -145,12 +145,12 @@ def cleanup_empty_args(args: Union[Namespace, Dict]) -> Dict:
Takes arguments (dictionary or argparse Namespace) and removes any Takes arguments (dictionary or argparse Namespace) and removes any
None values. This ensures clean mergers during dict.update(args) None values. This ensures clean mergers during dict.update(args)
""" """
if type(args) == Namespace: if type(args) is Namespace:
args = vars(args) args = vars(args)
clean_args = {} clean_args = {}
for key, val in args.items(): for key, val in args.items():
if type(val) == dict: if isinstance(val, dict):
val = cleanup_empty_args(val) val = cleanup_empty_args(val)
if val is not None: if val is not None:

View File

@ -14,9 +14,18 @@ class AwesomeProfile(XorgProfile):
@property @property
def packages(self) -> List[str]: def packages(self) -> List[str]:
return [ return super().packages + [
'awesome', 'awesome',
'alacritty' 'alacritty',
'xorg-xinit',
'xorg-xrandr',
'xterm',
'feh',
'slock',
'terminus-font',
'gnu-free-fonts',
'ttf-liberation',
'xsel',
] ]
def preview_text(self) -> Optional[str]: def preview_text(self) -> Optional[str]:
@ -37,3 +46,22 @@ class AwesomeProfile(XorgProfile):
fh.write(awesome_lua) fh.write(awesome_lua)
# TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config) # 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)

View File

@ -13,6 +13,7 @@ class BspwmProfile(XorgProfile):
@property @property
def packages(self) -> List[str]: def packages(self) -> List[str]:
# return super().packages + [
return [ return [
'bspwm', 'bspwm',
'sxhkd', 'sxhkd',
@ -28,3 +29,24 @@ class BspwmProfile(XorgProfile):
def preview_text(self) -> Optional[str]: def preview_text(self) -> Optional[str]:
text = str(_('Environment type: {}')).format(self.profile_type.value) text = str(_('Environment type: {}')).format(self.profile_type.value)
return text + '\n' + self.packages_text() 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)

View File

@ -53,7 +53,7 @@ class SwayProfile(XorgProfile):
@property @property
def services(self) -> List[str]: def services(self) -> List[str]:
if pref := self.custom_settings.get('seat_access', None): if pref := self.custom_settings.get('seat_access', None):
return [pref.value] return [pref]
return [] return []
def _ask_seat_access(self): def _ask_seat_access(self):

View File

@ -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 from archinstall.default_profiles.profile import Profile, ProfileType
@ -19,3 +19,9 @@ class XorgProfile(Profile):
description=description, description=description,
support_gfx_driver=True support_gfx_driver=True
) )
@property
def packages(self) -> List[str]:
return [
'xorg-server'
]

View File

@ -211,7 +211,7 @@ class SysCommandWorker:
return False return False
def write(self, data: bytes, line_ending :bool = True) -> int: 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() self.make_sure_we_are_executing()