Edit:
Apparently it is not related to i3.
Second video demonstrates same thing happens on Xfce4 aswell.
When the compositing is off some weird windows 98 stuff is happening
First video is on Ubuntu 18.04 i3 desktop manager.
Second is on Mx Linux 18.2 xfce4.
Gpu is nvidia 1080 ti. Driver version: 418.56
Hello, first of, thanks for porting Unity to linux.
When I switch from and to Unity when using i3 desktop manager Editor is not repainted.
I have to move my mouse over each part of the editor to make it appear again.
I recorded a 1 minute video showing the problem.
I’m using i3 (v.4.16.1) + compton (gl sync) and Unity 2019.3.0a8.
Seems like a repaint problem fixed.
But you need a compositor for a 2nd video.
Artifacts when window overlaping each other is normal, if you didn’t use compositor.
I’m using Openbox , and i have the same issue. Very annoying refresh problems, in fact nothing is refreshed (menus are overapping, for example). I have to move around mouse cursor to invalidate regions, and for a refresh.
Reading this thread, i’ve found the solution: installing xcompmgr package, which is a compositor for Xorg.
Just launch xcompmgr , even after started unity3d editor, and the composition problems disappear.
May be you will need compositing extension to be activated in xorg, but it should be by default.
Of course ,compositing is eating resources, so you should kill xcompmgr when leaving unity3d.
I had the same issue, however I don’t use i3 but kwin. The problem was KDE Plasma automatically disable OpenGL rendering backend on the compositor because of a driver crash. I had to reenable it and it worked again.
For KDE users, you can reenable the OpenGL rendering backend by going in System Settings > Hardware > Display and Monitor > Compositor > Rendering backend (a pop-up may tell you the driver crashed and you can reenable it by clicking directly in the pop-up)
-- Unity repaint fix
last_focus = nil
unity_force_repaint = true
client.connect_signal('focus', function(c)
if not c then return end -- that can happen :/
-- This is needed to have Unity on one screen and some utility panels on another
-- without constantly repainting whenever the user switches back and forth
if not unity_force_repaint and last_focus and last_focus.valid and last_focus.tag == c.tag and awful.rules.match(last_focus, { class = "Unity" }) then
last_focus = c
return
end
last_focus = c
unity_force_repaint = false
if not awful.rules.match(c, { class = "Unity" }) then return end
if awful.rules.match(c, { rule_any = {type = { "dialog", "popup", "popup_menu" }}}) then return end -- Ignore these types of windows
if awful.rules.match(c, { name = "Select" }) then return end
-- The workaround
-- note: gears.timer.delayed_call doesn't not seem to work for this
c.fullscreen = false
gears.timer.start_new(1/60, function() -- 0 doesn't always work in every case
c.fullscreen = true
end)
end)
tag.connect_signal('property::selected', function ()
unity_force_repaint = true
end)
You may have to tweak this depending on your work preferences. Using maximized instead of fullscreen also works well!