aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorthejch <[email protected]>2024-04-29 08:07:35 -0700
committerGitHub <[email protected]>2024-04-29 16:07:35 +0100
commita783cd8f40594b686bc40d52a2af95bedba7a8d5 (patch)
treee5740d406d61051375de53e17cef731f67f1c80e
parent33e0bb14786dc22a0c82eaaf097b469d3fdeceea (diff)
downloadHyprland-a783cd8f40594b686bc40d52a2af95bedba7a8d5.tar.gz
Hyprland-a783cd8f40594b686bc40d52a2af95bedba7a8d5.zip
log: Add some colors to stdout log 🔴🟡🟢🔵🟣 (#5778)
* add colored log * add config option * make it dynamic
-rw-r--r--src/config/ConfigManager.cpp5
-rw-r--r--src/debug/Log.cpp35
-rw-r--r--src/debug/Log.hpp1
3 files changed, 32 insertions, 9 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 3c1bc80d..4a03b180 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -377,6 +377,7 @@ CConfigManager::CConfigManager() {
m_pConfig->addConfigValue("debug:error_limit", Hyprlang::INT{5});
m_pConfig->addConfigValue("debug:watchdog_timeout", Hyprlang::INT{5});
m_pConfig->addConfigValue("debug:disable_scale_checks", Hyprlang::INT{0});
+ m_pConfig->addConfigValue("debug:colored_stdout_logs", Hyprlang::INT{1});
m_pConfig->addConfigValue("decoration:rounding", Hyprlang::INT{0});
m_pConfig->addConfigValue("decoration:blur:enabled", Hyprlang::INT{1});
@@ -592,7 +593,7 @@ CConfigManager::CConfigManager() {
setDefaultAnimationVars();
resetHLConfig();
- Debug::log(LOG,
+ Debug::log(INFO,
"!!!!HEY YOU, YES YOU!!!!: further logs to stdout / logfile are disabled by default. BEFORE SENDING THIS LOG, ENABLE THEM. Use debug:disable_logs = false to do so: "
"https://wiki.hyprland.org/Configuring/Variables/#debug");
@@ -818,6 +819,8 @@ void CConfigManager::postConfigReload(const Hyprlang::CParseResult& result) {
if (Debug::disableStdout && isFirstLaunch)
Debug::log(LOG, "Disabling stdout logs! Check the log for further logs.");
+ Debug::coloredLogs = reinterpret_cast<int64_t* const*>(m_pConfig->getConfigValuePtr("debug:colored_stdout_logs")->getDataStaticPtr());
+
for (auto& m : g_pCompositor->m_vMonitors) {
// mark blur dirty
g_pHyprOpenGL->markBlurDirtyForMonitor(m.get());
diff --git a/src/debug/Log.cpp b/src/debug/Log.cpp
index 9fdf47f8..8b82c852 100644
--- a/src/debug/Log.cpp
+++ b/src/debug/Log.cpp
@@ -40,13 +40,32 @@ void Debug::log(LogLevel level, std::string str) {
if (shuttingDown)
return;
+ std::string coloredStr = str;
switch (level) {
- case LOG: str = "[LOG] " + str; break;
- case WARN: str = "[WARN] " + str; break;
- case ERR: str = "[ERR] " + str; break;
- case CRIT: str = "[CRITICAL] " + str; break;
- case INFO: str = "[INFO] " + str; break;
- case TRACE: str = "[TRACE] " + str; break;
+ case LOG:
+ str = "[LOG] " + str;
+ coloredStr = str;
+ break;
+ case WARN:
+ str = "[WARN] " + str;
+ coloredStr = "\033[1;33m" + str + "\033[0m"; // yellow
+ break;
+ case ERR:
+ str = "[ERR] " + str;
+ coloredStr = "\033[1;31m" + str + "\033[0m"; // red
+ break;
+ case CRIT:
+ str = "[CRITICAL] " + str;
+ coloredStr = "\033[1;35m" + str + "\033[0m"; // magenta
+ break;
+ case INFO:
+ str = "[INFO] " + str;
+ coloredStr = "\033[1;32m" + str + "\033[0m"; // green
+ break;
+ case TRACE:
+ str = "[TRACE] " + str;
+ coloredStr = "\033[1;34m" + str + "\033[0m"; // blue
+ break;
default: break;
}
@@ -65,5 +84,5 @@ void Debug::log(LogLevel level, std::string str) {
// log it to the stdout too.
if (!disableStdout)
- std::cout << str << "\n";
-} \ No newline at end of file
+ std::cout << ((coloredLogs && !**coloredLogs) ? str : coloredStr) << "\n";
+}
diff --git a/src/debug/Log.hpp b/src/debug/Log.hpp
index f1dd3eab..abf74065 100644
--- a/src/debug/Log.hpp
+++ b/src/debug/Log.hpp
@@ -27,6 +27,7 @@ namespace Debug {
inline bool disableStdout = false;
inline bool trace = false;
inline bool shuttingDown = false;
+ inline int64_t* const* coloredLogs = nullptr;
inline std::string rollingLog = ""; // rolling log contains the ROLLING_LOG_SIZE tail of the log