diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 08a9ad9c..66ce5fa9 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -12,8 +12,12 @@ body: - type: textarea id: ver attributes: - label: Hyprland Version - description: "Paste the output of `hyprctl systeminfo` here." + label: System Info and Version + description: | + Paste the output of `hyprctl systeminfo -c` here (If you are on a + version that shows you help menu, omit the `-c` and attach config files + to the issue). If you have configs outside of the main config shown + here, please attach. value: "
System/Version info diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp index e9d7583c..bdf354e7 100644 --- a/hyprctl/main.cpp +++ b/hyprctl/main.cpp @@ -297,6 +297,8 @@ int main(int argc, char** argv) { fullArgs += "r"; } else if (ARGS[i] == "-a" && !fullArgs.contains("a")) { fullArgs += "a"; + } else if ((ARGS[i] == "-c" || ARGS[i] == "--config") && !fullArgs.contains("c")) { + fullArgs += "c"; } else if (ARGS[i] == "--batch") { fullRequest = "--batch "; } else if (ARGS[i] == "--instance" || ARGS[i] == "-i") { diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index fd70da77..f65b5abb 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -633,6 +633,25 @@ std::string CConfigManager::getMainConfigPath() { return getConfigDir() + "/hypr/" + (ISDEBUG ? "hyprlandd.conf" : "hyprland.conf"); } +const std::string CConfigManager::getConfigString() { + std::string configString; + std::string currFileContent; + + for (auto path : configPaths) { + std::ifstream configFile(path); + configString += ("\n\nConfig File: " + path + ": "); + if (!configFile.is_open()) { + Debug::log(LOG, "Config file not readable/found!"); + configString += "Read Failed\n"; + continue; + } + configString += "Read Succeeded\n"; + currFileContent.assign(std::istreambuf_iterator(configFile), std::istreambuf_iterator()); + configString.append(currFileContent); + } + return configString; +} + std::string CConfigManager::getErrors() { return m_szConfigErrors; } diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp index 45b100ee..ca22904d 100644 --- a/src/config/ConfigManager.hpp +++ b/src/config/ConfigManager.hpp @@ -103,6 +103,7 @@ class CConfigManager { void onPluginLoadUnload(const std::string& name, bool load); static std::string getConfigDir(); static std::string getMainConfigPath(); + const std::string getConfigString(); SMonitorRule getMonitorRuleFor(const CMonitor&); SWorkspaceRule getWorkspaceRuleFor(PHLWORKSPACE workspace); diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index dc5fa742..1faea41c 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -23,6 +23,7 @@ #include "../devices/IKeyboard.hpp" #include "../devices/ITouch.hpp" #include "../devices/Tablet.hpp" +#include "config/ConfigManager.hpp" static void trimTrailingComma(std::string& str) { if (!str.empty() && str.back() == ',') @@ -897,6 +898,12 @@ std::string systemInfoRequest(eHyprCtlOutputFormat format, std::string request) result += std::format(" {} by {} ver {}\n", pl->name, pl->author, pl->version); } + if (g_pHyprCtl->m_sCurrentRequestParams.sysInfoConfig) { + result += "\n======Config-Start======\n"; + result += g_pConfigManager->getConfigString(); + result += "\n======Config-End========\n"; + } + return result; } @@ -1640,6 +1647,8 @@ std::string CHyprCtl::getReply(std::string request) { reloadAll = true; else if (c == 'a') m_sCurrentRequestParams.all = true; + else if (c == 'c') + m_sCurrentRequestParams.sysInfoConfig = true; } if (sepIndex < request.size()) diff --git a/src/debug/HyprCtl.hpp b/src/debug/HyprCtl.hpp index ebcb87cf..b48ea26a 100644 --- a/src/debug/HyprCtl.hpp +++ b/src/debug/HyprCtl.hpp @@ -17,7 +17,8 @@ class CHyprCtl { int m_iSocketFD = -1; struct { - bool all = false; + bool all = false; + bool sysInfoConfig = false; } m_sCurrentRequestParams; private: @@ -26,4 +27,4 @@ class CHyprCtl { std::vector> m_vCommands; }; -inline std::unique_ptr g_pHyprCtl; \ No newline at end of file +inline std::unique_ptr g_pHyprCtl;