Hacker News new | past | comments | ask | show | jobs | submit login

I wish they built the following simple protocol: "Operating System: Hey monitor, are you there? Monitor: (immediately) Hey OS, I'm still here, just give me a moment to turn on. OS: Ok I'll wait and not put user's windows on one monitor.

That way we won’t have this window shuffling nonsense that has plagued multi monitor setups since we started putting pcs to sleep instead of turning them off.




Also, "Hey monitor, are you there?" "Yes, I just got power, give me another 100ms for the backlight capacitors to charge and your content will be visible"

Also, "Hey monitor, here's a frame in a new resolution" "Right away, ma'am, I just need to wait 30ms for the next refresh and your content will be visible"

Modern display management is... well, it's just absolute garbage. We don't tolerate it when our storage devices or graphics cards take 3+ seconds (seconds!) to respond. Why are we OK with the display? I mean, some amount of delay and synchronization for some things is inevitable, but this subindustry has just gotten completely out of hand.


I wish there was a way just to actually manage the display settings from a computer. Brightness, contrast, ...

2019 and one still has use the display's buttons to control settings, unless it is a laptop's fixed display.


Under Windows this is what I use https://clickmonitorddc.bplaced.net to change such things.


Thank you! This works great! Another app for my list of portable tools.


Holy crap! This has been one of those things I've been wanting for so long!

Thanks!


This is great, thanks for sharing!


You are welcome. I just yesterday found about about this which updates most nVidia cards so that when the monitor in a multiple display setup are turned off all the windows on that screen do not get moved to the main screen.

https://www.nvidia.com/object/nv-uefi-update-x64.html


there's ddc, which has existed for a long time. It even worked back in VGA days. I automated some stuff with bash scripts and ddcutil on Linux.

Edit: DDC/CI to be precise, introduced in 1998: https://en.wikipedia.org/wiki/Display_Data_Channel#DDC/CI


It can be also exposed as kernel backlight device, then standard laptop GNOME/KDE brightness widgets just work.


How does one do this? On my desktop I currently use the ddccontrol and gddccontrol packages, but it would be awesome if the backlight slider existed the same as on my laptop.


There is simple driver: https://lore.kernel.org/patchwork/patch/753233/

As noted in discussion, Luminance VCD while worked for my monitors, backlight level 0x6B or legacy 0x13 would be better choice.

It then can be used by instantiating it at proper I²C monitor bus, e.g.:

    insmod ddcci_bl.ko
    modprobe i2c-dev
    echo ddcci_bl 0x37 > /sys/bus/i2c/devices/i2c-2/new_device
(oh, and it now over 2 years and I still haven't got time to integrate it with DRM display hotplug so it could be upstreamed :(


On Mac, I wrote a config [1] which uses `ddcctl` [2] cli tool to sync both brightness and volume using keyboard buttons. It worked quite well, although I haven’t used it for a while. I guess similar idea could be extended for linux too.

[1] https://github.com/prashnts/dotfiles/blob/master/etc/hammers...

[2] https://github.com/kfix/ddcctl/blob/master/README.md

Edit: Just noticed further down in the comments that an app exists for it now!


There's ddcutil for linux and this app for macOS

https://github.com/the0neyouseek/MonitorControl


My early-2000's Apple DVI displays support software brightness controls. Is that some proprietary feature that still hasn't been added to the general protocols?


> Also, "Hey monitor, here's a frame in a new resolution" "Right away, ma'am, I just need to wait 30ms for the next refresh and your content will be visible"

I think FreeSync somewhat alleviates that. But of course Nvidia doesn't agree to do it the same way. I do agree that video latency is atrocious. It takes longer to do a screen refresh than to send an ethernet packet across the country!


>It takes longer to do a screen refresh than to send an ethernet packet across the country!

Well you do need to consider (according to my naive estimated calculations) that:

a 1920x1080 picture is worth 4000 ethernet packets.


Does Freesync make switching monitor resolutions faster..?


No, it does not. Freesync just allows for variable refresh rates.


What I hate is the instant power saving of most displays. You try to reboot and see some BIOS info or even the key to enter ... and you end up booting the OS because the display is too slow.


And why do all monitors display a message, usually on a bright white background, saying they are going into power saving mode shortly when the connected device is turned off?


I doubt they'll ever fix it. Setting a timer is among the hardest problems in computer science.


> Also, "Hey monitor, here's a frame in a new resolution" "Right away, ma'am, I just need to wait 30ms for the next refresh and your content will be visible"

Eh? There's no shortage of monitors with well under 10ms of signal to photon latency: https://www.tftcentral.co.uk/images/gigabyte_aorus_ad27qd/la...

That's processing time + pixel response time measured across a handful of monitors. None of them are higher than 9ms. I have no idea where you got 30ms from? Or even what you're talking about at all. Are you exclusively talking about bottom of the barrel monitors here? Even IPS panels are being driven at 144hz these days and adaptive vsync is increasingly everywhere. Nobody is tolerating being slow?


You skipped the "in a new resolution" part. I'm talking about mode switch time. Change resolutions or swap an input on your monitor and watch it dance for a few seconds trying to "resync" in a digital environment where AT MOST you need to wait through one frame of data to find the right timings.


Yeah, the fact that it's not a single frame but, in fact, like 1 to 3 seconds to switch resolutions is absolutely insane. Trying to watch a PC bios boot on my new-ish monitor is an exercise in frustration—it spends more time off than on!


For some reason most if not all screens even cycle their backlight when switching modes.


what are you walking about? OP just used 30 ms as example, replace it with 9 ms or 3 ms or whatever the example of a new resolution from OP still works..


> replace it with 9 ms or 3 ms or whatever the example of a new resolution from OP still works

No, it doesn't. I missed that they were talking about mode switch, but if the mode switch happened in 9ms the OP's example doesn't work anymore because the switch becomes faster than refresh rate.


In an ideal world it would only take one frame to switch resolutions, and even if the frame time is usually 16.66ms, it is sometimes faster than that. Since mostly what a monitor needs to do is resample the image from the source resolution to destination resolution, and possibly composite in the UI for adjusting the settings, it seems quite possible to implement. I'm sure if we actually looked at what all the layers are doing (X, video drivers, PCIe commands, etc) then we would probably be pretty horrified. Hacks and work-arounds and backwards compatibility at every level.


I've been using dual monitors for years (on Windows and Ubuntu) and I can't say I've ever had this problem. As long as the monitors are plugged into the video card, the OS recognizes both of them regardless of whether they're powered on.


I had such a problem. When Windows sends monitors to sleep state or monitor is powered off, monitors on DisplayPort connections send hot-plug event and are removed from the system. Windows then moves windows and icons onto remaining monitors.

NVIDIA firmware update [0] solved the problem for me. It seems they ditched the naughty part of DisplayPort standard for good and stopped passing hot-plug events to OS.

[0]: https://www.nvidia.com/object/nv-uefi-update-x64.html


This did not help in my case. I have 3 DisplayPort 1.2 monitors, and half of the open windows get still tossed around randomly when the monitors wake from sleep, or when the whole PC wakes from sleep.


I'm in the same boat with my Dell P2210t- it's DisplayPort connection "disconnects" the screen, which is really annoying when you're trying to operate remotely and your config doesn't match its anymore.


A couple years ago the other option was to dump the EDID of the connected monitor (while it was on of course) using Nvidia's display software and then set the EDID data using the same software (overriding the EDID which would apparently get cleared when the monitor sent its hotplug event). If you ever actually removed the monitor you'd have to go remove the EDID data.


I think it depends on the connection you use. If I turn off one of my monitors connected via DisplayPort, Windows 10 immediately moves everything to the monitors that are still on. My last computer, with monitors connected via DVI did not do this.


I actually wish my laptop did this. I constantly have issues with some windows staying open on the second monitor after unplugging them both from my laptop.

Sometimes I can't get to them at all on the laptop screen without forcing it closed and reopening.


FYI in Windows if you can give the correct window focus (via taskbar or alt-tab) you can move them between screens with [win] + [shift] + [left/right arrow].

The regular [win] + [left/right] for snapping to 1/2 screen positions will also move it across screens if you hit it repeatedly.


Alternately the old-school variation (works since at least Windows 3.11): [alt] + [space] to open upper-left corner menu, [m] to move, then [arrow keys] to move the window around.


Once you've started this process, I believe you can just move the mouse (without clicking) to move the window as well. This tends to be faster than using the arrow keys, especially at modern display resolutions.


this is the workaround I use but it's super annoying. I have two displays at work but I switch the second one between two different computers. inevitably windows will remember the last location of some modal dialog and spawn it on the disconnected monitor, blocking the main application until I figure out whether it froze or there's a hidden dialog window on the other screen.


That's a Windows OS issue and it drives me crazy too, I raised an issue for it on the official Windows 10 feedback site, will try to find & post the link for it later, can't right now...


My most popular SuperUser question[0] (as well as Googling) revealed that many people have this problem with DisplayPort connections in Windows 7/10, although Windows 10 seems to have patched the problem to some degree with a relatively recent update (within the last couple months) - my icons are still moved to HDMI monitors when disabling a DP monitor, but positions are restored as long as I turn on all DP monitors in rapid succession... and in the correct order.

[0]: https://superuser.com/questions/630555/turning-displayport-m...


pre windows 10 you could disable HDMI and DP handling of the monitor detect signal.

Sadly MS figured we all wanted to have to shit move around as soon as you use a KVM.

(Also, there's usually a 90% chance that windows will not correctly handle the monitor reconnecting without having to either power cycle the monitor or using the video card's 'really truly scan for monitor changes' feature.)


That is a software decision. The nice thing about DisplayPort is that now we can find out if the monitor is on or off and connected or not. It is software's decision to move everything away when the monitor is off but still plugged. I agree this is a bad decision.


The correct thing to do is likely to //ask// the user what they want, on one of the working screens.


If the alternative is waiting for 3 seconds, bothering the user is a bad thing to do.


They absolutely could add a settings toggle. This has been a huge annoyance since DP and HDMI arrived at the scene.


This is a pretty common occurrence for me on macOS with external monitors. I have thunderbolt going to a dock, then displayport from the dock to the monitors.

Waking from sleep will periodically just not find a monitor at all, or they will come up with the wrong positioning (left and right swapped). If I turn a monitor off, the other one (and the laptop) do some sort of resync operation that interrupts the display. It's annoying, but not something I would expect the industry to consider a priority; I'm not really sure it's a monitor issue at all.


I have the same problem! My 2018 MBP can't seem to communicate with my Dell U3415W monitor reliably at all. Sometimes the monitor comes on when I touch the keyboard and everything is fine. Sometimes I have to "fake" a sleep cycle by shoving the mouse into the corner of the screen. And sometimes I have to go through a whole process of turning the monitor off/on, opening the laptop lid, disconnecting the Thunderbolt cable, and anything else I can think of. sigh it seems like this shouldn't be a problem in 2019.


Same issue here, been like this for > five years. Almost like no one at Apple uses multiple monitors.


I just started using triple monitors, one is a TV that sits behind me turned off most of the time, but still active enough to not be considered unplugged. When I physically unplug a monitor, Windows loves to put all the windows on the TV desktop, resize them down to the resolution of the TV, and then proceeds to do stupid things like open all new instances of File Explorer in the TV desktop.

So yeah, it's better than when off really meant off and ports lacked cable detection.


It's terrible on mac. I constantly have one monitor that just refuses to show content until I unplug/replug multiple times or open/close the laptop lid. It's really silly how long this has been a problem and Apple hasn't touched it.


I've had no problems when on a desktop with both monitors plugged into similar interfaces. When you've got one on VGA and one on DisplayPort, or a local laptop display and a VGA on a dock and a DisplayPort also on the dock...it gets confused. Use seems to have largely corrected the VGA monitor + laptop combination, that usually works OK, but digital/daisy-chained combinations with laptops and docks are definitely buggy.


That sounds like an OS and Driver issue not a DP/HDMI standards issue. It seems like in an effort to be as quick as possible (and backward compatible with VGA adapters?) this problem has persisted for years. I've fixed mine by setting configurations away from auto/default, but updating drivers will often force me to do it again.

Don't think it's the hardware that's pushing 20-80Gb/s through 10ft of cable causing the issue... they don't specify OS/driver interactions. They just report available resolutions/rates in their PID and display on SleepOut command from the host register/packet interface.


Maybe I'm just old-fashioned, but I much prefer the days of VGA/pre-VGA where software neither knew nor cared whether you had a monitor plugged in --- if the output on the GPU is enabled, then it will output video until/unless you disable it, end of story. None of this new "trying to be smart" complication that just leads to more weird and irritating failure modes.

I wonder if at least part of this is for DRM reasons, because having an always-on and "unauthenticated" video signal output does tends to frighten those IP control-freaks.

I do agree with all the others here that the time newer monitors take to sync to the signal is horribly long. CRTs and some older LCDs were basically instant (although the latter would sometimes auto-adjust on signal changes, meaning a slightly unstable display, at least it was still somewhat readable and visible --- crucial for reading things like BIOS screens, for example.)


>I wonder if at least part of this is for DRM reasons, because having an always-on and "unauthenticated" video signal output does tends to frighten those IP control-freaks.

Probably not, DVI has hot-plug.


This problem drove me absolutely crazy on my macbooks. When i step away from my laptop with external monitor connected, it will go to sleeep and when it wakes up it forgets for a minute that it has a monitor connected, and when it finally realizes it, all the windows are stacked on a MacBook screen, and external monitor is empty. Thankfully I found a “stay” app, that saved me from going completely nuts: https://cordlessdog.com/stay/


I had to read your comment several time as well as some replies before I understood the problem you're talking about. Turns out that it's never been a real problem for me because I've been using tiling window managers with placement rules for a long time, so basically I configure once "when I have n monitors I want that layout" and I'm done.

I fully understand that tiling WM are not and will never be mainstream, so finding a general solution would be desirable, but I guess for a tech-savvy crowd like HN I want to proselytize tiling WMs a bit. Every time I have to use a regular "hey here are a stack of overlapping windows, have fun" destop I'm genuinely frustrated. It's nice when you're working on a new flow with new apps you're unfamiliar with but once you've got your development "stack" figured out I couldn't imagine coding in an environment where I can't switch to my editor, terminal, browser with a single non-context sensitive command, regardless of where I am.

I suppose just having virtual desktops can be a decent enough compromise (put your editor in a virtual desktop, your browser in an other etc...) but as far as I know even that is relatively uncommon outside of linux DEs.


I programmed the blue little button on my thinkpad to change i3 layout to/from external monitor. Works great for me, as it allows me to have the monitor connected to several machines.


Hehe, currently I have that problem on steroids: One of my two monitors is a bit broken. Every time I turn it on, it takes about 5 minutes until it finally works. But during those first five minutes, it constantly turns off and on again (about once in 2 seconds).

You can imagine what that does to my windows ;-)


Incoming power supply failure.


You can (should) do this at a lower level by having the physical layer electrically detect that both ends of a cable are plugged in (bonus points for detecting the type of thing on the other end). Can be done as simply as testing for varying resistance levels between pairs of pins. USB does this for detecting OTG master/slave relationships for example. I think DVI also does this in some way. I remember having to do something to the plugs to get Linux to enable the GPUs in my mining days.


This exists in HDMI and I'm pretty sure it has to exist in newer standards. Generally the problem is that figuring out that something is plugged is not enough, you also need to know what is plugged, what resolutions it supports etc...

I don't know how DP does it but previously there was a good old I2C link in the cable that was used to figure out what the screen supported[1]. You only needed an I2C EPROM on the other hand containing the various modes. Without this the computer on the other end can't really prepare itself properly, preallocate the framebuffers etc...

Since the EPROM requires very little energy it might even work if the monitor is not powered, just using the +5V coming from the HDMI cable.

[1] https://en.wikipedia.org/wiki/Display_Data_Channel


>I remember having to do something to the plugs to get Linux to enable the GPUs in my mining days.

You also have to do this with certain desktop streaming solutions if the host PC doesn't have a display. You can buy fake HDMI connectors that are just a cap over the HDMI port to trick the video card into thinking there is a display attached.


Especially if you have a remote setup, when it tries to follow the shuffle dance and resizes, steals focus gets minimized, tries to stay in top and then realises it is on the wrong monitor so it does it all again. I just close my eyes and think of the moon landing. One day we can both land on the moon and have monitors that allows windows to keep the same position.


Or just let the user resize the virtual desktop manually since they probably know what's going on in real life better than the computer. (this is how it works at least on the OS on my laptop and I've never had an issue with it.) Also, don't move the user's windows around unless they ask you to, WMs that do that get uninstalled immediately from my laptop.


I became so frustrated with this that recently I setup a Task Scheduler item to overwrite the group policy display settings to "Never sleep", every 1 minute, forever.

I still have to move them back once in the morning when I unhibernate, but it's better than 5 times a day.

It would be really great if someone could figure this out.


This problem didn't exist with vga or dvi so why can't it just work like that and why can't I configure linux to ignore "monitor off" signals?


Linux works fine: I use awesome as window manager and xrandr for setting up monitors, and nothing changes when I unplug HDMI or DP. The problem seems to be with Gnome/KDE/etc.


Cinnamon in my case :/


Supposedly the following command should disable that "feature":

    gsettings set org.cinnamon.settings-daemon.plugins.xrandr active false
EDIT: apparently not anymore, but there's another solution: https://github.com/linuxmint/Cinnamon/issues/6646

EDIT2: per this PR, you should be able to disable it in the configuration panel: https://github.com/linuxmint/cinnamon-settings-daemon/pull/1...


The computer's ability to reorganize windows is independent of whether the monitor is on or off. For outputs like HDMI we don't even know if it's on or of, we only know whether the cable is connected.

What you're complaining about is entirely a software problem. No improvements to display standards will move the situation forward.

By the way, if you're using Linux, consider switching your desktop environment.


I am pretty sure that HDMI CEC has a way to enumerate the connected devices and see if there's anyone alive on the other end of a cable. Assuming the other end also does CEC.

Now, if only we could convince PC graphics manufacturers to support CEC instead of ignoring it. It seems the only people who do care are the little set-top boxes that run Nvidia Tegra or Qualcomm chips.


DDC might tell you that. On the other hand it is also good. Avoids that the OS moves windows around.


Honestly, that's just the garbage Linux desktop. The kernel has learned a lot of new tricks (atomic kernel mode setting) for frame perfect display, but it needs hardware and much more importantly software support to use it. At least wayland is moving in that direction.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: