import asyncio from pathlib import Path class LinuxUtils: """Utilities for Linux-specific tasks. """ def __init__(self): pass async def _exec_command(self, args): """Execute a command using pkexec (friendly gui) """ rsp = await asyncio.create_subprocess_shell(args) await rsp.wait() match rsp.returncode: case 127: raise OSError("Authentication failed.") case 128: raise RuntimeError("User cancelled the authentication.") return rsp async def write_text_to_file(self, text, file_path: str | Path): """Write text to a file using pkexec (friendly gui) """ if isinstance(file_path, Path): file_path = str(file_path) await self._exec_command('pkexec echo {} > {}'.format(text, file_path)) async def append_text_to_file(self, text, file_path: str | Path): """Append text to a file using pkexec (friendly gui) """ if isinstance(file_path, Path): file_path = str(file_path) await self._exec_command('pkexec echo {} >> {}'.format(text, file_path))