linuxmint / cinnamon

A Linux desktop featuring a traditional layout, built from modern technology and introducing brand new innovative features.
GNU General Public License v2.0
4.53k stars 735 forks source link

Cinnamon relocates all windows when 3x displays are all connected/disconnected. #6515

Open mikebutash opened 7 years ago

mikebutash commented 7 years ago

I use 3x tv displays, samsung 4k tv's namely via hdmi2.0 interfaces, and every time I power down the displays, they "disconnect" much as unplugging them. This causes Cinnamon (and most other desktops too) to freak out and relocate all windows, seemingly the first to be powered back on.

This is a bit annoying obviously. The use case is I go to sleep at night, I power off each tv with a remote, otherwise they'll run indefinitely or as power management says. I then wake up, power the 3 displays back on, and resume working (ideally).

Everything says the pc lost all 3 displays as disconnected when this occurs, then they're back. Cinnamon gets slower and slower to respond over time when it has to re-figure out where everything was, and ends up doing so poorly anyways.

Much like KDE, Cinnamon relocates randomly the "primary display" status elsewhere, relocating both the primary task bar, and also telling things like cairo-dock that I use it's "primary display" is different, which it adjust to itself poorly and ends up usually some where else. Very bizarre, random behavior results.

Cinnamon handles this better than most, kde would freak out entirely at first in 4 and 5.x until enough like me reported it, and it got some fixes. It was still highly broken for me later, thus I switched back to Cinnamon.

My system config, arch linux, 4.10.3.-1 kernel, nvidia 378.13-5, cinnamon 3.2.8-1, 3x samsung ju6700 49" tv's for displays, nvidia 1070 video card, connected to 3x hdmi 2.0 via club3d dp1.2-to-hdmi2.0 adapters, generally works fine until it jumbles my windows amok annoyingly.

Reproducing it is as simple as powering each off, then back on after time such as sleep/wake. Once I replace things, it generally works pretty well, other than some odd occasional flickering with the compositing I can't entirely isolate enough to report.

Happy to offer whatever log or config data to help, but otherwise this seems more a methodology problem for dealing with the displays all coming and going that might take some brain consideration how best to deal lower in the stack. KDE and most other desktops tried still can't figure it out either, so don't feel so bad, but does dampen usability as a full-time desktop user with this.

DemonTPx commented 7 years ago

I'm having the same problem with three monitors connected using display port. It happens when I turn off the monitors and turn them on again, but since I updated to Linux Mint 18.2 (from 18.1) it now also happens when the screens have been turned off by the power saver/screensaver.

drmoose commented 7 years ago

Probably related to #5619. The workaround there (rename csd-xrandr so cinnamon can't find it) may help here too.

dpantel commented 6 years ago

Sorry to resurrect an old thread, but...

I just joined the world of multi-monitor desktop and immediately ran headfirst into this issue. Killing off csd-xrandr fixes the hot-plug/standby windows shuffle issue.

However, disabling csd-xrandr from starting altogether messes up the primary/secondary monitor settings, as well as monitor orientation settings on startup.

My initial idea is to let csd-xrandr autostart, but then killing it in the first couple of minutes. Any other suggestions?

drmoose commented 6 years ago

Unfortunately, csd will repeatedly relaunch csd-xrandr if you kill it. My solution has been to configure things like this (where csd does something insane) with something other than cinnamon -- xorg.conf is the traditional approach. You could also write a script using the xrandr command and add it to the cinnamon startup items. If you're after a GUI and are on an nvidia gpu, their settings panel is reasonably usable and has a "save to xorg.conf" option.

itzexor commented 6 years ago

Since cinnamon-settings-daemon 3.4.3 you can disable csd-xrandr via startup applications

edit: sorry i didn't notice that it messes up the settings. i think the option to disable it was added for this type of situation though...configuring it through nvidia settings is probably the best bet like drmoose said,

dpantel commented 6 years ago

@drmoose You're absolutely correct, csd-xrandr is immediately restarted once killed. I tried changing X-GNOME-AutoRestart=true to false in ~/.config/autostart/cinnamon-settings-daemon-xrandr.desktop, but that had no effect.

Oddly enough, this works:

  1. disable Cinnamon Settings Daemon - xrandr in Startup Applications
  2. create new startup command with /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-xrandr (same command as the above Cinnamon Settings...)
  3. create another startup command with killall csd-xrandr with a 10 second delay

Xrandr runs on login and positions all the screens according to my Cinnamon Display settings and then gets killed. It does not get restarted and so does not detect when the monitors go on standby.

Problem solved kludged.

bitstrings commented 6 years ago

There's no need to explicitly kill the daemon, just use the option: --exit-time 10

Example: /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-xrandr --exit-time 10

dpantel commented 6 years ago

good to know, thanks.

mikebutash commented 6 years ago

I agree with bitstrings, I added --exit-time 5 to mine and it's been solid for me to stop juggling my windows randomly.

mikebutash commented 6 years ago

A weird side-effect of this I see still is the lock screen pops up and only covers 2 of the 3 displays, resizing the normal image to the 2, but still shows the unlock across the 3. Not a huge deal, but sort of... odd to watch when I wake up my displays with the remote control. I use a full size 11520x2160 resolution image normally to span the 3x 4k displays, and when it renders on only 2 of 3, it creates a lot more black on the screen than I'm used to with a normal desktop if even just the background.

Something buggy to look at, not a huge deal, but another todo sort of fix. This is either in software or hardware mode, so seems more a core dysfunction. Easy to reproduce, connect 3x 4k displays, nvidia drivers, arch standard install as of cinnamon 3.2.8-1.

bitstrings commented 5 years ago

This is still happening. I have 2 monitors and it's really annoying to see my ALL windows moved to 1 monitors everytime it comes back from sleep.

jaszhix commented 5 years ago

Not a proper fix, but wrote an applet that addresses this problem.

https://github.com/linuxmint/cinnamon-spices-applets/tree/master/IcingWindowSaver%40json

It can save and restore windows via the menu, keybindings, and restore windows after monitor hotplug events. Monitor hotplug event handling still needs some work though, YMMV. :slightly_smiling_face: