welcome: init welcome manager

relies on hyprland-welcome from guiutils to work
This commit is contained in:
Vaxry 2025-11-20 14:09:09 +00:00 committed by Mihai Fufezan
parent 94f4e51c36
commit 4765fe22a4
Signed by: fufexan
SSH key fingerprint: SHA256:SdnKmEpJrDu1+2UO1QpB/Eg4HKcdDi6n+xSRqFNJVpg
3 changed files with 52 additions and 0 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;