introduce 'to_home' and systemd user services

- frappy is now a systemd user service
- add 'frappy' and 'boxweb' bash function
This commit is contained in:
2025-05-28 11:54:21 +02:00
parent 1a6b133afa
commit 99580aad78
5 changed files with 134 additions and 82 deletions

View File

@ -202,17 +202,22 @@ class MainIf:
def unix_cmd(cmd, *args, execute=None, stdout=PIPE, sudo=True):
command = cmd.split() + list(args)
sudo = ['sudo'] if sudo else []
if command[0] == 'systemctl' and not sudo:
command.insert(1, '--user')
if sudo:
command.insert(0, 'sudo')
# sudo = ['sudo'] if sudo else []
if execute is not False: # None or True
if execute:
print('$', *command)
result = Popen(sudo + command, stdout=stdout).communicate()[0]
# result = Popen(sudo + command, stdout=stdout).communicate()[0]
result = Popen(command, stdout=stdout).communicate()[0]
return (result or b'').decode()
else:
print('>', *command)
def check_service(service, set_on=None, execute=None):
def check_service(service, set_on=None, execute=None, as_root=True):
"""check or set state of systemd service
set_on is None or not given: query only
@ -221,7 +226,7 @@ def check_service(service, set_on=None, execute=None):
sim: print out command instead of executing
"""
result = unix_cmd(f'systemctl show -p WantedBy -p ActiveState {service}')
result = unix_cmd(f'systemctl show -p WantedBy -p ActiveState {service}', sudo=False)
enabled = False
active = False
for line in result.split('\n'):
@ -231,14 +236,14 @@ def check_service(service, set_on=None, execute=None):
active = True
if set_on:
if not active:
unix_cmd(f'systemctl start {service}', execute=execute)
unix_cmd('systemctl', 'start', service, execute=execute, sudo=as_root)
if not enabled:
unix_cmd(f'systemctl enable {service}', execute=execute)
unix_cmd('systemctl', 'enable', service, execute=execute, sudo=as_root)
elif set_on is not None:
if active:
unix_cmd(f'systemctl stop {service}', execute=execute)
unix_cmd('systemctl', 'stop', service, execute=execute, sudo=as_root)
if enabled:
unix_cmd(f'systemctl disable {service}', execute=execute)
unix_cmd('systemctl', 'disable', service, execute=execute, sudo=as_root)
return active, enabled