Skip to content

Commit fef4c28

Browse files
committed
(#17) Updated getWindows implementation on Linux
1 parent dc910e1 commit fef4c28

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/linux/window_manager.cc

+15-5
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,23 @@ int32_t disconnectFromX(Display* connection) {
1717

1818
std::vector<WindowHandle> getWindows() {
1919
Display* xServer = connectToX();
20-
Window window;
21-
int32_t revertToWindow;
22-
if (XGetInputFocus(xServer, &window, &revertToWindow)) {
20+
std::vector<WindowHandle> windowHandles;
21+
if (xServer != nullptr) {
22+
Window defaultRootWindow = DefaultRootWindow(xServer);
23+
Window rootWindow;
24+
Window parentWindow;
25+
Window* windowList;
26+
uint32_t windowCount;
27+
28+
Status queryTreeResult = XQueryTree(xServer, defaultRootWindow, &rootWindow, &parentWindow, &windowList, &windowCount);
29+
if (queryTreeResult > 0) {
30+
for (size_t idx = 0; idx < windowCount; ++idx) {
31+
windowHandles.push_back(windowList[idx]);
32+
}
33+
}
2334
disconnectFromX(xServer);
24-
return std::vector<WindowHandle>{static_cast<WindowHandle>(window)};
2535
}
26-
return std::vector<WindowHandle>();
36+
return windowHandles;
2737
}
2838

2939
std::string getWindowTitle(const WindowHandle windowHandle) {

0 commit comments

Comments
 (0)