Oct 1 2008

Dual Monitor Madness Part 1

Over the course of the last couple of weeks, I’ve been working on a few projects and writing a ton of code.  It was during one of my breaks — an increasingly rare occurrence these days — that I realized that I wasn’t taking advantage of the real estate that my dual monitors provide.

Back when I was solely using Windows XP as my operating system of choice, I frequently would change my monitor configurations from portrait to landscape depending on which display orientation was best suited for the task at hand.  Yet, during the entire time I’ve been using Linux, Ubuntu more specifically, it’s never crossed my mind to try to rig up a similar setup until now.

What’s Wrong With My Current Setup?

During the last year or so that I’ve been using Ubuntu, I’ve been primarily using my monitors as one large widescreen display.  This setup has worked well for the most part, and one of its chief benefits is being able to move windows between the two screens.  However, since the X Windows system treats both monitors as one large display, I’ve ran into my share of problems here and there using some media applications.  Applications such as vlc, mplayer, movie player, and kino segfault and crash when attempting to resize them or crash when loading media files that automatically call for a resize.  It seems that these applications and the X system don’t interact well when working with large and irregular workspaces.  This is part of the motivation behind me wanting to set up multiple monitor configurations.  I simply miss watching movies while coding or drawing.

Is  Manually Configuring Monitor Setups Necessary?

There are many ways to accomplish various monitor configurations in linux.  I found the best method for my purposes was using multiple xorg.conf files and employing a combination of options such as Xinerama, RANDR, and NVIDIA’s Twinview.  I have automated the process somewhat using scripts both during runtime and during the booting process to give myself maximum flexibility.

At the moment, other than RANDR (the X Windows Resize And Rotate extension protocol for dynamically changing displays), I don’t believe that there is any support for switching monitor display configurations in realtime without restarting the X server.  I use the RANDR options in some of my xorg.conf files but couldn’t get it to work quite right in the terminal for realtime changes.  However, I really don’t need realtime display changes; although it would be a nice feature to have, restarting X and cleaning up a few details is plenty fast for me.  Other options would be to use multiple xsessions and/or different window managers.  But those are topics for other articles.

New versions of the X windows system have just been released by the Xorg Foundation and are slated to be included in the next version of Ubuntu being released at the end of October.  As the X system gets better and linux as a whole improves, the need for manually configuring monitor setups is increasingly diminishing and may eventually become obsolete.  However that time has not arrived yet — at least not for me.  And since I’m knee-deep in projects, I probably won’t be fully configuring my system with the new version of Ubuntu, Intrepid, until I get some down time during the holidays.  Only then will I be able to assess  whether I experience any improvements in my system on this front.  I’m not expecting any 360 changes.

A Closer Look At My System

Before diving into all the technical details of my monitor configurations,  I feel that it is important that I at least provide some of my system specs as any configuration is highly dependent on the hardware that is used.

My Setup:

  • Operating System: Ubuntu Hardy 8.04 64-Bit
  • Monitor 1: Dell 24″ Wide-Flat Panel (Digital)
  • Monitor 2: Acer 19″ Wide-Flat Panel (Analog)
  • Graphics Cards: 2 NVIDIA GeForce 6600 LE cards running in SLI bridge mode
  • System Memory: 4GB
  • Processor: AMD 64 Processor Running at approximately 3GHz
  • Graphics Driver: I use the latest restricted nvidia drivers
  • Rotating Display Arms: I ditched the display stands that came with my monitors long ago in favor of adjustable display arms that mount to my desk.  This makes rotating and adjusting them a breeze.

A Look At My Display Modes

After assessing the options available for my system, the first order of business was to decide how many different monitor configurations I wanted.  After some contemplation, I settled on six.  Here’s a preview of each of them.

  1. Wide-Span: This is my current configuration and is particularly good for drawing and design work.  Both screens are in landscape mode and windows can be moved between the two of them.

  2. Wide-Separate: In this configuration the monitors will both be in widescreen mode; however, the displays are independent of each other.  Each one has its own set of workspaces and windows can’t be moved between the two screens.  This makes it very easy to draw on one screen while using the other to watch a movie or surf the net.

  3. Code-Span: I find widescreens very inefficient for any substantial coding.  So this configuration puts both monitors in vertical (landscape) mode while still allowing windows to be freely moved between the two.

  4. Code-Separate: The monitors are in the same positions as in Code-Span, however each monitor is independent of the other.  I don’t find myself needing to move windows between screens much when coding, so this is my favorite configuration.

  5. Draw-Code: In this configuration, the larger screen is in landscape mode and the smaller display is in portrait mode.  Both screens are independent of each other.  I like using Gimp on the widescreen and checking XHTML, CSS, and PHP in portrait mode.

  6. Code-Draw: This is my second favorite mode.  On days when the coding is not so intense, I like to code or write on the larger display while watching a movie on the smaller one.  The large display is in portrait mode and the smaller one is in landscape mode.  Again, both displays are independent of each other.

Summary

I’ve provided an overview of my motivations behind wanting to have a variety of monitor configurations available to me as well as closer look at my system specs and the 6 display modes I want to support.  Also, I’ve touched on my chosen implementation method.  In the coming articles I will flesh out in greater technical detail my exact configurations, the scripts I have automating the process, and expose some of the quirks and problems I encountered during the process.

Kim Jackson

Related Articles

Subscribe To HighTechSister.com

1 Comments on this post

Trackbacks

  1. Cleaning Tips said:

    Nice and usefull post, thanks, this is one for my bookmarks!

    December 1st, 2008 at 6:22 pm

LEAVE A COMMENT

Subscribe Form

Subscribe to Blog