From beb9dfdab82684b1a90c3f09d978c1f48500c89c Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Wed, 9 Nov 2022 05:46:36 -0500 Subject: [PATCH] solaar: clean up gtk code --- lib/solaar/gtk.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/lib/solaar/gtk.py b/lib/solaar/gtk.py index 54537e3c..6676ea86 100755 --- a/lib/solaar/gtk.py +++ b/lib/solaar/gtk.py @@ -21,6 +21,8 @@ import importlib import logging import os.path +import signal +import sys import tempfile from logging import INFO as _INFO @@ -44,7 +46,6 @@ def _require(module, os_package, gi=None, gi_package=None, gi_version=None): gi.require_version(gi_package, gi_version) return importlib.import_module(module) except (ImportError, ValueError): - import sys sys.exit('%s: missing required system package %s' % (NAME, os_package)) @@ -122,27 +123,22 @@ def _parse_arguments(): # On first SIGINT, dump threads to stderr; on second, exit -def _handlesigint(signal, stack): +def _handlesig(signl, stack): import faulthandler - import signal - import sys - signal.signal(signal.SIGINT, signal.SIG_DFL) + signal.signal(signal.SIGTERM, signal.SIG_DFL) - if _log.isEnabledFor(_INFO): - faulthandler.dump_traceback() - - sys.exit('%s: exit due to keyboard interrupt' % (NAME.lower())) + if signl == int(signal.SIGINT): + if _log.isEnabledFor(_INFO): + faulthandler.dump_traceback() + sys.exit('%s: exit due to keyboard interrupt' % (NAME.lower())) + else: + sys.exit('') def main(): _require('pyudev', 'python3-pyudev') - # handle ^C in console - import signal - signal.signal(signal.SIGINT, signal.SIG_DFL) - signal.signal(signal.SIGINT, _handlesigint) - args = _parse_arguments() if not args: return @@ -153,6 +149,11 @@ def main(): gi = _require('gi', 'python3-gi (in Ubuntu) or python3-gobject (in Fedora)') _require('gi.repository.Gtk', 'gir1.2-gtk-3.0', gi, 'Gtk', '3.0') + # handle ^C in console + signal.signal(signal.SIGINT, signal.SIG_DFL) + signal.signal(signal.SIGINT, _handlesig) + signal.signal(signal.SIGTERM, _handlesig) + udev_file = '42-logitech-unify-permissions.rules' if _log.isEnabledFor(_WARNING) \ and not os.path.isfile('/etc/udev/rules.d/' + udev_file) \ @@ -178,8 +179,6 @@ def main(): # main UI event loop ui.run_loop(listener.start_all, listener.stop_all, args.window != 'only', args.window != 'hide') except Exception: - import sys - from traceback import format_exc sys.exit('%s: error: %s' % (NAME.lower(), format_exc()))