-
Notifications
You must be signed in to change notification settings - Fork 20
Description
Now there is an option -screens that translates into variable screen_mask and is used like this:
unsigned long screen_mask = ~0;
for (/* global */ screen = 0; screen < ScreenCount(display); screen++) {
if ((screen_mask & (1 << screen)) == 0)
continue;
So if I would like to operate on a single screen say 0, I would have to pass -screens 1, for 1 it would be -screens 2, for 2 it would be -screens 4 etc.
Moreover (and this is my use case), it's impossible to operate on default (preferred in XCB lingo) screen, i.e., if DISPLAY=:1.1 I would like hsetroot just to manipulate root window of X screen 1.
I have hardcoded following quick & dirty solution to do so:
diff --git a/hsetroot.c b/hsetroot.c
index 79e5c7b..4c23393 100644
--- a/hsetroot.c
+++ b/hsetroot.c
@@ -284,9 +284,15 @@ main(int argc, char **argv)
outputs = XineramaQueryScreens(display, &noutputs);
}
+ int screen_def = DefaultScreen(display);
+ printf("screen_def = %d\n", screen_def);
+
for (/* global */ screen = 0; screen < ScreenCount(display); screen++) {
- if ((screen_mask & (1 << screen)) == 0)
- continue;
+ //if ((screen_mask & (1 << screen)) == 0)
+ // continue;
+
+ if (screen != screen_def)
+ continue;
Imlib_Context *context = imlib_context_new();
imlib_context_push(context);
Because I feel like operating on multiple X screens might be useful for somebody I would suggest leaving -screens be and creating new option e.g., -screen <int>, which would take a preference before -screens and specify single X screen to work on, or -1 for the DefaultScreen(display).