diff --git a/src/globalsystemtray.h b/src/globalsystemtray.h
new file mode 100644
index 0000000..e72713c
--- /dev/null
+++ b/src/globalsystemtray.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "lrcinstance.h"
+
+#include <QSystemTrayIcon>
+
+class GlobalSystemTray : public QSystemTrayIcon
+{
+    Q_OBJECT
+
+public:
+    static GlobalSystemTray &
+    instance()
+    {
+        static GlobalSystemTray *instance_ = new GlobalSystemTray();
+
+        return *instance_;
+    }
+
+    /*
+     * Remember the last triggering account for the notification,
+     * safe since user cannot activate previous notifications.
+     */
+    void setTriggeredAccountId(const QString &accountId);
+
+    const QString &getTriggeredAccountId();
+
+    void setPossibleOnGoingConversationInfo(const lrc::api::conversation::Info &convInfo);
+
+    const lrc::api::conversation::Info &getPossibleOnGoingConversationInfo();
+
+private:
+    GlobalSystemTray();
+
+    QString triggeredAccountId_;
+    lrc::api::conversation::Info triggeredOnGoingConvInfo_;
+};
