fix(greetd): deal with no existing config

This commit is contained in:
Jonas Strassel 2021-10-28 09:06:35 +02:00
parent fbdb9e6779
commit 5701937883
No known key found for this signature in database
GPG Key ID: ABB2075D5F310CF8

View File

@ -838,22 +838,30 @@ class DMsddm(DisplayManager):
class DMgreetd(DisplayManager):
name = "greetd"
executable = "greetd"
greeter_user = "greeter"
greeter_group = "greetd"
config_data = {}
def os_path(self, path):
return os.path.join(self.root_mount_point, path)
def config_path(self):
path = self.os_path("etc/greetd/config.toml")
if not os.path.exists(path):
open(path, 'a').close()
return path
return self.os_path("etc/greetd/config.toml")
def environments_path(self):
return self.os_path("etc/greetd/environments")
def config_load(self):
self.config_data = toml.loads(self.config_path())
if (os.path.exists(self.config_path)):
self.config_data = toml.loads(self.config_path())
self.config_data['terminal'] = dict(vt = "next")
if not os.path.exists(self.config_data['default_session']):
self.config_data['default_session'] = {}
self.config_data['default_session']['user'] = self.greeter_user
return self.config_data
def config_write(self):
@ -861,26 +869,23 @@ class DMgreetd(DisplayManager):
def basic_setup(self):
if libcalamares.utils.target_env_call(
['getent', 'group', 'greetd']
['getent', 'group', self.greeter_group]
) != 0:
libcalamares.utils.target_env_call(
['groupadd', 'greetd']
['groupadd', self.greeter_group]
)
if libcalamares.utils.target_env_call(
['getent', 'passwd', 'greeter']
['getent', 'passwd', self.greeter_user]
) != 0:
libcalamares.utils.target_env_call(
['useradd',
'-c', '"Greeter User"',
'-g', 'greetd',
'-g', self.greeter_group,
'-s', '/bin/bash',
'greeter'
self.greeter_user
]
)
self.config_load()
self.config_data['terminal']['vt'] = "next"
self.config_write()
def desktop_environment_setup(self, default_desktop_environment):
with open(self.environments_path(), 'w') as envs_file:
@ -892,25 +897,22 @@ class DMgreetd(DisplayManager):
def set_autologin(self, username, do_autologin, default_desktop_environment):
self.config_load()
if os.path.exists(self.os_path("usr/bin/gtkgreed") and os.path.exists(self.os_path("usr/bin/cage")):
self.config_data['default_session']['command'] = "cage gtkgreet"
if os.path.exists(self.os_path("usr/bin/gtkgreed")) and os.path.exists(self.os_path("usr/bin/cage")):
self.config_data['default_session']['command'] = "cage -s -- gtkgreet"
elif os.path.exists(self.os_path("usr/bin/tuigreet")):
tuigreet_base_cmd = "tuigreet --remember --time --issue --asterisks --cmd "
self.config_data['default_session']['command'] = tuigreet_base_cmd + default_desktop_environment
elif os.path.exists(self.os_path("usr/bin/ddlm")):
self.config_data['default_session']['command'] = "ddlm --target sway"
self.config_data['default_session']['command'] = "ddlm --target " + default_desktop_environment
else:
self.config_data['default_session']['command'] = "agreety --cmd " + default_desktop_environment
if do_autologin == True:
self.config_data['initial_session'] = {}
self.config_data['initial_session']['command'] = default_desktop_environment
self.config_data['initial_session']['user'] = username
self.config_data['initial_session'] = dict(command = default_desktop_environment, user = username)
self.config_write()
class DMsysconfig(DisplayManager):
name = "sysconfig"
executable = None