From ac4cfc1ed3e07e04c3d6d3bdf31646a41ce454bd Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Sun, 8 Mar 2026 04:07:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20focus=5Fnext=5Fmon?= =?UTF-8?q?itor=20=E6=93=8D=E4=BD=9C=E7=94=A8=E4=BA=8E=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=BD=93=E5=89=8D=20monitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/action.c | 10 ++++++++++ src/action.h | 1 + src/default_config.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/action.c b/src/action.c index 3eedeed..6c504a1 100644 --- a/src/action.c +++ b/src/action.c @@ -43,6 +43,16 @@ void send_client_to_next_monitor(const user_action_arg_t *arg) { client_send_to_monitor(wm.client_focused, next_monitor); } +void focus_next_monitor(const user_action_arg_t *arg) { + monitor_t *next_monitor = wm_get_next_monitor(wm.current_monitor); + if (next_monitor == wm.current_monitor) return; + + wm_set_current_monitor(next_monitor, true); + if (wm.current_monitor->selected_tag->task_list) { + monitor_deal_focus(wm.current_monitor); + } +} + void spawn(const user_action_arg_t *arg) { const char *cmd = (const char *)arg->ptr; if (cmd == nullptr || strlen(cmd) == 0) return; diff --git a/src/action.h b/src/action.h index 9dbaefe..7003ca7 100644 --- a/src/action.h +++ b/src/action.h @@ -53,6 +53,7 @@ void focus_client_in_same_tag(const user_action_arg_t *arg); void select_tag_of_current_monitor(const user_action_arg_t *arg); void send_client_to_tag(const user_action_arg_t *arg); void send_client_to_next_monitor(const user_action_arg_t *arg); +void focus_next_monitor(const user_action_arg_t *arg); void spawn(const user_action_arg_t *arg); void quit(const user_action_arg_t *arg); void raise_or_run(const user_action_arg_t *arg); diff --git a/src/default_config.h b/src/default_config.h index 644a3c6..2ca04de 100644 --- a/src/default_config.h +++ b/src/default_config.h @@ -103,6 +103,7 @@ static const keyboard_t key_list[] = { {modifier_super, XK_o, send_client_to_next_monitor, {0}}, + {modifier_super | modifier_control, XK_j, focus_next_monitor, {0}}, {modifier_super | modifier_control, XK_space, toggle_client_floating, {0}}, {modifier_super, XK_f, toggle_client_fullscreen, {0}}, {modifier_super, XK_m, toggle_client_maximize, {0}},