welcome: init welcome manager (#12409)

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
This commit is contained in:
Vaxry 2025-12-02 22:26:43 +00:00 committed by GitHub
parent f82a8630d7
commit 2cadc8abab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 70 additions and 18 deletions

View file

@ -60,6 +60,7 @@
#include "managers/HookSystemManager.hpp"
#include "managers/ProtocolManager.hpp"
#include "managers/LayoutManager.hpp"
#include "managers/WelcomeManager.hpp"
#include "render/AsyncResourceGatherer.hpp"
#include "plugins/PluginSystem.hpp"
#include "hyprerror/HyprError.hpp"
@ -603,6 +604,7 @@ void CCompositor::cleanup() {
g_pEventLoopManager.reset();
g_pVersionKeeperMgr.reset();
g_pDonationNagManager.reset();
g_pWelcomeManager.reset();
g_pANRManager.reset();
g_pConfigWatcher.reset();
g_pAsyncResourceGatherer.reset();
@ -708,6 +710,9 @@ void CCompositor::initManagers(eManagersInitStage stage) {
Debug::log(LOG, "Creating the DonationNag!");
g_pDonationNagManager = makeUnique<CDonationNagManager>();
Debug::log(LOG, "Creating the WelcomeManager!");
g_pWelcomeManager = makeUnique<CWelcomeManager>();
Debug::log(LOG, "Creating the ANRManager!");
g_pANRManager = makeUnique<CANRManager>();

View file

@ -0,0 +1,31 @@
#include "WelcomeManager.hpp"
#include "../debug/Log.hpp"
#include "../config/ConfigValue.hpp"
#include "../helpers/fs/FsUtils.hpp"
#include <hyprutils/os/Process.hpp>
using namespace Hyprutils::OS;
CWelcomeManager::CWelcomeManager() {
static auto PAUTOGEN = CConfigValue<Hyprlang::INT>("autogenerated");
if (!*PAUTOGEN) {
Debug::log(LOG, "[welcome] skipping, not autogen");
return;
}
if (!NFsUtils::executableExistsInPath("hyprland-welcome")) {
Debug::log(LOG, "[welcome] skipping, no welcome app");
return;
}
m_fired = true;
CProcess welcome("hyprland-welcome", {});
welcome.runAsync();
}
bool CWelcomeManager::fired() {
return m_fired;
}

View file

@ -0,0 +1,16 @@
#pragma once
#include "../helpers/memory/Memory.hpp"
class CWelcomeManager {
public:
CWelcomeManager();
// whether the welcome screen was shown this boot.
bool fired();
private:
bool m_fired = false;
};
inline UP<CWelcomeManager> g_pWelcomeManager;