diff --git a/dstat_interface/main.py b/dstat_interface/main.py
index 9c0e03b50252f2c7902978165ab5bd9cdc3ededb..bca4a1e561c53c2b56e6882a3aed12913ca3da4f 100755
--- a/dstat_interface/main.py
+++ b/dstat_interface/main.py
@@ -208,7 +208,7 @@ class Main(object):
 
         self.on_serial_disconnect_clicked()
         db.stop_db()
-        Gtk.main_quit()
+        mainloop.quit()
 
     def on_gtk_about_activate(self, menuitem, data=None):
         """Display the about window."""
@@ -936,4 +936,9 @@ if __name__ == "__main__":
     multiprocessing.freeze_support()
     GObject.threads_init()
     MAIN = Main()
-    Gtk.main()
+    mainloop = GObject.MainLoop()
+    try:
+        mainloop.run()
+    except KeyboardInterrupt:
+        logger.info('Ctrl+C hit, quitting')
+        MAIN.quit()