V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsdisp
V2EX  ›  硬件

有没有人觉得 DisplayPort “关显示器就相当于拔线”的设计很脑瘫?

  •  1
     
  •   einsdisp · 2023-10-27 23:08:57 +08:00 · 3195 次点击
    这是一个创建于 427 天前的主题,其中的信息可能已经有所发展或是发生改变。

    电脑通过 DisplayPort 接显示器,一旦按显示器关闭按钮,就等效于强制拔线,这个不是 Bug ,是 DP 标准就是这么设计的。对于其他任何接口( VGA DVI HDMI )都没有这个脑瘫的设计,通过操作按钮关闭显示器,仅关闭显示输出,但显示器的信号仍然被电脑识别,电脑仍然可以输出信号,除非直接关闭显示器电源插座(有些显示器也自带切断电源的开关,等效于拔插头)。只有 DP 协议如此“标新立异”。

    DP 的脑残设计有可能给用户导致包括但不限于如下问题:

    • 高分辨率显示器关闭再开启后,窗口全跑左上角去了

    • 睡眠后再开机必须先开显示器再开电脑,不然有可能窗口错乱

    • 多显示器场景是重灾区,必须保持所有显示器一直开启,有时偶然关闭了一台显示器,或者有时候只想关注一台显示器,关闭其他显示器,而后再开启后,窗口全是错乱的

    • 关显示器后,远程桌面、串流应用等无法正常工作

    网上随便一搜,大量用户深受其害,苦不堪言。制定标准的人到底是如何考虑的,非要标新立异?

    29 条回复    2024-03-09 17:33:07 +08:00
    Archeb
        1
    Archeb  
       2023-10-27 23:14:12 +08:00
    遇到过,我就是情况三的多显示器……

    但是在我的理解中,这个情况似乎不仅仅是 “关显示器就相当于拔线”

    我有两台显示器,一台 ViewSonic ,一台飞利浦。我在关闭飞利浦显示器的时候,所有窗口都会自动跑到 viewsonic 显示器上。但是我关闭 viewsonic 显示器的时候,窗口不会有变化。我甚至可以把鼠标移动到原来 viewsonic 显示器的位置上,并摸索着把窗口拖动出来。

    这两台显示器均使用 DisplayPort 连接,所称的“关闭”均为使用显示器电源按钮关闭显示器。

    所以我觉得这可能不仅仅是 DP 标准的问题,还取决于显示器厂商的实现。
    Archeb
        2
    Archeb  
       2023-10-27 23:26:28 +08:00
    另,这也有可能是 Windows 显示器管理的原因,因为飞利浦显示器( 4K )被我设置成了主显示器,而 ViewSonic ( 1080P ,竖放)是被设置成副显示器的。

    我在使用 Linux 的 xrandr --query 命令列出显示器时,即使任意一个显示器被关闭了,也仍然能列出两台显示器

    Screen 0: minimum 8 x 8, current 4920 x 2160, maximum 32767 x 32767
    HDMI-0 disconnected (normal left inverted right x axis y axis)
    DP-0 disconnected (normal left inverted right x axis y axis)
    DP-1 disconnected (normal left inverted right x axis y axis)
    DP-2 connected 1080x1920+0+110 right (normal left inverted right x axis y axis) 527mm x 296mm
    1920x1080 59.93*+ 60.00 59.94 50.00 29.97 25.00 23.98
    1680x1050 59.95
    1600x900 60.00
    1440x900 59.89
    1440x240 60.05
    1400x1050 59.98
    1280x1024 75.02 60.02
    1280x960 60.00
    1280x720 60.00 59.94 50.00
    1024x768 75.03 70.07 60.00
    800x600 75.00 72.19 60.32 56.25
    720x576 50.00
    720x480 59.94
    640x480 75.00 72.81 59.94 59.93
    DP-3 disconnected (normal left inverted right x axis y axis)
    DP-4 connected primary 3840x2160+1080+0 (normal left inverted right x axis y axis) 600mm x 340mm
    3840x2160 60.00 + 143.98* 119.99 97.98
    2560x1440 143.91 120.00
    1920x2160 59.99
    1920x1080 119.88 60.00 59.94 50.00
    1280x1024 75.02 60.02
    1280x720 59.94 50.00
    1024x768 119.99 99.97 75.03 70.07 60.00
    800x600 119.97 99.66 75.00 72.19 60.32 56.25
    720x576 50.00
    720x480 59.94
    640x480 119.52 99.77 75.00 72.81 59.94 59.93
    DP-5 disconnected (normal left inverted right x axis y axis)

    以上输出在任意一台显示器关闭的情况下,都是一致的。

    并且,我也可以一样的摸黑移动窗口、窗口不会被自动调整大小或者转移位置(我使用的窗口管理器是 i3wm )

    所以综合以上的调查,表明这很可能是一个 Windows 显示器管理机制的问题。
    Archeb
        3
    Archeb  
       2023-10-27 23:27:47 +08:00
    再补充清晰一点:#1 中描述的是使用 Windows 11 的体验, #2 主要描述的是在 ArchLinux 上的体验
    einsdisp
        4
    einsdisp  
    OP
       2023-10-27 23:44:01 +08:00
    @Archeb

    我也使用 Linux 桌面,AMD 的显卡。打开桌面环境的“显示器设置“,可以看到里面有两个显示器可供设置(分辨率/方位等),关闭任意显示器,设置里马上就只剩一个显示器。

    使用 xrandr 命令输出也是同样情况,关闭一个显示器后,只剩一个显示”connected“。

    以上,只有连接 DP 接口才会出现,连接其他接口均不会如此。

    可见,这个问题跟操作系统无关,就是 DP 的 bug 。
    当然,也不排除有显示器厂商不遵守标准的 DP 协议,而是”自行优化“,关闭显示器后仍然输出信号。
    或者某些操作系统或桌面环境或显卡驱动也”自行优化“,检测到 DP 连接的显示器断开后,强制各个窗口仍然保存原位置不变。
    einsdisp
        5
    einsdisp  
    OP
       2023-10-27 23:49:05 +08:00
    @einsdisp

    例如 Linux 桌面( Gnome Cinnamon )都可以通过命令禁止桌面环境的“auto-plug”功能,不再检测显示器关闭,这样关闭 DP 显示器后,再开启,窗口不会错乱。但这样的话,也就没法区分拔线、拔插头了。总之,DP 的设计很脑瘫,需要用户自行费尽心机去解决问题。
    Archeb
        6
    Archeb  
       2023-10-27 23:55:21 +08:00 via Android
    @einsdisp 那还真是神奇,我也没有更多的设备可以测试了。
    terence4444
        7
    terence4444  
       2023-10-28 00:24:37 +08:00 via iPhone
    关闭显示器相当于拔线应该也属于正常操作吧,DP 不可能猜到关闭显示器的目的是想让它离线还是省电。再说 DP 关闭显示器以后只是给操作系统发送了一个信号,具体实现是在 OS 里实现的,和 DP 的关系不是很大。

    这个信号有点像“按下电源按钮”的信号一样,每个人会有不同的需求。
    einsdisp
        8
    einsdisp  
    OP
       2023-10-28 00:39:23 +08:00
    @terence4444

    恰恰相反。DP 无法区分“临时省电/免打扰”vs“彻底断连”,dp 关显示器后,连信号都没有了(触发显示器厂商自行优化,关闭后仍然输出信号),对于 OS 而已,根本无法区分,OS 恰恰相反是给 DP 擦屁股的。

    其他接口就不操作这个问题,要区分也很容易:显示器按关闭按钮就是想临时省电/免打扰关闭一下,关闭插座按钮就是断连,甚至有些显示器有两个关闭按钮,区别很明显。
    einsdisp
        9
    einsdisp  
    OP
       2023-10-28 00:39:56 +08:00
    @einsdisp 触发 -> 除非
    jhdxr
        10
    jhdxr  
       2023-10-28 01:08:08 +08:00
    『显示器按关闭按钮就是想临时省电/免打扰关闭一下,关闭插座按钮就是断连』
    我怕是对『关闭按钮』的『关闭』两字有啥误解,有啥电器的『关闭』按钮是用来临时省电/免打扰关闭一下的吗?
    m1nm13
        11
    m1nm13  
       2023-10-28 01:12:12 +08:00
    本来 DP 就很蠢.各种问题,
    包括你说的图标混乱问题,
    也包括关闭显示器之后,试图远程这台电脑会被提示没有显示器,得上 HDMI 欺骗器(部分远程软件自带虚拟显示器,不会问题.但是类似 parsec 之类的就不行) ,
    也包括某些主板/显卡 用 DP 会导致没有 bios 的显示.你以为是 win10 快速启动跳过了 bios 画面,其实是显示不出来 XD
    SkywalkerJi
        12
    SkywalkerJi  
       2023-10-28 01:16:33 +08:00   ❤️ 1
    @m1nm13 显示不了 bios logo 是显卡 bug ,刷 vbios 可以解决。
    qsmd42
        13
    qsmd42  
       2023-10-28 01:19:47 +08:00
    试了试我的 HDMI 显示器按了电源按钮窗口就切到另一个显示器了 这才应该是正常设定吧
    我的小米电视可能就是你说的 关机不断 HDMI 导致我还要手动进设置断开输出 我机都关了 还要把信号传过去干嘛 一不小心开个窗口找不到哪去了 原来是忘了手动断开视频输出 什么智障设定
    插拔显示器窗口错乱的问题用 PersistentWindows 完全可以解决
    DOLLOR
        14
    DOLLOR  
       2023-10-28 02:25:57 +08:00 via Android
    确实是这样的,能用 HDMI 就尽量 HDMI 。
    因为 DP 显示器唤醒后,窗口、桌面经常全都乱了,非常难受。
    ruimz
        15
    ruimz  
       2023-10-28 07:28:11 +08:00 via iPhone
    原来是这个原因…我之前还在想为什么我两个显示器关闭电源导致的行为不一样
    zanyzephyr
        16
    zanyzephyr  
       2023-10-28 08:06:11 +08:00 via iPhone   ❤️ 2
    我的个人感受恰恰相反,关闭等于拔线,这个设计太优雅了简直。

    显示器都关闭了还在那儿输出信号,给鬼看呢?
    关闭了还不让断信号,用户想断信号了,还非得去拔连接线、拔电源?

    你列出的问题,我这边都没遇到或被困扰过,用起来就挺符合预期、符合直觉的。
    环境:MBP 外接 dell 2720QM 、dell 2718D
    leonshaw
        17
    leonshaw  
       2023-10-28 08:38:34 +08:00
    难道不是操作系统处理显示器布局的问题?
    Greendays
        18
    Greendays  
       2023-10-28 08:46:18 +08:00
    如果分屏使用时,把某个显示器关掉了。如果不识别为拔线的话,岂不是有一部分窗口会“显示”在断电的显示器上?
    Jamy
        19
    Jamy  
       2023-10-28 10:50:58 +08:00
    @zanyzephyr 你没试过远程连接你电脑的时候,关闭显示器的情况下, 重启之后有什么问题.
    我试过用向日葵把 windows 重启了,然后分辨是 648x480 的最低分辨率,并且修改分辨率无效.
    而家里当作 nas 的 linux 电脑,ssh 连上去 reboot 之后,直接无法开机,经过一番 google 之后,发现在 grub 的默认配置下,检测不到显示器,直接不开机.非要搬一台显示把线给他插上才可以.
    浪费大把时间来查找这种本应该不是问题的问题真的很烦.
    billlee
        20
    billlee  
       2023-10-28 11:15:00 +08:00 via Android
    这个现象产生的原因大概是 displayport 要支持菊花链,所以每台显示器都相当于一个交换机,有多少显示器接入都是要通过协议握手才能得知的,再也不能想以前那样只检测有没有插上线了。

    感觉还是操作系统的问题,没有实现在某个显示器离线的时候保留对应的 framebuffer.

    有些显示器支持把 displayport 设置成不支持菊花链的低版本,一定程度上可以避免类似的问题。
    adoal
        21
    adoal  
       2023-10-28 17:46:40 +08:00
    DP 就是典型的志大才疏,理念各种高级,设计各种缺陷
    cpstar
        22
    cpstar  
       2023-10-29 09:24:48 +08:00
    为啥要关电源?或者说,终端设备都已经“断电”了,理论上电路已经断开连接了,源头设备还能判断终端设备的存在,那是不是终端设备根本没有“断电”——在连线上判断高阻态和低电位态来区分断线和断电(但连线)的区别?

    我唯一有类似感觉的就是多输入切换,显示器从设备 1 切换到设备 2 ,设备 1 ( windows10 )的资源管理器会变成 640*480 样的窗口大小——即设备 1 没有显示设备,采用默认分辨率处理所有窗口。
    bao3
        23
    bao3  
       2023-10-29 13:08:36 +08:00
    关闭,难道不就是关电拔线一样嘛? 难道是关闭显示器,真实意图是休眠? 但休眠是 OS 行为吧。对我来说,关闭了显示器电源,等于拔线,这个反而是觉得是对得
    Trim21
        24
    Trim21  
       2023-10-29 14:03:54 +08:00
    怪不得每次休眠睡眠之后窗口都会错乱...

    试了试把副屏换成 HDMI ,电脑休眠终于不会导致窗口重排了
    leoleozhu
        25
    leoleozhu  
       2023-10-30 11:55:56 +08:00
    Macbook ,TypeC 连接外接显示器。也是关闭显示器就将所有窗口回到 Macbook 去了,感觉挺直观的。再开机,原来配置的窗口又能恢复到外部显示器。

    所以关键是操作系统没有在显示器再开机时恢复过去么?操作系统应该知道原来显示器的配置的。
    ellermister
        26
    ellermister  
       2023-10-30 12:39:33 +08:00
    我也是经常遇到这个问题,习惯性关闭一个显示器,再次使用时,原来第二个屏幕的最右侧浮动窗口全跑到第一个屏幕的最右侧了,一个一个拖过去很麻烦。

    没想到居然是 DP 的问题
    zanyzephyr
        27
    zanyzephyr  
       2023-10-30 21:44:47 +08:00
    @Jamy # 19
    远程桌面、串流应用 这两个我确实没有在本机上试过。

    > 发现在 grub 的默认配置下,检测不到显示器,直接不开机
    我用过的服务器,都是没有配备显示器也可以直接通过 ssh 或其他方式连上去的。服务器不配置显示器挺常见的吧?
    我理解你踩到坑时排查的烦闷,但我觉得这个锅不能分给 DP 。
    xh3ccc
        28
    xh3ccc  
       2023-12-19 16:17:07 +08:00 via iPhone
    是的,有需求午休时或睡觉前想要关闭下防止刺眼 (防止碰下鼠标又亮了)。
    hoream
        29
    hoream  
       293 天前
    在 Linux 下添加类似 video="DP-1:D"这样的内核参数就可以在关闭屏幕后强制显示输出了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 21:26 · PVG 05:26 · LAX 13:26 · JFK 16:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.