diff --git a/bin/input-remapper-gtk b/bin/input-remapper-gtk index a4b0bbd5a..30ede3c98 100755 --- a/bin/input-remapper-gtk +++ b/bin/input-remapper-gtk @@ -41,11 +41,11 @@ from inputremapper.daemon import DaemonProxy from inputremapper.logger import logger, update_verbosity, log_info -def start_processes(ignore_pkexec_errors=False) -> DaemonProxy: +def start_processes() -> DaemonProxy: """Start reader-service and daemon via pkexec to run in the background.""" # this function is overwritten in tests try: - ReaderService.pkexec_reader_service(ingore_errors=ignore_pkexec_errors) + ReaderService.pkexec_reader_service() except Exception as e: logger.error(e) sys.exit(11) @@ -60,11 +60,6 @@ if __name__ == '__main__': help=_('displays additional debug information'), default=False ) - parser.add_argument( - '-R', '--no-root', action='store_true', dest='no_root', - help=_('allow rejecting root access (by cancelling the pkexec dialog)'), - default=False - ) options = parser.parse_args(sys.argv[1:]) update_verbosity(options.debug) @@ -90,8 +85,8 @@ if __name__ == '__main__': # create the reader before we start the reader-service (start_processes) otherwise # it can come to race conditions with the creation of pipes - reader_client = ReaderClient(message_broker, _Groups(), ignore_pkexec_errors=options.no_root) - daemon = start_processes(ignore_pkexec_errors=options.no_root) + reader_client = ReaderClient(message_broker, _Groups()) + daemon = start_processes() data_manager = DataManager( message_broker, GlobalConfig(), reader_client, daemon, GlobalUInputs(), system_mapping diff --git a/inputremapper/gui/reader_client.py b/inputremapper/gui/reader_client.py index f29c0b440..8687c70ea 100644 --- a/inputremapper/gui/reader_client.py +++ b/inputremapper/gui/reader_client.py @@ -73,7 +73,7 @@ class ReaderClient: _timeout: int = 5 def __init__( - self, message_broker: MessageBroker, groups: _Groups, ignore_pkexec_errors=False + self, message_broker: MessageBroker, groups: _Groups ): self.groups = groups self.message_broker = message_broker @@ -88,14 +88,13 @@ def __init__( self.attach_to_events() self._read_timeout = GLib.timeout_add(30, self._read) - self.ignore_pkexec_errors = ignore_pkexec_errors def ensure_reader_service_running(self): if ReaderService.is_running(): return logger.info("ReaderService not running anymore, restarting") - ReaderService.pkexec_reader_service(ingore_errors=self.ignore_pkexec_errors) + ReaderService.pkexec_reader_service() # wait until the ReaderService is up diff --git a/inputremapper/gui/reader_service.py b/inputremapper/gui/reader_service.py index 5fd2471e0..752be2520 100644 --- a/inputremapper/gui/reader_service.py +++ b/inputremapper/gui/reader_service.py @@ -136,20 +136,22 @@ def is_running(): return True @staticmethod - def pkexec_reader_service(ingore_errors=False): + def pkexec_reader_service(): """Start reader-service via pkexec to run in the background.""" debug = " -d" if logger.level <= logging.DEBUG else "" cmd = f"pkexec input-remapper-control --command start-reader-service{debug}" logger.debug("Running `%s`", cmd) exit_code = os.system(cmd) + if exit_code == 0: + return - if exit_code != 0: - ex = Exception(f"Failed to pkexec the reader-service, code {exit_code}") - if ingore_errors: - logger.warn(ex) - else: - raise ex + ex = Exception(f"Failed to pkexec the reader-service, code {exit_code}") + if os.environ.get("IGNORE_PKEXEC_ERRORS"): + logger.warn(ex) + return + + raise ex async def run(self): """Start doing stuff."""