Added KDE profile (untested)

This commit is contained in:
Anton Hvornum 2020-09-30 18:23:27 +02:00
parent c1692a478d
commit 7448881582
2 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,21 @@
import archinstall
installation.add_additional_packages("plasma-meta kde-applications-meta") # We'll support plasma-desktop (minimal) later
with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'r') as xinitrc:
xinitrc_data = xinitrc.read()
# Remove Xorg defaults
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}")
# Add the KDE specifics
xinitrc_data += '\n'
xinitrc_data += 'export DESKTOP_SESSION=plasma\n'
xinitrc_data += 'exec startplasma-x11\n'
# And save it
with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'w') as xinitrc:
xinitrc.write(xinitrc_data)

49
profiles/kde.py Normal file
View File

@ -0,0 +1,49 @@
# A desktop environemtn using "Awesome" window manager.
import archinstall, os
# TODO: Remove hard dependency of bash (due to .bash_profile)
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
before continuing any further. It also avoids executing any
other code in this stage. So it's a safe way to ask the user
for more input before any other installer steps start.
"""
# KDE requires a functioning Xorg installation.
profile = archinstall.Profile(None, 'xorg')
with profile.load_instructions(namespace='xorg.py') as imported:
if hasattr(imported, '_prep_function'):
return imported._prep_function()
else:
print('Deprecated (??): xorg profile has no _prep_function() anymore')
# Ensures that this code only gets executed if executed
# through importlib.util.spec_from_file_location("kde", "/somewhere/kde.py")
# or through conventional import kde
if __name__ == 'kde':
# Install dependency profiles
installation.install_profile('xorg')
# Install the application kde from the template under /applications/
kde = archinstall.Application(installation, 'kde')
kde.install()
# Enable autostart of KDE for all users
# (there's no handy service like Gnome, so we'll hack it)
for root, folders, files in os.walk(f'{installation.mountpoint}/home'):
for home in folders:
with open(os.path.join(root, f"{home}/.bash_profile"), 'a') as bash_profile:
bash_profile.write('\n')
bash_profile.write('if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then\n')
bash_profile.write(' exec startx\n') # Possibly do 'startx' only to remain logged in if KDE crashes.
bash_profile.write('fi\n')
break
with open(f'{mountpoint}/etc/skel/.bash_profile', 'a') as bash_profile:
bash_profile.write('\n')
bash_profile.write('if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then\n')
bash_profile.write(' exec startx\n') # Possibly do 'startx' only to remain logged in if KDE crashes.
bash_profile.write('fi\n')