Windows teleport between screens and workspaces randomly
Welcome
- Yes, I'm using the latest major release or the current development version. These are the only supported versions.
- Yes, I've searched similar issues and discussions on GitHub and didn't find any.
Current Behavior
Maybe linked to #6410 but I'm not sure it's the same behavior.
Description of the problem:
I am experiencing a severe issue in a multi-monitor setup since a few months where simply moving the mouse across outputs causes an entire window container from an inactive workspace to be erroneously teleported to the currently focused workspace.
Environment Setup (3 Monitors):
Output 1: Workspace 2 (Active) and Workspace 6 (Inactive). Workspace 6 contains a few apps in a horizontal split container.
Output 2: Workspace 10 (Active).
Output 3: Workspace 1 (Inactive) and Workspace 4 (Active).
Steps to Reproduce:
Keep Workspaces 2, 10, and 4 active and visible on their respective outputs.
Move the mouse pointer from Output 1 (Workspace 2) to Output 3 (Workspace 4).
During this movement, the mouse cursor naturally passes over the i3bar (status bar). Note: No clicking or scrolling is performed, just a simple hover/crossing.
Actual Behavior: Sometimes when the mouse reaches Output 3 (Workspace 4) after crossing the i3bar, all or some applications from the inactive Workspace 6 (located on Output 1) are instantly teleported to Workspace 4. This is hard to reproduce every time. I have better chances to reproduce this when my mouse crosses the i3bar.
If I move the mouse back from Workspace 4 to Workspace 2, that exact same container gets teleported again, this time landing on Workspace 2. The container keeps bouncing back and forth between outputs just by moving the mouse.
Please note that the windows that get teleported unexpectedly are always the same when the bug starts to happen. I see this bug happen even more often on floating windows. I tried to reproduce the bug in video
https://github.com/user-attachments/assets/3da1415e-a146-4a96-b4ad-d0a4267ba080
In this video you can see I'm moving my mouse over the i3bar so the bug has more chance to happen. Multiple times, without any click, the floating window from my screen recorder app gets teleported from the output above to where my mouse stands. At the very end of the video, you can see that the workspace gets suddenly empty, that's because the whole container with my tabbed terminal and google chrome got teleported to the above monitor without any reason when I was dragging back my floating app to the other monitor workspace.
Expected Behavior
Moving the mouse across monitors and hovering over the i3bar should only change the output focus. It should never issue a move container to workspace command, especially not by grabbing a hidden container from an inactive workspace.
Reproduction Instructions
Hard to have a perfectly reproductible setup. Please refer to the description of the problem section
i3 version
Binary i3 version: 4.25.1 © 2009 Michael Stapelberg and contributors
Running i3 version: 4.25.1 (pid 6044)
Loaded i3 config:
/home/.../.config/i3/config (main) (last modified: ven. 27 mars 2026 13:09:25, 2022 seconds ago)
The i3 binary you just called: /usr/bin/i3
The i3 binary you are running: i3Config file
set $mod Mod4
# Custom user configs
bindsym $mod+b exec google-chrome-stable
bindsym $mod+n exec nautilus
bindsym $mod+c exec cursor
bindsym $mod+l exec i3lock-fancy-rapid 6 3 # fn+F9
# Special keyboard keys
bindsym Print exec flameshot gui
bindsym XF86Calculator exec gnome-calculator
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
## Keyboard backlight control
# Path to backlight script
set $backlight_path ~/.plugins/i3-kb-backlight
# Amount to increase/decrease brightness
bindsym XF86MonBrightnessUp exec light -A 5
bindsym XF86MonBrightnessDown exec light -U 5
bindsym Shift+XF86MonBrightnessUp exec light -A 1
bindsym Shift+XF86MonBrightnessDown exec light -U 0.2
# Custom Zenbook fn + F10-F12 -> media
bindsym XF86Tools exec playerctl play-pause # F12
bindsym $mod+Shift+S exec playerctl next # F11#
bindsym XF86WebCam exec playerctl previous # F10
# Custom thinkpad F10-F12 -> media
bindsym XF86Favorites exec playerctl next # F12
bindsym Cancel exec playerctl previous # F11#
bindsym XF86Go exec playerctl play-pause # F10
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace, PowerlineSymbols 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
set $accent-bg #6272A4
set $accent-txt #FFFFFF
set $indicator #109648
set $unfocused-bg #283339
set $unfocused-txt #F9FAF9
set $inactive-bg #626868
set $inactive-txt #F9FAF9
# class border backgr. text indic. child_border
client.focused $accent-bg $accent-bg $accent-txt $indicator $accent-bg
client.focused_inactive $inactive-bg $inactive-bg $inactive-txt $indicator $inactive-bg
client.unfocused $unfocused-bg $unfocused-bg $unfocused-txt $indicator $unfocused-bg
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesn’t scale on retina/hidpi displays.
# Use Alt-Tab to go back to last workspace
bindsym Mod1+Tab exec i3-msg "[con_id=$(cat /tmp/last_focus)] focus"
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# Always float windows
for_window [class="gnome-calculator"] floating enable
for_window [class="Yubico Authenticator"] floating enable
# start a terminal
bindsym $mod+Return exec gnome-terminal
# kill focused window
bindsym $mod+Shift+A kill
# start dmenu (a program launcher)
bindsym $mod+d exec rofi -show run
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
#bindsym $mod+j focus left
#bindsym $mod+k focus down
#bindsym $mod+l focus up
#bindsym $mod+m focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+M move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# move current workspace between monitors
bindsym $mod+Control+h move workspace to output left
bindsym $mod+Control+j move workspace to output down
bindsym $mod+Control+k move workspace to output up
bindsym $mod+Control+l move workspace to output right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+z layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+q focus parent
# focus the child container
#bindsym $mod+d focus child
# switch to workspace
bindsym $mod+ampersand workspace 1
bindsym $mod+eacute workspace 2
bindsym $mod+quotedbl workspace 3
bindsym $mod+apostrophe workspace 4
bindsym $mod+parenleft workspace 5
bindsym $mod+minus workspace 6
bindsym $mod+egrave workspace 7
bindsym $mod+underscore workspace 8
bindsym $mod+ccedilla workspace 9
bindsym $mod+agrave workspace 10
bindsym $mod+Control+Left workspace prev
bindsym $mod+Control+Right workspace next
workspace 10 output HDMI-1
workspace 2 output DP-3
# rename current workspace
bindsym $mod+Control+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+eacute move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+egrave move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+ccedilla move container to workspace 9
bindsym $mod+Shift+agrave move container to workspace 10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the window’s width.
# Pressing right will grow the window’s width.
# Pressing up will shrink the window’s height.
# Pressing down will grow the window’s height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym m resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
font pango: monospace, FontAwesome 7
position top
tray_output primary
status_command pipx run --system-site-packages bumblebee-status -t dracula-powerline -m xrandr sensors\
cpu memory nic network_traffic pasink brightness indicator battery date\
time -p datetime.locale='fr_FR.UTF-8' time.locale='fr_FR.UTF-8' brightness.interval=1s battery.showpowerconsumption=true battery.interval=10s \
nic.exclude='wwp.*,lo,virbr,docker,vboxnet,veth,br,.*:avahi,vmnet.*'
colors {
# borde backgr. text
focused_workspace #6272A4 #6272A4 #FFFFFF
inactive_workspace #283339 #283339 #EEE8D5
urgent_workspace #E5201D #E5201D #FFFFFF
}
}
hide_edge_borders smart
exec --no-startup-id nm-applet --sm-disable
exec --no-startup-id guake
exec --no-startup-id setxkbmap -layout fr
exec --no-startup-id numlockx on
exec --no-startup-id blueman-applet
#exec --no-startup-id picom
exec --no-startup-id kgpg
exec --no-startup-id feh --bg-fill ~/Images/background.jpg --randomize
exec --no-startup-id libinput-gestures-setup autostart start
#exec --no-startup-id xinput --set-prop "ELAN0684:00 04F3:320C Touchpad" "libinput Accel Speed" 0.5
#exec --no-startup-id xinput --set-prop "GDX1515:00 27C6:01F4 Touchpad" "libinput Accel Speed" 0.5
#exec --no-startup-id xrandr --output HDMI-1 --offLinux distribution & Version
Archlinux 6.18.16-1-lts
Are you using a compositor?
picom
Logfile
Source: i3/i3