Applications with unset window geometry are hard to move and cause gnome-shell to freeze
When launching any Qt application in gnome shell, it's stuck in the upper left corner until I press super+left to tile it. Afterwards it's behaving as expected, except that gnome-shell sometimes freezes when I move it to another screen.
I don't see any such issues on other compositors (kwin, weston).
I'm not aware of Qt doing anything wrong either. I see the zxdg_toplevel_v6.move request and everything... Here are the wayland logs when I try to move one such window:
[3311032.564] -> wl_display@1.get_registry(new id wl_registry@2)
[3311032.655] -> wl_display@1.sync(new id wl_callback@3)
[3311036.645] wl_display@1.delete_id(3)
[3311036.699] wl_registry@2.global(1, "wl_drm", 2)
[3311036.723] wl_registry@2.global(2, "wl_compositor", 4)
[3311036.739] -> wl_registry@2.bind(2, "wl_compositor", 3, new id [unknown]@4)
[3311036.760] wl_registry@2.global(3, "wl_shm", 1)
[3311036.771] -> wl_registry@2.bind(3, "wl_shm", 1, new id [unknown]@5)
[3311036.784] wl_registry@2.global(4, "wl_output", 2)
[3311036.797] -> wl_registry@2.bind(4, "wl_output", 2, new id [unknown]@6)
[3311036.816] -> wl_display@1.sync(new id wl_callback@7)
[3311036.823] wl_registry@2.global(5, "wl_output", 2)
[3311036.833] -> wl_registry@2.bind(5, "wl_output", 2, new id [unknown]@8)
[3311036.845] -> wl_display@1.sync(new id wl_callback@9)
[3311036.850] wl_registry@2.global(6, "wl_output", 2)
[3311036.860] -> wl_registry@2.bind(6, "wl_output", 2, new id [unknown]@10)
[3311036.872] -> wl_display@1.sync(new id wl_callback@11)
[3311036.878] wl_registry@2.global(7, "zxdg_output_manager_v1", 1)
[3311036.888] wl_registry@2.global(8, "wl_data_device_manager", 3)
[3311036.898] -> wl_registry@2.bind(8, "wl_data_device_manager", 1, new id [unknown]@12)
[3311036.912] wl_registry@2.global(9, "gtk_primary_selection_device_manager", 1)
[3311036.921] wl_registry@2.global(10, "wl_subcompositor", 1)
[3311036.931] -> wl_registry@2.bind(10, "wl_subcompositor", 1, new id [unknown]@13)
[3311036.944] wl_registry@2.global(11, "xdg_wm_base", 1)
[3311036.953] wl_registry@2.global(12, "zxdg_shell_v6", 1)
[3311036.962] wl_registry@2.global(13, "wl_shell", 1)
[3311036.972] wl_registry@2.global(14, "gtk_shell1", 2)
[3311036.981] wl_registry@2.global(15, "zwp_pointer_gestures_v1", 1)
[3311036.990] wl_registry@2.global(16, "zwp_tablet_manager_v2", 1)
[3311037.000] wl_registry@2.global(17, "wl_seat", 5)
[3311037.019] -> wl_registry@2.bind(17, "wl_seat", 4, new id [unknown]@14)
[3311037.034] -> wl_data_device_manager@12.get_data_device(new id wl_data_device@15, wl_seat@14)
[3311037.045] wl_registry@2.global(18, "zwp_relative_pointer_manager_v1", 1)
[3311037.056] wl_registry@2.global(19, "zwp_pointer_constraints_v1", 1)
[3311037.065] wl_registry@2.global(20, "zxdg_exporter_v1", 1)
[3311037.074] wl_registry@2.global(21, "zxdg_importer_v1", 1)
[3311037.084] wl_registry@2.global(22, "zwp_linux_dmabuf_v1", 3)
[3311037.093] wl_registry@2.global(23, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[3311037.103] wl_registry@2.global(24, "gtk_text_input_manager", 1)
[3311037.112] wl_callback@3.done(6164)
[3311037.307] wl_display@1.delete_id(7)
[3311037.325] wl_display@1.delete_id(9)
[3311037.330] wl_display@1.delete_id(11)
[3311037.334] wl_shm@5.format(0)
[3311037.342] wl_shm@5.format(1)
[3311037.347] wl_output@6.geometry(1920, 0, 620, 340, 0, "LEN", "Pro2840m", 0)
[3311037.373] wl_output@6.mode(3, 3840, 2160, 59997)
[3311037.385] wl_output@6.scale(2)
[3311037.389] wl_output@6.done()
[3311037.411] wl_callback@7.done(6164)
[3311037.417] wl_output@8.geometry(0, 0, 520, 320, 0, "DEL", "DELL U2412M", 0)
[3311037.437] wl_output@8.mode(3, 1920, 1200, 59950)
[3311037.447] wl_output@8.scale(1)
[3311037.452] wl_output@8.done()
[3311037.455] wl_callback@9.done(6164)
[3311037.460] wl_output@10.geometry(5760, 0, 520, 320, 0, "LEN", "LEN LT2452pwC", 0)
[3311037.479] wl_output@10.mode(3, 1920, 1200, 59950)
[3311037.490] wl_output@10.scale(1)
[3311037.494] wl_output@10.done()
[3311037.498] wl_callback@11.done(6164)
[3311037.502] wl_seat@14.capabilities(3)
[3311037.524] -> wl_seat@14.get_keyboard(new id wl_keyboard@11)
[3311037.532] -> wl_seat@14.get_pointer(new id wl_pointer@9)
[3311037.539] -> wl_compositor@4.create_surface(new id wl_surface@7)
[3311037.548] wl_seat@14.name("seat0")
[3311037.632] -> wl_shm@5.create_pool(new id wl_shm_pool@3, fd 5, 4096)
[3311037.899] -> wl_shm_pool@3.resize(12288)
[3311037.995] -> wl_shm_pool@3.resize(28672)
[3311039.524] -> wl_shm_pool@3.resize(61440)
[3311039.561] -> wl_shm_pool@3.resize(126976)
[3311039.603] -> wl_shm_pool@3.resize(258048)
[3311039.686] -> wl_shm_pool@3.resize(520192)
[3311041.170] -> wl_shm_pool@3.resize(1044480)
[3311045.469] -> wl_shm_pool@3.resize(2093056)
[3311061.061] -> wl_shm@5.create_pool(new id wl_shm_pool@16, fd 6, 4096)
[3311061.222] -> wl_shm_pool@16.resize(12288)
[3311061.291] -> wl_shm_pool@16.resize(28672)
[3311062.562] -> wl_shm_pool@16.resize(61440)
[3311062.589] -> wl_shm_pool@16.resize(126976)
[3311062.630] -> wl_shm_pool@16.resize(258048)
[3311062.706] -> wl_shm_pool@16.resize(520192)
[3311064.101] -> wl_shm_pool@16.resize(1044480)
[3311067.793] -> wl_shm_pool@16.resize(2093056)
[3311082.487] -> wl_shm@5.create_pool(new id wl_shm_pool@17, fd 7, 4096)
[3311082.612] -> wl_shm_pool@17.resize(12288)
[3311082.681] -> wl_shm_pool@17.resize(28672)
[3311084.098] -> wl_shm_pool@17.resize(61440)
[3311084.126] -> wl_shm_pool@17.resize(126976)
[3311084.167] -> wl_shm_pool@17.resize(258048)
[3311084.244] -> wl_shm_pool@17.resize(520192)
[3311085.805] -> wl_shm_pool@17.resize(1044480)
[3311089.928] -> wl_shm_pool@17.resize(2093056)
QSocketNotifier: Can only be used with threads started with QThread
Using Wayland-EGL
[3311112.900] -> wl_display@1.get_registry(new id wl_registry@18)
[3311112.917] -> wl_display@1.sync(new id wl_callback@19)
[3311113.063] wl_display@1.delete_id(19)
[3311113.072] wl_registry@18.global(1, "wl_drm", 2)
[3311113.081] -> wl_registry@18.bind(1, "wl_drm", 2, new id [unknown]@20)
[3311113.093] wl_registry@18.global(2, "wl_compositor", 4)
[3311113.102] wl_registry@18.global(3, "wl_shm", 1)
[3311113.110] wl_registry@18.global(4, "wl_output", 2)
[3311113.118] wl_registry@18.global(5, "wl_output", 2)
[3311113.126] wl_registry@18.global(6, "wl_output", 2)
[3311113.134] wl_registry@18.global(7, "zxdg_output_manager_v1", 1)
[3311113.143] wl_registry@18.global(8, "wl_data_device_manager", 3)
[3311113.151] wl_registry@18.global(9, "gtk_primary_selection_device_manager", 1)
[3311113.159] wl_registry@18.global(10, "wl_subcompositor", 1)
[3311113.167] wl_registry@18.global(11, "xdg_wm_base", 1)
[3311113.175] wl_registry@18.global(12, "zxdg_shell_v6", 1)
[3311113.183] wl_registry@18.global(13, "wl_shell", 1)
[3311113.192] wl_registry@18.global(14, "gtk_shell1", 2)
[3311113.200] wl_registry@18.global(15, "zwp_pointer_gestures_v1", 1)
[3311113.208] wl_registry@18.global(16, "zwp_tablet_manager_v2", 1)
[3311113.216] wl_registry@18.global(17, "wl_seat", 5)
[3311113.224] wl_registry@18.global(18, "zwp_relative_pointer_manager_v1", 1)
[3311113.232] wl_registry@18.global(19, "zwp_pointer_constraints_v1", 1)
[3311113.240] wl_registry@18.global(20, "zxdg_exporter_v1", 1)
[3311113.248] wl_registry@18.global(21, "zxdg_importer_v1", 1)
[3311113.257] wl_registry@18.global(22, "zwp_linux_dmabuf_v1", 3)
[3311113.265] -> wl_registry@18.bind(22, "zwp_linux_dmabuf_v1", 3, new id [unknown]@21)
[3311113.277] wl_registry@18.global(23, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[3311113.285] wl_registry@18.global(24, "gtk_text_input_manager", 1)
[3311113.293] wl_callback@19.done(6165)
[3311113.300] -> wl_display@1.sync(new id wl_callback@19)
[3311113.371] wl_display@1.delete_id(19)
[3311113.377] wl_drm@20.device("/dev/dri/card0")
[3311113.396] -> wl_drm@20.authenticate(13)
[3311113.401] wl_drm@20.format(808669761)
[3311113.405] wl_drm@20.format(808669784)
[3311113.409] wl_drm@20.format(875713089)
[3311113.413] wl_drm@20.format(875713112)
[3311113.417] wl_drm@20.format(909199186)
[3311113.421] wl_drm@20.format(961959257)
[3311113.425] wl_drm@20.format(825316697)
[3311113.429] wl_drm@20.format(842093913)
[3311113.433] wl_drm@20.format(909202777)
[3311113.437] wl_drm@20.format(875713881)
[3311113.441] wl_drm@20.format(842094158)
[3311113.445] wl_drm@20.format(909203022)
[3311113.449] wl_drm@20.format(1448695129)
[3311113.453] wl_drm@20.capabilities(1)
[3311113.458] zwp_linux_dmabuf_v1@21.format(875713089)
[3311113.462] zwp_linux_dmabuf_v1@21.modifier(875713089, 0, 0)
[3311113.470] zwp_linux_dmabuf_v1@21.modifier(875713089, 16777216, 1)
[3311113.479] zwp_linux_dmabuf_v1@21.modifier(875713089, 16777216, 2)
[3311113.494] zwp_linux_dmabuf_v1@21.format(875713112)
[3311113.498] zwp_linux_dmabuf_v1@21.modifier(875713112, 0, 0)
[3311113.506] zwp_linux_dmabuf_v1@21.modifier(875713112, 16777216, 1)
[3311113.515] zwp_linux_dmabuf_v1@21.modifier(875713112, 16777216, 2)
[3311113.523] zwp_linux_dmabuf_v1@21.format(808669761)
[3311113.527] zwp_linux_dmabuf_v1@21.modifier(808669761, 0, 0)
[3311113.535] zwp_linux_dmabuf_v1@21.modifier(808669761, 16777216, 1)
[3311113.543] zwp_linux_dmabuf_v1@21.modifier(808669761, 16777216, 2)
[3311113.551] zwp_linux_dmabuf_v1@21.format(909199186)
[3311113.555] zwp_linux_dmabuf_v1@21.modifier(909199186, 0, 0)
[3311113.563] zwp_linux_dmabuf_v1@21.modifier(909199186, 16777216, 1)
[3311113.571] zwp_linux_dmabuf_v1@21.modifier(909199186, 16777216, 2)
[3311113.580] wl_callback@19.done(6165)
[3311113.585] -> wl_display@1.sync(new id wl_callback@19)
[3311113.621] wl_display@1.delete_id(19)
[3311113.627] wl_drm@20.authenticated()
[3311113.630] wl_callback@19.done(6165)
[3311119.503] -> wl_compositor@4.create_surface(new id wl_surface@19)
[3311121.502] -> wl_surface@19.destroy()
[3311125.016] -> wl_compositor@4.create_surface(new id wl_surface@22)
[3311125.084] -> wl_registry@2.bind(12, "zxdg_shell_v6", 1, new id [unknown]@23)
Using the 'xdg-shell-v6' shell integration
[3311125.110] -> zxdg_shell_v6@23.get_xdg_surface(new id zxdg_surface_v6@24, wl_surface@22)
[3311125.125] -> zxdg_surface_v6@24.get_toplevel(new id zxdg_toplevel_v6@25)
[3311125.136] -> zxdg_toplevel_v6@25.set_title("qmlscene")
[3311125.150] -> zxdg_toplevel_v6@25.set_app_id("org.qt-project.qmlscene")
[3311125.156] -> wl_surface@22.set_buffer_scale(1)
[3311125.451] -> wl_surface@22.set_buffer_transform(0)
[3311125.461] -> wl_surface@22.commit()
[3311125.466] wl_keyboard@11.keymap(1, fd 7, 57227)
[3311131.415] wl_keyboard@11.repeat_info(33, 500)
[3311136.612] wl_display@1.delete_id(19)
[3311136.630] zxdg_toplevel_v6@25.configure(0, 0, array)
[3311136.645] zxdg_surface_v6@24.configure(6166)
[3311136.660] -> zxdg_surface_v6@24.ack_configure(6166)
[3311138.073] -> wl_compositor@4.create_surface(new id wl_surface@19)
[3311138.213] -> wl_surface@19.destroy()
[3311283.902] -> wl_surface@22.frame(new id wl_callback@26)
[3311283.929] -> zwp_linux_dmabuf_v1@21.create_params(new id zwp_linux_buffer_params_v1@27)
[3311283.943] -> zwp_linux_buffer_params_v1@27.add(fd 15, 0, 0, 512, 16777216, 2)
[3311283.960] -> zwp_linux_buffer_params_v1@27.create_immed(new id wl_buffer@28, 106, 133, 875713089, 0)
[3311283.975] -> zwp_linux_buffer_params_v1@27.destroy()
[3311283.979] -> wl_surface@22.attach(wl_buffer@28, 0, 0)
[3311283.989] -> wl_surface@22.damage(0, 0, 2147483647, 2147483647)
[3311284.088] -> wl_surface@22.commit()
[3311301.538] wl_display@1.delete_id(19)
[3311301.611] wl_display@1.delete_id(27)
[3311301.620] wl_surface@22.enter(wl_output@8)
[3311301.699] zxdg_toplevel_v6@25.configure(0, 0, array)
[3311301.726] zxdg_surface_v6@24.configure(6168)
[3311301.740] -> zxdg_surface_v6@24.ack_configure(6168)
[3311301.753] wl_keyboard@11.modifiers(6170, 0, 0, 0, 0)
[3311301.822] wl_keyboard@11.enter(6170, wl_surface@22, array)
[3311301.878] -> wl_display@1.sync(new id wl_callback@27)
[3311301.899] wl_data_device@15.selection(nil)
[3311302.134] wl_display@1.delete_id(27)
[3311302.173] wl_callback@27.done(6170)
[3311335.265] wl_display@1.delete_id(26)
[3313558.187] wl_pointer@9.enter(6172, wl_surface@22, 100.363281, 0.492188)
[3313558.373] -> wl_shm_pool@16.create_buffer(new id wl_buffer@27, 802816, 32, 32, 128, 0)
[3313558.462] -> wl_pointer@9.set_cursor(0, wl_surface@7, 5, 5)
[3313558.514] -> wl_surface@7.attach(wl_buffer@27, 0, 0)
[3313558.554] -> wl_surface@7.damage(0, 0, 32, 32)
[3313558.603] -> wl_surface@7.commit()
[3313558.697] -> wl_shm_pool@16.create_buffer(new id wl_buffer@19, 1200128, 32, 32, 128, 0)
[3313558.777] -> wl_pointer@9.set_cursor(6172, wl_surface@7, 15, 17)
[3313558.826] -> wl_surface@7.attach(wl_buffer@19, 0, 0)
[3313558.865] -> wl_surface@7.damage(0, 0, 32, 32)
[3313558.913] -> wl_surface@7.commit()
[3313558.950] -> wl_pointer@9.set_cursor(6172, wl_surface@7, 5, 5)
[3313559.021] -> wl_surface@7.attach(wl_buffer@27, 0, 0)
[3313559.055] -> wl_surface@7.damage(0, 0, 32, 32)
[3313559.096] -> wl_surface@7.commit()
[3313559.111] wl_pointer@9.motion(3785955, 100.363281, 0.492188)
[3313559.176] -> wl_pointer@9.set_cursor(6172, wl_surface@7, 15, 17)
[3313559.221] -> wl_surface@7.attach(wl_buffer@19, 0, 0)
[3313559.255] -> wl_surface@7.damage(0, 0, 32, 32)
[3313559.296] -> wl_surface@7.commit()
[3313574.003] wl_pointer@9.motion(3785971, 92.125000, 0.000000)
[3313590.979] wl_pointer@9.motion(3785987, 81.578125, 0.000000)
[3313606.862] wl_pointer@9.motion(3786003, 62.406250, 0.000000)
[3313622.904] wl_pointer@9.motion(3786019, 36.753906, 0.000000)
[3313639.503] wl_pointer@9.motion(3786035, 12.179688, 0.000000)
[3313655.517] wl_pointer@9.motion(3786043, 7.199219, 0.000000)
[3313678.180] wl_pointer@9.motion(3786075, 5.675781, 0.000000)
[3313710.501] wl_pointer@9.motion(3786107, 3.605469, 1.035156)
[3313726.738] wl_pointer@9.motion(3786123, 2.812500, 1.828125)
[3313726.898] -> wl_shm_pool@16.create_buffer(new id wl_buffer@29, 1269760, 32, 32, 128, 0)
[3313726.982] -> wl_pointer@9.set_cursor(6172, wl_surface@7, 14, 14)
[3313727.033] -> wl_surface@7.attach(wl_buffer@29, 0, 0)
[3313727.073] -> wl_surface@7.damage(0, 0, 32, 32)
[3313727.120] -> wl_surface@7.commit()
[3313743.612] wl_pointer@9.motion(3786139, 2.812500, 3.765625)
[3313743.749] -> wl_pointer@9.set_cursor(6172, wl_surface@7, 5, 5)
[3313743.797] -> wl_surface@7.attach(wl_buffer@27, 0, 0)
[3313743.830] -> wl_surface@7.damage(0, 0, 32, 32)
[3313743.868] -> wl_surface@7.commit()
[3313759.964] wl_pointer@9.motion(3786155, 2.812500, 8.765625)
[3313776.120] wl_pointer@9.motion(3786171, 2.812500, 10.765625)
[3313792.146] wl_pointer@9.motion(3786179, 2.812500, 11.765625)
[3313877.873] wl_pointer@9.motion(3786275, 3.812500, 12.765625)
[3313893.589] wl_pointer@9.motion(3786283, 5.617188, 14.570312)
[3313909.456] wl_pointer@9.motion(3786307, 8.546875, 14.570312)
[3313925.708] wl_pointer@9.motion(3786323, 12.546875, 14.570312)
[3313941.518] wl_pointer@9.motion(3786339, 15.546875, 14.570312)
[3313957.455] wl_pointer@9.motion(3786355, 17.546875, 14.570312)
[3313981.498] wl_pointer@9.motion(3786379, 18.546875, 14.570312)
[3314013.460] wl_pointer@9.motion(3786411, 19.546875, 14.570312)
[3314029.631] wl_pointer@9.motion(3786419, 20.546875, 14.570312)
[3314213.979] wl_pointer@9.button(6173, 3786611, 272, 1)
[3314214.088] -> zxdg_toplevel_v6@25.move(wl_seat@14, 6173)
[3314218.075] wl_keyboard@11.leave(6174, wl_surface@22)
[3314218.153] -> wl_display@1.sync(new id wl_callback@30)
[3314218.198] wl_pointer@9.leave(6175, wl_surface@22)
[3314218.486] wl_display@1.delete_id(30)
[3314218.536] wl_callback@30.done(6175)
[3314768.889] wl_keyboard@11.modifiers(6176, 0, 0, 0, 0)
[3314769.005] wl_keyboard@11.enter(6176, wl_surface@22, array)
[3314769.062] -> wl_display@1.sync(new id wl_callback@30)
[3314769.094] wl_data_device@15.selection(nil)
[3314769.468] wl_display@1.delete_id(30)
[3314769.518] wl_callback@30.done(6176)
[3315920.880] zxdg_toplevel_v6@25.configure(0, 0, array)
[3315920.954] zxdg_surface_v6@24.configure(6178)
[3315920.966] -> zxdg_surface_v6@24.ack_configure(6178)
[3315920.976] wl_keyboard@11.leave(6180, wl_surface@22)
[3315920.996] -> wl_display@1.sync(new id wl_callback@30)
[3315921.158] wl_display@1.delete_id(30)
[3315921.178] wl_callback@30.done(6182)
EDIT: I'm using gnome-shell 3.28 and Qt 5.11
EDIT2: I wrote a patch that makes Qt set the window geometry, the window now behaves correctly and there are no crashes. If this patch is approved, it's still going to take a while before this patch makes it into distro's, and it still might affect other distros.
Not set setting a window geometry is also something that should be supported according to the protocols (xdg-shell v6 and stable). So it might be something you want to fix.