diff --git a/include/UserSettingsPage.h b/include/UserSettingsPage.h
index a58020ced3db0d5f76b981d4a066b7150d2f3d7f..177f19218b0d63b6cfe3a9ad9d301b92816173c3 100644
--- a/include/UserSettingsPage.h
+++ b/include/UserSettingsPage.h
@@ -46,6 +46,12 @@ public:
                 save();
         };
 
+        void setStartInTray(bool state)
+        {
+                isStartInTrayEnabled_ = state;
+                save();
+        };
+
         void setRoomOrdering(bool state)
         {
                 isOrderingEnabled_ = state;
@@ -75,6 +81,7 @@ public:
 
         QString theme() const { return !theme_.isEmpty() ? theme_ : "light"; }
         bool isTrayEnabled() const { return isTrayEnabled_; }
+        bool isStartInTrayEnabled() const { return isStartInTrayEnabled_; }
         bool isOrderingEnabled() const { return isOrderingEnabled_; }
         bool isGroupViewEnabled() const { return isGroupViewEnabled_; }
         bool isTypingNotificationsEnabled() const { return isTypingNotificationsEnabled_; }
@@ -86,6 +93,7 @@ signals:
 private:
         QString theme_;
         bool isTrayEnabled_;
+        bool isStartInTrayEnabled_;
         bool isOrderingEnabled_;
         bool isGroupViewEnabled_;
         bool isTypingNotificationsEnabled_;
@@ -128,6 +136,7 @@ private:
         QSharedPointer<UserSettings> settings_;
 
         Toggle *trayToggle_;
+        Toggle *startInTrayToggle_;
         Toggle *roomOrderToggle_;
         Toggle *groupViewToggle_;
         Toggle *typingNotifications_;
diff --git a/src/UserSettingsPage.cc b/src/UserSettingsPage.cc
index 198d8bf13a73053c8ee4501791d88d088d54862f..fe66c1897e6ed2d5a699828197d4a30455e8ab9d 100644
--- a/src/UserSettingsPage.cc
+++ b/src/UserSettingsPage.cc
@@ -37,6 +37,7 @@ UserSettings::load()
 {
         QSettings settings;
         isTrayEnabled_                = settings.value("user/window/tray", true).toBool();
+        isStartInTrayEnabled_         = settings.value("user/window/start_in_tray", false).toBool();
         isOrderingEnabled_            = settings.value("user/room_ordering", true).toBool();
         isGroupViewEnabled_           = settings.value("user/group_view", true).toBool();
         isTypingNotificationsEnabled_ = settings.value("user/typing_notifications", true).toBool();
@@ -85,6 +86,7 @@ UserSettings::save()
 
         settings.beginGroup("window");
         settings.setValue("tray", isTrayEnabled_);
+        settings.setValue("start_in_tray", isStartInTrayEnabled_);
         settings.endGroup();
 
         settings.setValue("room_ordering", isOrderingEnabled_);
@@ -140,6 +142,20 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
         trayOptionLayout_->addWidget(trayLabel);
         trayOptionLayout_->addWidget(trayToggle_, 0, Qt::AlignBottom | Qt::AlignRight);
 
+        auto startInTrayOptionLayout_ = new QHBoxLayout;
+        startInTrayOptionLayout_->setContentsMargins(0, OptionMargin, 0, OptionMargin);
+        auto startInTrayLabel = new QLabel(tr("Start in tray"), this);
+        startInTrayToggle_    = new Toggle(this);
+        startInTrayToggle_->setActiveColor(QColor("#38A3D8"));
+        startInTrayToggle_->setInactiveColor(QColor("gray"));
+        if (!settings_->isTrayEnabled())
+                startInTrayToggle_->setDisabled(true);
+        startInTrayLabel->setStyleSheet("font-size: 15px;");
+
+        startInTrayOptionLayout_->addWidget(startInTrayLabel);
+        startInTrayOptionLayout_->addWidget(
+          startInTrayToggle_, 0, Qt::AlignBottom | Qt::AlignRight);
+
         auto orderRoomLayout = new QHBoxLayout;
         orderRoomLayout->setContentsMargins(0, OptionMargin, 0, OptionMargin);
         auto orderLabel  = new QLabel(tr("Re-order rooms based on activity"), this);
@@ -207,6 +223,8 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
         mainLayout_->addWidget(new HorizontalLine(this));
         mainLayout_->addLayout(trayOptionLayout_);
         mainLayout_->addWidget(new HorizontalLine(this));
+        mainLayout_->addLayout(startInTrayOptionLayout_);
+        mainLayout_->addWidget(new HorizontalLine(this));
         mainLayout_->addLayout(orderRoomLayout);
         mainLayout_->addWidget(new HorizontalLine(this));
         mainLayout_->addLayout(groupViewLayout);
@@ -228,9 +246,18 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
 
         connect(trayToggle_, &Toggle::toggled, this, [this](bool isDisabled) {
                 settings_->setTray(!isDisabled);
+                if (isDisabled) {
+                        startInTrayToggle_->setDisabled(true);
+                } else {
+                        startInTrayToggle_->setEnabled(true);
+                }
                 emit trayOptionChanged(!isDisabled);
         });
 
+        connect(startInTrayToggle_, &Toggle::toggled, this, [this](bool isDisabled) {
+                settings_->setStartInTray(!isDisabled);
+        });
+
         connect(roomOrderToggle_, &Toggle::toggled, this, [this](bool isDisabled) {
                 settings_->setRoomOrdering(!isDisabled);
         });
@@ -260,6 +287,7 @@ UserSettingsPage::showEvent(QShowEvent *)
 
         // FIXME: Toggle treats true as "off"
         trayToggle_->setState(!settings_->isTrayEnabled());
+        startInTrayToggle_->setState(!settings_->isStartInTrayEnabled());
         roomOrderToggle_->setState(!settings_->isOrderingEnabled());
         groupViewToggle_->setState(!settings_->isGroupViewEnabled());
         typingNotifications_->setState(!settings_->isTypingNotificationsEnabled());
diff --git a/src/main.cc b/src/main.cc
index 82073454565fef43958beaaf2d379ef159bde916..bd3a212ceafd343c2a5a40e90a392804dbca3c7f 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -160,7 +160,10 @@ main(int argc, char *argv[])
 
         // Move the MainWindow to the center
         w.move(screenCenter(w.width(), w.height()));
-        w.show();
+
+        if (!settings.value("user/window/start_in_tray", false).toBool() ||
+            !settings.value("user/window/tray", true).toBool())
+                w.show();
 
         QObject::connect(&app, &QApplication::aboutToQuit, &w, &MainWindow::saveCurrentWindowSize);