diff --git a/src/singletons/Settings.cpp b/src/singletons/Settings.cpp index db300ae8..9a077b09 100644 --- a/src/singletons/Settings.cpp +++ b/src/singletons/Settings.cpp @@ -5,6 +5,7 @@ #include "singletons/Paths.hpp" #include "singletons/Resources.hpp" #include "singletons/WindowManager.hpp" +#include "util/WindowsHelper.hpp" namespace chatterino { @@ -14,6 +15,12 @@ Settings::Settings(const QString &settingsDirectory) : ABSettings(settingsDirectory) { instance = this; + +#ifdef USEWINSDK + this->autorun = isRegisteredForStartup(); + this->autorun.connect( + [](bool autorun) { setRegisteredForStartup(autorun); }, false); +#endif } Settings &Settings::getInstance() diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index f54de6c6..0d71fbcc 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -98,6 +98,7 @@ public: "/behaviour/autocompletion/smallStreamerLimit", 1000}; BoolSetting pauseChatOnHover = {"/behaviour/pauseChatHover", false}; + BoolSetting autorun = {"/behaviour/autorun", false}; /// Commands BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false}; diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 7b6a2f83..9448e38b 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -170,6 +170,9 @@ void GeneralPage::initLayout(SettingsLayout &layout) }, [](auto args) { return fuzzyToFloat(args.value, 1.f); }); layout.addCheckbox("Always on top", s.windowTopMost); +#ifdef USEWINSDK + layout.addCheckbox("Start with Windows", s.autorun); +#endif layout.addTitle("Interface"); layout.addDropdown(