Rotate just one monitor with Ubuntu/Nvidia

I took some time this week to figure out how to rotate just my Dell 2005FPW in an Ubuntu dual-monitor setup. The graphics card is an Nvidia GeForce 6200 LE, and I'm v180.44 of the proprietary binary drivers.

This gives you an idea of the setup I was going for, where the red monitor is the primary, and the blue monitor is the rotated secondary.

While I had been happily using Nvidia TwinView, I found that rotating just one of the monitors was impossible in this mode, due to the entire desktop being a single X screen. Instead, I switched to "Separate X screens", and then invoke the "Rotate" option on one of them.

I also had to use Xinerama, which is an X extension that allows multiple X screens to operate as a single screen, allowing you to share windows, a task bar and a background between them.

Here is the xorg.conf file I ended up with. Most of it was generated from the Nvidia config tool, but then I tweaked it by hand a little.


Section "ServerLayout"
    Identifier     "Default Layout"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    ...
    Option    "Xinerama" "true"
EndSection

...

Section "Monitor"
    Identifier     "Configured Monitor"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Samsung SyncMaster"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 75.0
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 2005FPW"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
EndSection

Section "Device"
    Identifier     "Configured Video Device"
    Driver         "nvidia"
    Option         "UseFBDev" "true"
    Option         "NoLogo" "True"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:1:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:1:0:0"
    Screen          1
    Option          "Rotate" "left"
EndSection

Section "Screen"
    Identifier     "Default Screen"
    Device         "Configured Video Device"
    Monitor        "Configured Monitor"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "TwinViewXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "DFP: 1680x1050 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinViewXineramaInfoOrder" "DFP-0"
    Option         "TwinView" "0"
    Option         "metamodes" "CRT: 1680x1050 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Voila! I can view web pages and edit code in 16:9 vertical, while doing everything else in 16:9 horizontal.



I'm currently working at NerdWallet, a startup in San Francisco trying to bring clarity to all of life's financial decisions. We're hiring like crazy. Hit me up on Twitter, I would love to talk.

Follow @chase_seibert on Twitter