commit 9780cda

wf  ·  2026-05-08 11:18:17 +0000 UTC
parent b9184d2
Add get_cursor_position command
4 files changed,  +22, -0
+1, -0
1@@ -26,6 +26,7 @@ enum cmd {
2 	cmd_get_app_id,
3 	cmd_get_focus,
4 	cmd_get_workspace,
5+	cmd_get_cursor_position,
6 	cmd_bind,
7 	cmd_modkey,
8 	cmd_inner_focus_color,
+1, -0
1@@ -41,6 +41,7 @@ static const struct command commands[] = {
2 	{ "get_workspace",       cmd_get_workspace,       0, false },
3 	{ "list_windows",        cmd_list_windows,        0, false },
4 	{ "get_screen_geometry", cmd_get_screen_geometry, 0, false },
5+	{ "get_cursor_position", cmd_get_cursor_position, 0, false },
6 	{ "bind",                cmd_bind,                2, false },
7 	{ "modkey",              cmd_modkey,              1, true  },
8 	{ "inner_focus_color",   cmd_inner_focus_color,   1, true  },
+2, -0
 1@@ -48,6 +48,7 @@ extern status ipc_get_focus(char **);
 2 extern status ipc_get_workspace(char **);
 3 extern status ipc_list_windows(char **);
 4 extern status ipc_get_screen_geometry(char **);
 5+extern status ipc_get_cursor_position(char **);
 6 extern status ipc_bind(char **);
 7 extern status ipc_quit(char **);
 8 extern status ipc_config(char **);
 9@@ -98,6 +99,7 @@ static const cmd_handler_t cmd_handler [cmd_last] = {
10 	[cmd_get_workspace]       = ipc_get_workspace,
11 	[cmd_list_windows]        = ipc_list_windows,
12 	[cmd_get_screen_geometry] = ipc_get_screen_geometry,
13+	[cmd_get_cursor_position] = ipc_get_cursor_position,
14 	[cmd_bind]                = ipc_bind,
15 	[cmd_quit]                = ipc_quit,
16 	[cmd_config]              = ipc_config
+18, -0
 1@@ -251,6 +251,8 @@ status
 2 ipc_lower(char **arg) {
 3 	ARG_CLIENT(arg[1]);
 4 
 5+	wl_list_remove(&c->link);
 6+	wl_list_insert(wm.clients.prev, &c->link);
 7 	swc_window_stack(c->win, 99);
 8 
 9 	return (status){ true, "" };
10@@ -260,6 +262,8 @@ status
11 ipc_raise(char **arg) {
12 	ARG_CLIENT(arg[1]);
13 
14+	wl_list_remove(&c->link);
15+	wl_list_insert(&wm.clients, &c->link);
16 	swc_window_stack(c->win, -99);
17 
18 	return (status){ true, "" };
19@@ -424,6 +428,20 @@ ipc_get_screen_geometry(char **arg) {
20 	return s;
21 }
22 
23+status
24+ipc_get_cursor_position(char **arg) {
25+	UNUSED(arg);
26+
27+	status s = {0};
28+
29+	int32_t cx = 0, cy = 0;
30+	if (swc_cursor_position(&cx, &cy))
31+		snprintf(s.msg, MAXSIZE * sizeof(char), "%d %d\n", cx / 256, cy / 256);
32+
33+	s.ok = true;
34+	return s;
35+}
36+
37 /*********/
38 
39 status