aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVaxry <[email protected]>2024-03-08 17:47:12 +0000
committerVaxry <[email protected]>2024-03-08 17:47:12 +0000
commit717d5b3cc2b9e2f94d3ec1ba794e21bc2bb787e3 (patch)
tree975b7dd0936a227276ff1a7e6af882f2878b19b6
parent0a4ade01d35abb4506da77cc64ab93e0c5c34dbd (diff)
downloadHyprland-717d5b3cc2b9e2f94d3ec1ba794e21bc2bb787e3.tar.gz
Hyprland-717d5b3cc2b9e2f94d3ec1ba794e21bc2bb787e3.zip
hyprctl: hide unmapped windows without -a
-rw-r--r--hyprctl/main.cpp2
-rw-r--r--src/debug/HyprCtl.cpp15
-rw-r--r--src/debug/HyprCtl.hpp4
3 files changed, 18 insertions, 3 deletions
diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp
index e6ae15bb..4d6066b5 100644
--- a/hyprctl/main.cpp
+++ b/hyprctl/main.cpp
@@ -309,6 +309,8 @@ int main(int argc, char** argv) {
json = true;
} else if (ARGS[i] == "-r" && !fullArgs.contains("r")) {
fullArgs += "r";
+ } else if (ARGS[i] == "-a" && !fullArgs.contains("a")) {
+ fullArgs += "a";
} else if (ARGS[i] == "--batch") {
fullRequest = "--batch ";
} else if (ARGS[i] == "--instance" || ARGS[i] == "-i") {
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp
index 594d002f..80b1d16c 100644
--- a/src/debug/HyprCtl.cpp
+++ b/src/debug/HyprCtl.cpp
@@ -242,6 +242,9 @@ std::string clientsRequest(eHyprCtlOutputFormat format, std::string request) {
result += "[";
for (auto& w : g_pCompositor->m_vWindows) {
+ if (!w->m_bIsMapped && !g_pHyprCtl->m_sCurrentRequestParams.all)
+ continue;
+
result += getWindowData(w.get(), format);
}
@@ -250,6 +253,9 @@ std::string clientsRequest(eHyprCtlOutputFormat format, std::string request) {
result += "]";
} else {
for (auto& w : g_pCompositor->m_vWindows) {
+ if (!w->m_bIsMapped && !g_pHyprCtl->m_sCurrentRequestParams.all)
+ continue;
+
result += getWindowData(w.get(), format);
}
}
@@ -1562,8 +1568,9 @@ void CHyprCtl::unregisterCommand(const std::shared_ptr<SHyprCtlCommand>& cmd) {
}
std::string CHyprCtl::getReply(std::string request) {
- auto format = eHyprCtlOutputFormat::FORMAT_NORMAL;
- bool reloadAll = false;
+ auto format = eHyprCtlOutputFormat::FORMAT_NORMAL;
+ bool reloadAll = false;
+ m_sCurrentRequestParams = {};
// process flags for non-batch requests
if (!request.starts_with("[[BATCH]]") && request.contains("/")) {
@@ -1584,8 +1591,10 @@ std::string CHyprCtl::getReply(std::string request) {
if (c == 'j')
format = eHyprCtlOutputFormat::FORMAT_JSON;
- if (c == 'r')
+ else if (c == 'r')
reloadAll = true;
+ else if (c == 'a')
+ m_sCurrentRequestParams.all = true;
}
if (sepIndex < request.size())
diff --git a/src/debug/HyprCtl.hpp b/src/debug/HyprCtl.hpp
index 339acd1b..d668fffc 100644
--- a/src/debug/HyprCtl.hpp
+++ b/src/debug/HyprCtl.hpp
@@ -16,6 +16,10 @@ class CHyprCtl {
int m_iSocketFD = -1;
+ struct {
+ bool all = false;
+ } m_sCurrentRequestParams;
+
private:
void startHyprCtlSocket();