diff --git a/gui/main.cpp b/gui/main.cpp
index 5ecd4add775c734e838a0a4b4f96b5bb42e267c0..eca834a90b4b927215e6e37a0daa809064e28d08 100644
--- a/gui/main.cpp
+++ b/gui/main.cpp
@@ -1,10 +1,12 @@
+#include <csignal>
+#include <string>
+
 #include <QApplication>
 #include <QSystemTrayIcon>
 #include <QTimer>
 #include <QtQml>
 #include <QQmlApplicationEngine>
 #include <QQuickWindow>
-#include <string>
 
 #include "handlers.h"
 #include "qjsonmodel.h"
@@ -32,7 +34,13 @@ std::string getEnv(std::string const& key)
     return val == NULL ? std::string() : std::string(val);
 }
 
+void signalHandler(int signum) {
+    Quit();
+    exit(0);
+}
+
 int main(int argc, char **argv) {
+    signal(SIGINT, signalHandler);
 
     bool debugQml = getEnv("DEBUG_QML_DATA") == "yes";
 
@@ -80,6 +88,7 @@ int main(int argc, char **argv) {
             QGuiApplication::quit();
     });
 
+
     /* register statusChanged callback with CGO */
     const char *stCh = "OnStatusChanged";
     GoString statusChangedEvt = {stCh, (long int)strlen(stCh)};