diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 3573996d..1261d003 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -206,11 +206,21 @@ CCompositor::~CCompositor() { } void CCompositor::setRandomSplash() { + auto tt = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + auto local = *localtime(&tt); + + const auto* SPLASHES = &NSplashes::SPLASHES; + + if (local.tm_mon + 1 == 12 && local.tm_mday >= 23 && local.tm_mday <= 27) // dec 23-27 + SPLASHES = &NSplashes::SPLASHES_CHRISTMAS; + if ((local.tm_mon + 1 == 12 && local.tm_mday >= 29) || (local.tm_mon + 1 == 1 && local.tm_mday <= 3)) + SPLASHES = &NSplashes::SPLASHES_NEWYEAR; + std::random_device dev; std::mt19937 engine(dev()); - std::uniform_int_distribution<> distribution(0, SPLASHES.size() - 1); + std::uniform_int_distribution<> distribution(0, SPLASHES->size() - 1); - m_szCurrentSplash = SPLASHES[distribution(engine)]; + m_szCurrentSplash = SPLASHES->at(distribution(engine)); } static std::vector> pendingOutputs; diff --git a/src/helpers/Splashes.hpp b/src/helpers/Splashes.hpp index 4a4fd022..2c74abb1 100644 --- a/src/helpers/Splashes.hpp +++ b/src/helpers/Splashes.hpp @@ -3,80 +3,112 @@ #include #include -inline const std::vector SPLASHES = { - // clang-format off - "Woo, animations!", - "It's like Hypr, but better.", - "Release 1.0 when?", - "It's not awesome, it's Hyprland!", - "\"I commit too often, people can't catch up lmao\" - Vaxry", - "This text is random.", - "\"There are reasons to not use rust.\" - Boga", - "Read the wiki.", - "\"Hello everyone this is YOUR daily dose of ‘read the wiki’\" - Vaxry", - "h", - "\"‘why no work’, bro I haven't hacked your pc to get live feeds yet\" - Vaxry", - "Compile, wait for 20 minutes, notice a new commit, compile again.", - "To rice, or not to rice, that is the question.", - "Now available on Fedora!", - "\"Hyprland is so good it starts with a capital letter\" - Hazel", - "\"please make this message a splash\" - eriedaberrie", - "\"the only wayland compositor powered by fried chicken\" - raf", - "\"This will never get into Hyprland\" - Flafy", - "\"Hyprland only gives you up on -git\" - fazzi", - "Segmentation fault (core dumped)", - "\"disabling hyprland logo is a war crime\" - vaxry", - "some basic startup code", - "\"I think I am addicted to hyprland\" - mathisbuilder", - "\"hyprland is the most important package in the arch repos\" - jacekpoz", - "Thanks Brodie!", - "Thanks fufexan!", - "Thanks raf!", - "You can't use --splash to change this message :)", - "Hyprland will overtake Gnome in popularity by [insert year]", - // music reference / quote section - "J'remue le ciel, le jour, la nuit.", - "aezakmi, aezakmi, aezakmi, aezakmi, aezakmi, aezakmi, aezakmi!", - "Wir sind schon sehr lang zusammen...", - "I see a red door and I want it painted black.", - "Take on me, take me on...", - "You spin me right round baby right round", - "Stayin' alive, stayin' alive", - "Say no way, say no way ya, no way!", - "Ground control to Major Tom...", - "Alors on danse", - "And all that I can see, is just a yellow lemon tree.", - "Got a one-way ticket to the blues", - "Is this the real life, is this just fantasy", - "What's in your head, in your head?", - "We're all living in America, America, America.", - "I'm still standing, better than I ever did", - "Here comes the sun, bringing you love and shining on everyone", - "Two trailer park girls go round the outside", - "With the lights out, it's less dangerous", - "Here we go back, this is the moment, tonight is the night", - "Now you're just somebody that I used to know...", - "Black bird, black moon, black sky", - "Some legends are told, some turn to dust or to gold", - "Your brain gets smart, but your head gets dumb.", - "Save your mercy for someone who needs it more", - "You're gonna hear my voice when I shout it out loud", - "Ding ding pch n daa, bam-ba-ba-re-bam baram bom bom baba-bam-bam-bommm", - "Súbeme la radio que esta es mi canción", - "I'm beggin', beggin' you", - "Never gonna let you down (I am trying!)", - "\"I use Arch, btw\" - John Cena", - "\"Hyper\".replace(\"e\", \"\")", - "\"my win11 install runs hyprland that is true\" - raf", - "\"stop playing league loser\" - hyprBot", - "\"If it ain't broke, don't fix it\" - Lucascito_03", - "\"@vaxry how do i learn c++\" - flicko", - // - "Join the discord server!", - "Thanks ThatOneCalculator!", - "The AUR packages always work, except for the times they don't.", - "Funny animation compositor woo", - // - "2 years!" - // clang-format on +namespace NSplashes { + inline const std::vector SPLASHES = { + // clang-format off + "Woo, animations!", + "It's like Hypr, but better.", + "Release 1.0 when?", + "It's not awesome, it's Hyprland!", + "\"I commit too often, people can't catch up lmao\" - Vaxry", + "This text is random.", + "\"There are reasons to not use rust.\" - Boga", + "Read the wiki.", + "\"Hello everyone this is YOUR daily dose of ‘read the wiki’\" - Vaxry", + "h", + "\"‘why no work’, bro I haven't hacked your pc to get live feeds yet\" - Vaxry", + "Compile, wait for 20 minutes, notice a new commit, compile again.", + "To rice, or not to rice, that is the question.", + "Now available on Fedora!", + "\"Hyprland is so good it starts with a capital letter\" - Hazel", + "\"please make this message a splash\" - eriedaberrie", + "\"the only wayland compositor powered by fried chicken\" - raf", + "\"This will never get into Hyprland\" - Flafy", + "\"Hyprland only gives you up on -git\" - fazzi", + "Segmentation fault (core dumped)", + "\"disabling hyprland logo is a war crime\" - vaxry", + "some basic startup code", + "\"I think I am addicted to hyprland\" - mathisbuilder", + "\"hyprland is the most important package in the arch repos\" - jacekpoz", + "Thanks Brodie!", + "Thanks fufexan!", + "Thanks raf!", + "You can't use --splash to change this message :)", + "Hyprland will overtake Gnome in popularity by [insert year]", + // music reference / quote section + "J'remue le ciel, le jour, la nuit.", + "aezakmi, aezakmi, aezakmi, aezakmi, aezakmi, aezakmi, aezakmi!", + "Wir sind schon sehr lang zusammen...", + "I see a red door and I want it painted black.", + "Take on me, take me on...", + "You spin me right round baby right round", + "Stayin' alive, stayin' alive", + "Say no way, say no way ya, no way!", + "Ground control to Major Tom...", + "Alors on danse", + "And all that I can see, is just a yellow lemon tree.", + "Got a one-way ticket to the blues", + "Is this the real life, is this just fantasy", + "What's in your head, in your head?", + "We're all living in America, America, America.", + "I'm still standing, better than I ever did", + "Here comes the sun, bringing you love and shining on everyone", + "Two trailer park girls go round the outside", + "With the lights out, it's less dangerous", + "Here we go back, this is the moment, tonight is the night", + "Now you're just somebody that I used to know...", + "Black bird, black moon, black sky", + "Some legends are told, some turn to dust or to gold", + "Your brain gets smart, but your head gets dumb.", + "Save your mercy for someone who needs it more", + "You're gonna hear my voice when I shout it out loud", + "Ding ding pch n daa, bam-ba-ba-re-bam baram bom bom baba-bam-bam-bommm", + "Súbeme la radio que esta es mi canción", + "I'm beggin', beggin' you", + "Never gonna let you down (I am trying!)", + "\"I use Arch, btw\" - John Cena", + "\"Hyper\".replace(\"e\", \"\")", + "\"my win11 install runs hyprland that is true\" - raf", + "\"stop playing league loser\" - hyprBot", + "\"If it ain't broke, don't fix it\" - Lucascito_03", + "\"@vaxry how do i learn c++\" - flicko", + // + "Join the discord server!", + "Thanks ThatOneCalculator!", + "The AUR packages always work, except for the times they don't.", + "Funny animation compositor woo", + // + "2 years!" + // clang-format on + }; + + inline const std::vector SPLASHES_CHRISTMAS = { + // clang-format off + "Merry Christmas!", + "Merry Xmas!", + "Ho ho ho", + "Santa was here", + // clang-format on + }; + + // ONLY valid near new years. + inline static int newYear = []() -> int { + auto tt = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + auto local = *localtime(&tt); + + if (local.tm_mon < 8 /* decided with a fair die I promise. */) + return local.tm_year + 1900; + return local.tm_year + 1901; + }(); + + inline const std::vector SPLASHES_NEWYEAR = { + // clang-format off + "Happy new Year!", + "[New year] will be the year of the Linux desktop!", + "[New year] will be the year of the Hyprland desktop!", + std::format("{} will be the year of the Linux desktop!", newYear), + std::format("{} will be the year of the Hyprland desktop!", newYear), + std::format("Let's make {} even better than {}!", newYear, newYear - 1), + // clang-format on + }; }; \ No newline at end of file