feat(greetd): add greetd to displaymanagers
This commit is contained in:
parent
132bca649e
commit
e5f5ef0d17
@ -23,6 +23,7 @@ displaymanagers:
|
||||
- mdm
|
||||
- lxdm
|
||||
- kdm
|
||||
- greetd
|
||||
|
||||
# Enable the following settings to force a desktop environment
|
||||
# in your displaymanager configuration file. This will attempt
|
||||
|
@ -10,7 +10,7 @@ properties:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
enum: [slim, sddm, lightdm, gdm, mdm, lxdm, kdm]
|
||||
enum: [slim, sddm, lightdm, gdm, mdm, lxdm, kdm, greetd]
|
||||
minItems: 1 # Must be non-empty, if present at all
|
||||
defaultDesktopEnvironment:
|
||||
type: object
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
import abc
|
||||
import os
|
||||
import re
|
||||
import toml
|
||||
import libcalamares
|
||||
import configparser
|
||||
|
||||
@ -835,6 +835,74 @@ class DMsddm(DisplayManager):
|
||||
pass
|
||||
|
||||
|
||||
class DMgreetd(DisplayManager):
|
||||
name = "greetd"
|
||||
executable = "greetd"
|
||||
config_data = {}
|
||||
|
||||
def os_path(self, path):
|
||||
return os.path.join(self.root_mount_point, path)
|
||||
|
||||
def config_path(self):
|
||||
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())
|
||||
|
||||
def config_write(self):
|
||||
toml.dump(self.config_data, self.config_path())
|
||||
|
||||
def basic_setup(self):
|
||||
if libcalamares.utils.target_env_call(
|
||||
['getent', 'group', 'greetd']
|
||||
) != 0:
|
||||
libcalamares.utils.target_env_call(
|
||||
['groupadd', 'greetd']
|
||||
)
|
||||
|
||||
if libcalamares.utils.target_env_call(
|
||||
['getent', 'passwd', 'greeter']
|
||||
) != 0:
|
||||
libcalamares.utils.target_env_call(
|
||||
['useradd',
|
||||
'-c', '"Greeter User"',
|
||||
'-g', 'greetd',
|
||||
'-s', '/bin/bash',
|
||||
'greeter'
|
||||
]
|
||||
)
|
||||
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:
|
||||
envs_file.write(default_desktop_environment)
|
||||
|
||||
def greeter_setup(self):
|
||||
pass
|
||||
|
||||
def set_autologin(self, username, do_autologin, default_desktop_environment):
|
||||
self.config_load()
|
||||
|
||||
if (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
|
||||
else:
|
||||
print("no greeter detected")
|
||||
|
||||
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_write()
|
||||
|
||||
|
||||
|
||||
class DMsysconfig(DisplayManager):
|
||||
name = "sysconfig"
|
||||
executable = None
|
||||
|
Loading…
Reference in New Issue
Block a user