Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

switching keyboard layout always switch focus to main display #1997

Closed
mjgritli opened this issue Nov 29, 2023 · 4 comments
Closed

switching keyboard layout always switch focus to main display #1997

mjgritli opened this issue Nov 29, 2023 · 4 comments
Labels
bug Something isn't working

Comments

@mjgritli
Copy link

Dear developer

I'm having a major issue that is irritating my workflow.
I speak 2 languages so I have 2 keyboard layouts, the issue is; if I'm focused on the 2nd monitor which has a separate space, whenever I switch keyboards (while the cursor is focused on the input box) layouts using a shortcut or mouse, yabai will always switch focus on whatever is on display 1

thanks

@HATTER-LONG
Copy link

like #1910 😭,it has been happened long time, but I have no idea how to debug it.

@koekeishiya
Copy link
Owner

koekeishiya commented Jan 3, 2024

I am unable to reproduce this issue on the lastet master. This terminal is on screen 2, while other applications are visible on screen 1. Changing input source using keyboard shortcuts and the menubar:

input_source

@HATTER-LONG
Copy link

HATTER-LONG commented Jan 3, 2024

HI, thank you for taking the time to check this issue.

I have been trying to debug this issue recently, I found some special config will cause it to happen.

This log is using the latest master, after I change fouse 哔哩哔哩 (display 1) to Obsidian (display 2) just switch input source many times, will automatedly switch back to 哔哩哔哩 (display 1):

EVENT_HANDLER_APPLICATION_FRONT_SWITCHED: 哔哩哔哩 (4272)
event_signal_flush: transmitting window_focused to 1 subscriber(s)
EVENT_HANDLER_DISPLAY_CHANGED: 5 6
space_manager_refresh_application_windows: Microsoft Edge has windows that are not yet resolved
EVENT_HANDLER_DAEMON_MESSAGE: query --windows --window
EVENT_HANDLER_MOUSE_DOWN: 210 828.29, 1551.27
EVENT_HANDLER_APPLICATION_FRONT_SWITCHED: Obsidian (2102) 
EVENT_HANDLER_DISPLAY_CHANGED: 1 9
space_manager_refresh_application_windows: Microsoft Edge has windows that are not yet resolved
event_signal_flush: transmitting window_focused to 1 subscriber(s)
EVENT_HANDLER_MOUSE_UP: 828.29, 1551.27
EVENT_HANDLER_DAEMON_MESSAGE: query --windows --window
EVENT_HANDLER_MOUSE_DOWN: 210 781.20, 1636.79
EVENT_HANDLER_MOUSE_UP: 781.20, 1636.79
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 3
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 3 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 3
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 3 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 3
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 3 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 3
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 3 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 3
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_WINDOW_MOVED: Obsidian 221
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_APPLICATION_FRONT_SWITCHED: 哔哩哔哩 (4272)
EVENT_HANDLER_DISPLAY_CHANGED: 5 6
space_manager_refresh_application_windows: Microsoft Edge has windows that are not yet resolved

config :

sudo yabai --load-sa
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"

yabai -m space 1 --label 1_work
yabai -m space 2 --label 2_webs
yabai -m space 3 --label 3_email
yabai -m space 4 --label 4_media
yabai -m space 5 --label 5_temp
yabai -m space 6 --label 6_other
yabai -m config --space 4_media layout float
yabai -m config --space 6_other layout float

yabai -m space 1_work --display 1
yabai -m space 2_webs --display 1
yabai -m space 3_email --display 1
yabai -m space 4_media --display 1
yabai -m space 5_temp --display 2
yabai -m space 6_other --display 2

#======= Rules =======================
# yabai -m signal --add event=window_minimized active=yes action="if \$(yabai -m query --windows --window \$YABAI_WINDOW_ID | jq -r '.\"is-floating\"'); then yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null; fi"
yabai -m rule --add app="^(UU 加速器|网易云音乐|音乐|哔哩哔哩|Mac Mouse Fix|Mos|Calculator|System Preferences|Archive Utility|Hammerspoon|Stream|uTools|关于本机|提醒事项|系统设置|Raycast|Finder|访达|Kaleidoscope)$" manage=off opacity=1.00
yabai -m rule --add app="^(Code|Obsidian|iTerm2|kitty|Alacritty)$" space=1_work
yabai -m rule --add app="^(Microsoft Edge|Safari浏览器)$" space=2_webs
# yabai -m signal --add event=window_destroyed active=yes action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null"
yabai -m rule --add app="^(Mail.app)$" space=3_email
yabai -m rule --add app="^(哔哩哔哩)$" space=4_media manage=off opacity=1.00
yabai -m rule --add app="^(UU 加速器|网易云音乐|音乐)$" space=6_other manage=off #opacity=1.00

yabai -m signal --add event=application_deactivated app="^(Obsidian|iTerm2|kitty)$" action="macism com.apple.keylayout.ABC"
yabai -m signal --add event=window_focused action="sketchybar --trigger window_focus"


#======= config ======================
# global settings

yabai -m config \
	external_bar all:50:0 \
	window_placement second_child \
	mouse_follows_focus on \
	window_topmost on \
	window_shadow on \
	window_opacity on \
	window_animation_duration 0.22 \
	window_opacity_duration 0.22 \
	active_window_opacity 1.0 \
	normal_window_opacity 0.95 \
	split_ratio 0.50 \
	split_type auto \
	auto_balance off \
	top_padding 0 \
	left_padding 8 \
	right_padding 8 \
	bottom_padding 8 \
	window_gap 8 \
	layout bsp \
	mouse_modifier fn \
	mouse_action1 move \
	mouse_action2 resize \
	mouse_drop_action swap

borders active_color="gradient(top_left=0xd4e5efDD,bottom_right=0xc35c6aDD)" width=7.0 &
echo "yabai configuration loaded.."

When I delete parts some config, it not happens:

EVENT_HANDLER_APPLICATION_FRONT_SWITCHED: 哔哩哔哩 (4272)                                                                                                                                                                           
event_signal_flush: transmitting window_focused to 1 subscriber(s)
EVENT_HANDLER_DAEMON_MESSAGE: query --windows --window
EVENT_HANDLER_MOUSE_DOWN: 210 1098.59, 1493.43
EVENT_HANDLER_APPLICATION_FRONT_SWITCHED: Obsidian (2102) 
EVENT_HANDLER_DISPLAY_CHANGED: 1 9
space_manager_refresh_application_windows: Microsoft Edge has windows that are not yet resolved
event_signal_flush: transmitting window_focused to 1 subscriber(s)
EVENT_HANDLER_MOUSE_UP: 1098.59, 1493.43
EVENT_HANDLER_DAEMON_MESSAGE: query --windows --window
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9
EVENT_HANDLER_WINDOW_DESTROYED: Obsidian 221
window_manager_create_and_add_window:221 Obsidian - 
EVENT_HANDLER_SLS_SPACE_REMOVE_WINDOW: 221 removed from 9 
EVENT_HANDLER_SLS_SPACE_ADD_WINDOW: 221 added to 9

config like this:

sudo yabai --load-sa
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"

yabai -m space 1 --label 1_work
yabai -m space 2 --label 2_webs
yabai -m space 3 --label 3_email
yabai -m space 4 --label 4_media
yabai -m space 5 --label 5_temp
yabai -m space 6 --label 6_other
# yabai -m config --space 4_media layout float
# yabai -m config --space 6_other layout float

yabai -m space 1_work --display 1
yabai -m space 2_webs --display 1
yabai -m space 3_email --display 1
yabai -m space 4_media --display 1
yabai -m space 5_temp --display 2
yabai -m space 6_other --display 2

#======= Rules =======================
# yabai -m signal --add event=window_minimized active=yes action="if \$(yabai -m query --windows --window \$YABAI_WINDOW_ID | jq -r '.\"is-floating\"'); then yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null; fi"
yabai -m rule --add app="^(UU 加速器|网易云音乐|音乐|哔哩哔哩|Mac Mouse Fix|Mos|Calculator|System Preferences|Archive Utility|Hammerspoon|Stream|uTools|关于本机|提醒事项|系统设置|Raycast|Finder|访达|Kaleidoscope)$" manage=off opacity=1.00

yabai -m signal --add event=window_focused action="sketchybar --trigger window_focus"


yabai -m config \
	external_bar all:50:0 \
	window_placement second_child \
	mouse_follows_focus on \
	window_topmost on \
	window_shadow on \
	window_opacity on \
	window_animation_duration 0.22 \
	window_opacity_duration 0.22 \
	active_window_opacity 1.0 \
	normal_window_opacity 0.95 \
	split_ratio 0.50 \
	split_type auto \
	auto_balance off \
	top_padding 0 \
	left_padding 8 \
	right_padding 8 \
	bottom_padding 8 \
	window_gap 8 \
	layout bsp \
	mouse_modifier fn \
	mouse_action1 move \
	mouse_action2 resize \
	mouse_drop_action swap


borders active_color="gradient(top_left=0xd4e5efDD,bottom_right=0xc35c6aDD)" width=7.0 &

echo "yabai configuration loaded.."

I tried to exclusion which config cause it, but it no pattern😢.

@koekeishiya
Copy link
Owner

I managed to reproduce the issue and have adjusted some logic on master just now that I think should resolve this.

@koekeishiya koekeishiya added bug Something isn't working addressed on master; not released Fixed upstream, but not yet released labels Jan 3, 2024
koekeishiya added a commit that referenced this issue Jan 3, 2024
@koekeishiya koekeishiya removed the addressed on master; not released Fixed upstream, but not yet released label Jan 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants