不存储多台显示器的设置

JJD*_*JJD 7 display multiple-monitors laptop 12.04 system-settings

我正在运行 Ubuntu 12.04。在联想 Thinkpad T400 上。我连接了一个外部显示器作为第二个显示器。笔记本电脑位于外部屏幕下方。笔记本电脑的原始分辨率为 1440x900 (16:10),外接显示器为 1280x1024 (5:4)。有两个图形适配器:一个内部Intel GMA 4500 MHD和一个独立的ATI卡。目前,集成英特尔已启用。

我使用Displays应用程序来安排显示器的位置,使其看起来像这样:

所需的显示配置

问题:
每当我重新启动计算机时,配置就会丢失。首先,显示是镜像而不是扩展。我必须按Fn+F7两次才能切换到扩展模式。其次,显示设置仍然如下所示:

重启后显示配置

我知道这在我运行 Ubuntu 10.10 时曾经奏效过。我不知道从什么时候起它不起作用。你知道我如何永久存储设置吗?


有时当我启动 Ubuntu 并按Fn+ 时F7什么也没有发生。当我打开Displays I 并将外部屏幕放在上方并按下“应用”按钮时,没有任何反应。然后,大约一分钟后,设置突然应用。您知道是否有可以帮助分析行为的日志文件吗?

Ant*_*ony 3

您可以采取两种基本方法。第一个是利用randr,它允许您创建一个大型虚拟显示器,您可以在其中放置显示器。第二种是利用xinerama,它允许您拥有 2 个独立的 X 屏幕,它们将充当一个大显示器。我将在这里介绍这两个内容,您可以决定哪个更适合您的需求。


RandR - 调整大小和旋转

您可以使用XRandR动态启用双头

xrandr --output foo --above bar
Run Code Online (Sandbox Code Playgroud)

12.04 存储库中还有一个名为arandr的 GUI 前端,但您似乎需要更静态的配置。

它可以像创建/etc/X11/xorg.conf.d/10-monitor.conf一样简单,内容如下:

Section "Monitor"
  Identifier     "Monitor0"
EndSection

Section "Monitor"
  Identifier     "Monitor1"
  Option         "Above" "Monitor0" 
EndSection
Run Code Online (Sandbox Code Playgroud)

此方法意味着randr设置。如果将xrandr与不同分辨率的显示器一起使用,会有一些明显的缺点。窗口可能放置不当,一个屏幕上可能有黑色区域等。

当您在没有命令行选项的情况下运行xrandr时,您可以找到需要在10-monitor.conf中使用的标识符。然后重新启动 Ubuntu 以查看设置是否已加载。



Xinerama 要启用 xinerama,您需要修改/etc/X11/xorg.conf

Section "ServerFlags"
  Option    "Xinerama" "true"
EndSection
Run Code Online (Sandbox Code Playgroud)

它可能就这么简单,因为 X 非常擅长根据硬件检测自动配置事物。但是,如果简单地打开xinerama扩展无法提供您想要的功能,您可以选择完全配置 X 以使用xinerama。有几种方法可以配置 X。您可以在/etc/X11/xorg.conf.d/中有多个文件,一些用于您的显示器,一些用于设备等。我将介绍一个xorg.conf文件,该文件包含使用我当前设置的修改版本的所有设置。

Section "ServerLayout"
    Identifier     "DualHead"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" Above "Screen0"
    Option         "Xinerama" "1"                # You can specify xinerama here
EndSection

Section "Device"
    Identifier     "Device0"                     # A Device section for each monitor
    Driver         "nvidia"                      # Specify the driver to use
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GT 430"
    BusID          "PCI:1:0:0"                   # Use lspci | grep VGA to find BusID
    Screen          0                            # Do note the screen number
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GT 430"
    BusID          "PCI:1:0:0"
    Screen          1                            # Do note the screen number
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Gateway HX2000"
    HorizSync       31.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 1907FPV"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
EndSection
Run Code Online (Sandbox Code Playgroud)

显然,您需要修改它以适应您的硬件,但基本框架已经为您准备好了。

请注意,我最近读到英特尔可能存在xinerama问题。您可能会发现自己需要使用独立显卡。


小智 1

我不确定这是否有效,但值得一试:禁用英特尔;启用ati;安装专有的 ati/amd 驱动程序;按照您想要的方式配置双显示器桌面;验证 AMD Catalyst 软件中的配置 (admin);检查您的设置现在是否持久。我有一台台式机,但使用催化剂工具是我能够保持双显示器设置持久的唯一方法。