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