Fix X11 focus stealing from WM_TAKE_FOCUS apps (OnlyOffice)
This commit is contained in:
34
i3.org
34
i3.org
@@ -72,6 +72,7 @@ workspace_layout default
|
|||||||
* Focus Configuration
|
* Focus Configuration
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
|
focus_on_window_activation none
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Settings for i3-gaps
|
* Settings for i3-gaps
|
||||||
@@ -210,10 +211,10 @@ bindsym $mod+y sticky toggle
|
|||||||
** focus/swap
|
** focus/swap
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
# Focus/swap the node in the given direction
|
# Focus/swap the node in the given direction
|
||||||
bindsym $mod+h focus left
|
bindsym $mod+h exec --no-startup-id i3-msg focus left && i3-focus-sync
|
||||||
bindsym $mod+j focus down
|
bindsym $mod+j exec --no-startup-id i3-msg focus down && i3-focus-sync
|
||||||
bindsym $mod+k focus up
|
bindsym $mod+k exec --no-startup-id i3-msg focus up && i3-focus-sync
|
||||||
bindsym $mod+l focus right
|
bindsym $mod+l exec --no-startup-id i3-msg focus right && i3-focus-sync
|
||||||
|
|
||||||
bindsym $mod+Shift+h move left
|
bindsym $mod+Shift+h move left
|
||||||
bindsym $mod+Shift+j move down
|
bindsym $mod+Shift+j move down
|
||||||
@@ -227,7 +228,7 @@ bindsym $mod+p workspace prev
|
|||||||
bindsym $mod+n workspace next
|
bindsym $mod+n workspace next
|
||||||
|
|
||||||
# Focus the last Desktop
|
# Focus the last Desktop
|
||||||
bindsym $mod+b workspace back_and_forth
|
bindsym $mod+b exec --no-startup-id i3-msg workspace back_and_forth && i3-focus-sync
|
||||||
|
|
||||||
# Focus to the given desktop
|
# Focus to the given desktop
|
||||||
bindsym $mod+1 workspace 1
|
bindsym $mod+1 workspace 1
|
||||||
@@ -286,6 +287,29 @@ bindsym $mod+$alt+k resize shrink height 10 px or 10 ppt
|
|||||||
bindsym $mod+$alt+l resize grow width 10 px or 10 ppt
|
bindsym $mod+$alt+l resize grow width 10 px or 10 ppt
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Fix focus for =WM_TAKE_FOCUS= applications
|
||||||
|
Some applications (e.g. OnlyOffice, Electron apps) use the =WM_TAKE_FOCUS= protocol and
|
||||||
|
fail to release X11 keyboard focus when i3 moves focus elsewhere.
|
||||||
|
This keybinding forces X11 focus to the window i3 currently considers focused.
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/i3-focus-sync :comments none :mkdirp yes :shebang "#!/usr/bin/env bash" :tangle-mode (identity #o755)
|
||||||
|
win=$(i3-msg -t get_tree | python3 -c "
|
||||||
|
import json, sys
|
||||||
|
def find_focused(node):
|
||||||
|
if node.get('focused') and node.get('window'):
|
||||||
|
return node['window']
|
||||||
|
for child in node.get('nodes', []) + node.get('floating_nodes', []):
|
||||||
|
r = find_focused(child)
|
||||||
|
if r is not None:
|
||||||
|
return r
|
||||||
|
return None
|
||||||
|
w = find_focused(json.load(sys.stdin))
|
||||||
|
if w is not None: print(w)
|
||||||
|
" 2>/dev/null)
|
||||||
|
[ -n "$win" ] && xdotool windowfocus --sync "$win" 2>/dev/null
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
* Run Polybar and SXHKD
|
* Run Polybar and SXHKD
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
# exec --no-startup-id sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.i3
|
# exec --no-startup-id sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.i3
|
||||||
|
|||||||
Reference in New Issue
Block a user