From 98e1269ae291f2bcc67c30d890d8d0cbef51c4a5 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Mon, 27 Sep 2021 16:58:48 +0200 Subject: [PATCH] fix(linux): Don't crash with non-keyboard package file If a user tries to a install a model .kmp file, we now display a message box instead of crashing. Fixes #5753. --- linux/keyman-config/keyman_config/install_window.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/linux/keyman-config/keyman_config/install_window.py b/linux/keyman-config/keyman_config/install_window.py index 361b34b659..218494eb89 100755 --- a/linux/keyman-config/keyman_config/install_window.py +++ b/linux/keyman-config/keyman_config/install_window.py @@ -62,6 +62,15 @@ class InstallKmpWindow(Gtk.Dialog): with tempfile.TemporaryDirectory() as tmpdirname: extract_kmp(kmpfile, tmpdirname) info, system, options, keyboards, files = get_metadata(tmpdirname) + if not keyboards: + # Likely not a keyboard .kmp file + logging.info("%s is not a Keyman keyboard package" % kmpfile) + dialog = Gtk.MessageDialog(viewkmp, 0, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, + _("The file '{kmpfile}' is not a Keyman keyboard package!").format(kmpfile=kmpfile)) + dialog.run() + dialog.destroy() + self.checkcontinue = False + return if len(keyboards) > 0 and 'name' in keyboards[0]: self.kbname = keyboards[0]['name'] else: