Hyprland/src/main.cpp

53 lines
1.4 KiB
C++
Raw Normal View History

2022-03-16 20:50:55 +01:00
#include "defines.hpp"
#include "debug/Log.hpp"
2022-03-16 21:37:21 +01:00
#include "Compositor.hpp"
2022-03-17 15:53:45 +01:00
#include "config/ConfigManager.hpp"
#include "init/initHelpers.hpp"
2022-06-03 17:48:07 +02:00
#include <iostream>
// I am a bad bad boy and have used some global vars here,
// just for this file
bool ignoreSudo = false;
2022-03-16 20:50:55 +01:00
int main(int argc, char** argv) {
if (!getenv("XDG_RUNTIME_DIR"))
throw std::runtime_error("XDG_RUNTIME_DIR is not set!");
2022-03-16 20:50:55 +01:00
// parse some args
for (int i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--i-am-really-stupid"))
ignoreSudo = true;
}
system("mkdir -p /tmp/hypr");
if (!ignoreSudo) {
if (Init::isSudo()) {
2022-06-03 17:48:07 +02:00
std::cout << "Hyprland shall not be run as the root user. If you really want to, use the --i-am-really-stupid flag.\n";
return 1;
}
} else {
2022-06-03 17:48:07 +02:00
std::cout << "Running with ignored root checks, I surely hope you know what you're doing.\n";
sleep(1);
}
2022-06-03 17:48:07 +02:00
std::cout << "Welcome to Hyprland!\n";
2022-03-16 21:37:21 +01:00
// let's init the compositor.
// it initializes basic Wayland stuff in the constructor.
g_pCompositor = std::make_unique<CCompositor>();
Debug::log(LOG, "Hyprland init finished.");
// If all's good to go, start.
g_pCompositor->startCompositor();
2022-03-16 20:50:55 +01:00
2022-03-16 21:37:21 +01:00
// If we are here it means we got yote.
Debug::log(LOG, "Hyprland reached the end.");
2022-03-16 20:50:55 +01:00
g_pCompositor->cleanupExit();
2022-03-17 19:03:15 +01:00
2022-03-16 20:50:55 +01:00
return EXIT_SUCCESS;
}