mirror of
https://github.com/vale981/bspwm
synced 2025-03-05 18:01:37 -05:00
Set the WM_NAME property of each monitor's root
For example, `xdo id -N Bspwm -n root -a LVDS1` now returns the ID of the root window of the monitor named LVDS1.
This commit is contained in:
parent
0b56bdefa3
commit
fc02698f46
5 changed files with 15 additions and 13 deletions
4
bspwm.c
4
bspwm.c
|
@ -296,7 +296,7 @@ void setup(void)
|
|||
for (int i = 0; i < n; i++) {
|
||||
xcb_xinerama_screen_info_t info = xsi[i];
|
||||
xcb_rectangle_t rect = (xcb_rectangle_t) {info.x_org, info.y_org, info.width, info.height};
|
||||
monitor_t *m = make_monitor(&rect, XCB_NONE);
|
||||
monitor_t *m = make_monitor(NULL, &rect, XCB_NONE);
|
||||
add_monitor(m);
|
||||
add_desktop(m, make_desktop(NULL, XCB_NONE));
|
||||
}
|
||||
|
@ -304,7 +304,7 @@ void setup(void)
|
|||
} else {
|
||||
warn("Xinerama is inactive.\n");
|
||||
xcb_rectangle_t rect = (xcb_rectangle_t) {0, 0, screen_width, screen_height};
|
||||
monitor_t *m = make_monitor(&rect, XCB_NONE);
|
||||
monitor_t *m = make_monitor(NULL, &rect, XCB_NONE);
|
||||
add_monitor(m);
|
||||
add_desktop(m, make_desktop(NULL, XCB_NONE));
|
||||
}
|
||||
|
|
|
@ -1155,8 +1155,7 @@ void cmd_wm(char **args, int num, FILE *rsp)
|
|||
num--, args++;
|
||||
xcb_rectangle_t r;
|
||||
if (parse_rectangle(*args, &r)) {
|
||||
monitor_t *m = make_monitor(&r, XCB_NONE);
|
||||
snprintf(m->name, sizeof(m->name), "%s", name);
|
||||
monitor_t *m = make_monitor(name, &r, XCB_NONE);
|
||||
add_monitor(m);
|
||||
add_desktop(m, make_desktop(NULL, XCB_NONE));
|
||||
} else {
|
||||
|
|
17
monitor.c
17
monitor.c
|
@ -23,6 +23,7 @@
|
|||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
|
@ -37,14 +38,14 @@
|
|||
#include "window.h"
|
||||
#include "monitor.h"
|
||||
|
||||
monitor_t *make_monitor(xcb_rectangle_t *rect, uint32_t id)
|
||||
monitor_t *make_monitor(const char *name, xcb_rectangle_t *rect, uint32_t id)
|
||||
{
|
||||
monitor_t *m = malloc(sizeof(monitor_t));
|
||||
if (id == XCB_NONE) {
|
||||
m->id = xcb_generate_id(dpy);
|
||||
}
|
||||
m->randr_id = XCB_NONE;
|
||||
snprintf(m->name, sizeof(m->name), "%s", DEFAULT_MON_NAME);
|
||||
snprintf(m->name, sizeof(m->name), "%s", name == NULL ? DEFAULT_MON_NAME : name);
|
||||
m->padding = padding;
|
||||
m->border_width = border_width;
|
||||
m->window_gap = window_gap;
|
||||
|
@ -72,6 +73,7 @@ void update_root(monitor_t *m, xcb_rectangle_t *rect)
|
|||
rect->x, rect->y, rect->width, rect->height, 0,
|
||||
XCB_WINDOW_CLASS_INPUT_ONLY, XCB_COPY_FROM_PARENT, XCB_CW_EVENT_MASK, values);
|
||||
xcb_icccm_set_wm_class(dpy, m->root, sizeof(ROOT_WINDOW_IC), ROOT_WINDOW_IC);
|
||||
xcb_icccm_set_wm_name(dpy, m->root, XCB_ATOM_STRING, 8, strlen(m->name), m->name);
|
||||
window_lower(m->root);
|
||||
if (focus_follows_pointer) {
|
||||
window_show(m->root);
|
||||
|
@ -97,6 +99,7 @@ void rename_monitor(monitor_t *m, const char *name)
|
|||
put_status(SBSC_MASK_MONITOR_RENAME, "monitor_rename 0x%08X %s %s\n", m->id, m->name, name);
|
||||
|
||||
snprintf(m->name, sizeof(m->name), "%s", name);
|
||||
xcb_icccm_set_wm_name(dpy, m->root, XCB_ATOM_STRING, 8, strlen(m->name), m->name);
|
||||
|
||||
put_status(SBSC_MASK_REPORT);
|
||||
}
|
||||
|
@ -449,11 +452,11 @@ bool update_monitors(void)
|
|||
update_root(mm, &rect);
|
||||
mm->wired = true;
|
||||
} else {
|
||||
mm = make_monitor(&rect, XCB_NONE);
|
||||
char *name = (char *)xcb_randr_get_output_info_name(info);
|
||||
int len = xcb_randr_get_output_info_name_length(info);
|
||||
size_t name_size = MIN(sizeof(mm->name), (size_t) len + 1);
|
||||
snprintf(mm->name, name_size, "%s", name);
|
||||
char *name = (char *) xcb_randr_get_output_info_name(info);
|
||||
size_t len = (size_t) xcb_randr_get_output_info_name_length(info);
|
||||
char *name_copy = copy_string(name, len);
|
||||
mm = make_monitor(name_copy, &rect, XCB_NONE);
|
||||
free(name_copy);
|
||||
mm->randr_id = outputs[i];
|
||||
add_monitor(mm);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
#define DEFAULT_MON_NAME "MONITOR"
|
||||
|
||||
monitor_t *make_monitor(xcb_rectangle_t *rect, uint32_t id);
|
||||
monitor_t *make_monitor(const char *name, xcb_rectangle_t *rect, uint32_t id);
|
||||
void update_root(monitor_t *m, xcb_rectangle_t *rect);
|
||||
void rename_monitor(monitor_t *m, const char *name);
|
||||
monitor_t *find_monitor(uint32_t id);
|
||||
|
|
|
@ -223,7 +223,7 @@ monitor_t *restore_monitor(jsmntok_t **t, char *json)
|
|||
{
|
||||
int num = (*t)->size;
|
||||
(*t)++;
|
||||
monitor_t *m = make_monitor(NULL, UINT32_MAX);
|
||||
monitor_t *m = make_monitor(NULL, NULL, UINT32_MAX);
|
||||
uint32_t focused_desktop_id = 0;
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
|
|
Loading…
Add table
Reference in a new issue