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
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:

View File

@ -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)

View File

@ -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)

View File

@ -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):

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

View File

@ -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()