Can I sleep one of the displays on a multi-monitor setup?

Press Windows + P - you will be prompted to choose your display mode from single, extend, etc and so can be used to disable your secondary monitor.

I see you wanted to keep your open windows; this still keeps them open, but it does bring them all to one display if you enable single monitor mode. However at least this approach will let you shut down the second glowing distraction when it is not in use.


This post is a bit old but I ran into a similar issue. I can turn on my PC/media player/lights remotely but my 27" computer display throws a distracting glow across the room. In order to maximize my laziness I created a simple Java app to blacken the display (which I can launch remotely using other tools).

Below is the java code that I have tested on Windows 7. It takes a single argument 0 to max display-1. For example: java -jar Dimmer.jar 1 will blacken my second monitor, no arguments will assume display 0

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JWindow;
import javax.swing.UIManager;

public class Dimmer extends JWindow
{
   private static final long serialVersionUID = 3493635987367217622L;

   private final int _screen;

   public Dimmer ()
   {
      this(0);
   }

   public Dimmer (int screen)
   {
      super();
      _screen = screen;

      {
         final JButton button = new JButton("click to exit");
         button.setForeground(Color.gray);
         button.setOpaque(false);
         button.setContentAreaFilled(false);
         button.setBorder(BorderFactory.createEmptyBorder());
         button.addActionListener(new ActionListener()
         {
            @Override
            public void actionPerformed(ActionEvent arg0)
            {
               System.exit(0);
            }
         });
         add(button, BorderLayout.CENTER);
      }
      setAlwaysOnTop(true);
   }

   public void begin()
   {
      GraphicsDevice gda[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
      GraphicsDevice gd = gda[_screen];
      getContentPane().setBackground(Color.black);

      for (GraphicsDevice gdTmp : gda)
      {
         System.out.print( (gd == gdTmp) ? "->" : "  ");
         System.out.println( 
                "Screen(" + gdTmp.getDefaultConfiguration().getDevice().getIDstring() +")"
                +" "+ gdTmp.getDefaultConfiguration().getBounds() );
      }

      Rectangle bounds = gd.getDefaultConfiguration().getBounds();
      setLocation(bounds.getLocation());
      setSize(bounds.getSize());

      validate();
      setVisible(true);
   }

   /**
    * @param args
    * @throws Exception 
    */
   public static void main(String[] args) throws Exception
   {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      Dimmer dimmer = new Dimmer(args.length == 1 ? Integer.valueOf(args[0]) : 0);
      dimmer.begin();
   }

}

Another option is the Nirsoft Multi Monitor tool: http://www.nirsoft.net/utils/multi_monitor_tool.html

You could create two batch files - one to disable display X, the other to enable. For example:

MultiMonitorTool.exe /disable 5

and

MultiMonitorTool.exe /enable 5

To find the display numbers open up MultiMonitorTool.exe, right click on the display, and visit properties.