summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortarneo <tarneo@tarneo.fr>2024-02-21 21:15:10 +0100
committertarneo <tarneo@tarneo.fr>2024-02-21 21:15:10 +0100
commit566c07c78955c2940fac7cc71051b6114c6e8676 (patch)
tree05d050d58bf20cfa8854c37a6854eb7980c6ce8a
parentb92f05335006eec526dd15a476150c6212d6ff47 (diff)
downloadqutebrowser-566c07c78955c2940fac7cc71051b6114c6e8676.tar.gz
qutebrowser-566c07c78955c2940fac7cc71051b6114c6e8676.zip
Allow reloading config on SIGHUP
Before this commit qutebrowser would just exit when receiving a SIGHUP. Now it will reload the config using the bare config_source function, just like the :config-source command does. Closes #8108.
-rw-r--r--qutebrowser/misc/crashsignal.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/qutebrowser/misc/crashsignal.py b/qutebrowser/misc/crashsignal.py
index c69dcbe29..79dbe6bcc 100644
--- a/qutebrowser/misc/crashsignal.py
+++ b/qutebrowser/misc/crashsignal.py
@@ -335,6 +335,8 @@ class SignalHandler(QObject):
signal.SIGINT, self.interrupt)
self._orig_handlers[signal.SIGTERM] = signal.signal(
signal.SIGTERM, self.interrupt)
+ self._orig_handlers[signal.SIGHUP] = signal.signal(
+ signal.SIGHUP, self.reload_config)
if utils.is_posix and hasattr(signal, 'set_wakeup_fd'):
# pylint: disable=import-error,no-member,useless-suppression
@@ -430,6 +432,15 @@ class SignalHandler(QObject):
print("WHY ARE YOU DOING THIS TO ME? :(")
sys.exit(128 + signum)
+ def reload_config(self, _signum, _frame):
+ """Reload the config."""
+ log.signals.info("SIGHUP received, reloading config.")
+ config_commands = objreg.get('config-commands', from_command=True)
+ try:
+ config_commands.config_source()
+ except cmdutils.CommandError as e:
+ log.signals.error("Error while reloading config:", exc_info=e)
+
def init(q_app: QApplication,
args: argparse.Namespace,