强制将gdm登录界面显示在主要监视器上

我有两个显示器连接到我的显卡上。主显示器的分辨率为1280x1024,第二个显示器的分辨率为1920x1200。无论第二个显示器是否关闭,我的登录界面总是出现在第二个显示器上。我的问题是如何强制始终在分辨率为1280x1024的主显示器上显示登录界面?
我使用Nvidia GT9500显卡的Twinview模式。我不能使用Xinerama,因为在这种模式下vpdau无法正常工作。
我发现鼠标指针总是出现在屏幕联合的中心位置,而中心位置总是在分辨率更高的显示器上。登录界面总是显示在鼠标光标所在的位置。
现在我的主显示器的分辨率是1920x1080。问题仍然存在,鼠标光标始终出现在第二个显示器的右下角。
7个回答

对于像Ubuntu 13.10或者升级到13.04并使用Gnome 3.8这样的较新版本,此过程与以前不同,因为X配置文件不再控制显示器布局。您需要按照以下步骤操作:
  1. 以登录用户的身份正确设置显示器布局(请参见永久将显示器设置为主要显示器

  2. 将配置文件复制到gdm设置中

    cp ~/.config/monitors.xml ~gdm/.config/
    

更多详细信息,请参见https://bbs.archlinux.org/viewtopic.php?id=161903

  1. 在monitors.xml文件中,有标签标记为:<primary>something</primary>

对于您想要设置为主屏幕的监视器,在标签之间放置一个'yes',对于其他所有屏幕放置一个'no'。 例如:<primary>yes</primary>


10确认,它也适用于 GNOME 3.10。如果其他人有疑问,~gdm/.config/的绝对路径是/var/lib/gdm/.config/ - Forage
8在Gnome 3.14中看到的内容:sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/ - Francois
1我可以确认这个简单的技巧在Ubuntu 17.04和Gnome 3.24.2上也有效。我刚刚运行了Francois发布的命令,现在它完美地运行了。 - fgblomqvist
2仍然可以在17.10版本中使用Xorg。但不要尝试聪明地创建用户配置的符号链接。这样是行不通的。 - raphinesse
这应该标记为正确答案。 - AzP
也适用于Pop_OS!18.10 - msmafra
这在Ubuntu 20.04上与Gnome 3.36.9版本有效。我必须使用sudo来执行cp命令,因为~/ggm/.config目录的所有者是gdm用户,而不是当前登录的用户。我还必须重新启动机器才能使配置更改生效(注销不会重启gdm)。 - Soichi Hayashi
这个答案使用@Francois命令,在Ubuntu 21.10上有效。它还为gdm登录界面提供了正确的监视器布局(左边是哪个监视器,右边是哪个等等)。 - Tim Richardson
在运行显示设置应用程序之前,我发现将~/.config/monitors.xml重命名是有用的,因为现有的monitors.xml文件中包含了许多来自以前的监视器设置的无用信息。然后,显示设置应用程序将创建一个新的、"干净"的文件,这样更容易看清楚正在进行的操作(设置主要显示器、次要显示器的x/y位置等)。 - Troy Folger
如果~gdm (/var/lib/gdm3)不存在,请使用sudo mkdir -p ~gdm/.config/; sudo chown -R gdm:gdm ~gdm; sudo cp ~/.config/monitors.xml ~gdm/.config/ - Gibezynu Nu

你是用带有双屏设置的Nvidia显卡吗?
如果是的话,我之前也遇到了同样的问题,并通过以下方法解决:先关闭电脑,拔掉第二个显示器的插头,重新开机,运行“sudo nvidia-settings”,再插上第二个显示器的插头,在Nvidia图形界面中运行“检测显示器”,在保存设置之前进行必要的配置。重要的一点是,你希望登录界面显示在哪个屏幕上,需要将其设置为“屏幕编号:0”。
在我的情况下,如果在运行“nvidia-settings”之前保持第二个显示器插着,它会以某种原因成为屏幕0,但是如果在之后插上它,问题就会解决。

是的,我在TwinView模式下使用Nvidia显卡。在这种模式下,每个屏幕都是屏幕0。所以拔掉插头也没有帮助。 - Kirill V. Lyadvinsky
好的,对于TwinView我没有任何经验,很抱歉无法提供更多帮助。 - spinoza666
我必须启动nvidia-settings,进入X Server Display Configuration -> Save to X Configuration File -> Show preview -> 将所有内容复制粘贴到/etc/X11/xorg.conf.d/nvidia.conf中。 - undefined

旧的解决方案不起作用,因为gdm文件夹的名称已经改变。 以下是修复gdm在正确屏幕上显示问题的命令。
sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/monitors.xml

1在Debian 12上对我起作用。谢谢! - undefined

如果Twinview以与ATI Catalyst Control Center相同的方式进行操作,那么你可以通过编辑xorg.conf文件来实现。使用命令gksu gedit /etc/X11/xorg.conf即可打开该文件。
我的配置文件中相关部分如下所示:
Section "ServerLayout"
    Identifier     "amdcccle Layout"
    Screen      0  "amdcccle-Screen[1]-0" 0 0
    Screen         "amdcccle-Screen[1]-1" 1400 0
EndSection

只需做以下操作(在备份xorg.conf之后),即可更改ServerLayout,通过交换Screen条目(并调整屏幕编号)。在我的情况下,如下所示:
Section "ServerLayout"
    Identifier     "amdcccle Layout"
    Screen      0  "amdcccle-Screen[1]-1" 1400 0
    Screen         "amdcccle-Screen[1]-0" 0 0
EndSection

我在xorg.conf中只定义了一个屏幕,所以这没有帮助。 - Kirill V. Lyadvinsky
@Kirill:你能把插头换一下,然后在NVIDIA设置中调整屏幕顺序吗? - Tobias Kienzler
这没有帮助。鼠标总是出现在屏幕联合的中心位置,而中心位置总是在分辨率更高的监视器上。登录屏幕始终显示鼠标指针所在的位置。 - Kirill V. Lyadvinsky

您可以在NVIDIA X Server设置中尝试“分离X屏幕设置”。如果将所需显示器设置为0,则登录窗口将出现在那里。这对我很有效。

我试过这个,但每次以这种模式登录时,Gnome3都会崩溃。 - Kirill V. Lyadvinsky

我正在使用Ubuntu 22.04,对我来说这个链接有效。
在过去的几年里,只有复制目标路径发生了一点变化,从/var/lib/gdm/.config/变为/var/lib/gdm3/.config/
  1. 在设置中将设置更改为单屏模式→ 显示器
  2. monitors.xml文件从~/.config/monitors.xml复制到/var/lib/gdm3/.config/
  3. 重新启动您的计算机。
  4. 在设置中将设置更改回双屏模式→ 显示器
  5. 再次将monitors.xml文件从~/.config/monitors.xml复制到/var/lib/gdm3/.config/(否则第二个显示器会在启动时开关)。
就是这样。

尝试交换您显示器的左/右顺序,这不会改变哪个是主要显示器,但可能有助于使您的GDM显示出来。

没起作用。 - Kirill V. Lyadvinsky