hyprctl: Add Config Flag to hyprctl systeminfo (#6160)

This commit is contained in:
Gabriel Ford 2024-05-25 20:46:07 +00:00 committed by GitHub
parent addd3e7f1a
commit 553232a3e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 40 additions and 4 deletions

View file

@ -12,8 +12,12 @@ body:
- type: textarea - type: textarea
id: ver id: ver
attributes: attributes:
label: Hyprland Version label: System Info and Version
description: "Paste the output of `hyprctl systeminfo` here." 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: "<details> value: "<details>
<summary>System/Version info</summary> <summary>System/Version info</summary>

View file

@ -297,6 +297,8 @@ int main(int argc, char** argv) {
fullArgs += "r"; fullArgs += "r";
} else if (ARGS[i] == "-a" && !fullArgs.contains("a")) { } else if (ARGS[i] == "-a" && !fullArgs.contains("a")) {
fullArgs += "a"; fullArgs += "a";
} else if ((ARGS[i] == "-c" || ARGS[i] == "--config") && !fullArgs.contains("c")) {
fullArgs += "c";
} else if (ARGS[i] == "--batch") { } else if (ARGS[i] == "--batch") {
fullRequest = "--batch "; fullRequest = "--batch ";
} else if (ARGS[i] == "--instance" || ARGS[i] == "-i") { } else if (ARGS[i] == "--instance" || ARGS[i] == "-i") {

View file

@ -633,6 +633,25 @@ std::string CConfigManager::getMainConfigPath() {
return getConfigDir() + "/hypr/" + (ISDEBUG ? "hyprlandd.conf" : "hyprland.conf"); 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<char>(configFile), std::istreambuf_iterator<char>());
configString.append(currFileContent);
}
return configString;
}
std::string CConfigManager::getErrors() { std::string CConfigManager::getErrors() {
return m_szConfigErrors; return m_szConfigErrors;
} }

View file

@ -103,6 +103,7 @@ class CConfigManager {
void onPluginLoadUnload(const std::string& name, bool load); void onPluginLoadUnload(const std::string& name, bool load);
static std::string getConfigDir(); static std::string getConfigDir();
static std::string getMainConfigPath(); static std::string getMainConfigPath();
const std::string getConfigString();
SMonitorRule getMonitorRuleFor(const CMonitor&); SMonitorRule getMonitorRuleFor(const CMonitor&);
SWorkspaceRule getWorkspaceRuleFor(PHLWORKSPACE workspace); SWorkspaceRule getWorkspaceRuleFor(PHLWORKSPACE workspace);

View file

@ -23,6 +23,7 @@
#include "../devices/IKeyboard.hpp" #include "../devices/IKeyboard.hpp"
#include "../devices/ITouch.hpp" #include "../devices/ITouch.hpp"
#include "../devices/Tablet.hpp" #include "../devices/Tablet.hpp"
#include "config/ConfigManager.hpp"
static void trimTrailingComma(std::string& str) { static void trimTrailingComma(std::string& str) {
if (!str.empty() && str.back() == ',') 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); 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; return result;
} }
@ -1640,6 +1647,8 @@ std::string CHyprCtl::getReply(std::string request) {
reloadAll = true; reloadAll = true;
else if (c == 'a') else if (c == 'a')
m_sCurrentRequestParams.all = true; m_sCurrentRequestParams.all = true;
else if (c == 'c')
m_sCurrentRequestParams.sysInfoConfig = true;
} }
if (sepIndex < request.size()) if (sepIndex < request.size())

View file

@ -17,7 +17,8 @@ class CHyprCtl {
int m_iSocketFD = -1; int m_iSocketFD = -1;
struct { struct {
bool all = false; bool all = false;
bool sysInfoConfig = false;
} m_sCurrentRequestParams; } m_sCurrentRequestParams;
private: private:
@ -26,4 +27,4 @@ class CHyprCtl {
std::vector<SP<SHyprCtlCommand>> m_vCommands; std::vector<SP<SHyprCtlCommand>> m_vCommands;
}; };
inline std::unique_ptr<CHyprCtl> g_pHyprCtl; inline std::unique_ptr<CHyprCtl> g_pHyprCtl;