diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 5c0713ec7..ca232a4c7 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -174,6 +174,10 @@ void Application::run() { psNewVersion(); } + if (cAutoStart() && !Platform::AutostartSupported()) { + cSetAutoStart(false); + } + if (cLaunchMode() == LaunchModeAutoStart && !cAutoStart()) { psAutoStart(false, true); App::quit(); diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index 946c0693a..60c352e18 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -516,6 +516,13 @@ std::optional LastUserInputTime() { return std::nullopt; } +bool AutostartSupported() { + // snap sandbox doesn't allow creating files in folders with names started with a dot + // and doesn't provide any api to add an app to autostart + // thus, autostart isn't supported in snap + return !InSnap(); +} + void FallbackFontConfigCheckBegin() { if (!CheckFontConfigCrash()) { return; diff --git a/Telegram/SourceFiles/platform/mac/specific_mac.mm b/Telegram/SourceFiles/platform/mac/specific_mac.mm index 8b31672f2..00ab6fec0 100644 --- a/Telegram/SourceFiles/platform/mac/specific_mac.mm +++ b/Telegram/SourceFiles/platform/mac/specific_mac.mm @@ -262,6 +262,10 @@ void IgnoreApplicationActivationRightNow() { objc_ignoreApplicationActivationRightNow(); } +bool AutostartSupported() { + return false; +} + } // namespace Platform void psNewVersion() { diff --git a/Telegram/SourceFiles/platform/platform_specific.h b/Telegram/SourceFiles/platform/platform_specific.h index 18ebd6c0c..db963f599 100644 --- a/Telegram/SourceFiles/platform/platform_specific.h +++ b/Telegram/SourceFiles/platform/platform_specific.h @@ -40,6 +40,7 @@ bool OpenSystemSettings(SystemSettingsType type); } void IgnoreApplicationActivationRightNow(); +bool AutostartSupported(); namespace ThirdParty { diff --git a/Telegram/SourceFiles/platform/win/specific_win.cpp b/Telegram/SourceFiles/platform/win/specific_win.cpp index 8300625ae..26b237db8 100644 --- a/Telegram/SourceFiles/platform/win/specific_win.cpp +++ b/Telegram/SourceFiles/platform/win/specific_win.cpp @@ -381,6 +381,10 @@ std::optional LastUserInputTime() { return LastTrackedWhen; } +bool AutostartSupported() { + return !IsWindowsStoreBuild(); +} + } // namespace Platform namespace { diff --git a/Telegram/SourceFiles/settings/settings_advanced.cpp b/Telegram/SourceFiles/settings/settings_advanced.cpp index 68a506baf..0d3dabe9a 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.cpp +++ b/Telegram/SourceFiles/settings/settings_advanced.cpp @@ -404,8 +404,7 @@ void SetupTrayContent(not_null container) { }, taskbar->lifetime()); } -#ifndef OS_WIN_STORE - if (Platform::IsWindows() || Platform::IsLinux()) { + if (Platform::AutostartSupported()) { const auto minimizedToggled = [] { return cStartMinimized() && !Global::LocalPasscode(); }; @@ -454,6 +453,7 @@ void SetupTrayContent(not_null container) { }, minimized->lifetime()); } +#ifndef OS_WIN_STORE if (Platform::IsWindows()) { const auto sendto = addCheckbox( tr::lng_settings_add_sendto(tr::now),