drm / index.html 146 lines  6.95 kB  Raw
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>





  
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252"><title>drm – dynamic resolution manager</title>
    
    <style type="text/css">
    code, tt, pre, xmp { font-size: 0.8em; font-family: monospace, monospace; }
    </style></head><body>
    <h1 style="display: inline;">drm</h1>
    <a style="text-decoration: none;" href="../">&#8593;</a><br>
    <ul>
      <li><a href="src/1.4.3/drm.exe">Direct download</a></li>
      <li><a href="src/">All versions</a> (with source)<br>
      </li>
    </ul>
    <p>The Dynamic Resolution Manager, or DRM for short, is simple
      Windows program that resides in your tray. When right-clicked, it
      opens a menu, where you can choose a new resolution:</p><img src="menu2.png" alt="Screenshot of
        drm’s tray menu." style="margin: 0pt 1em 1em 0pt; float: left;" height="271" width="233">
<p style="width: 25em;"><small>(Don’t
worry about the font in the screenshot – it follows your system font.
It’s just that I personally happen to use Verdana as my system font.)</small>
</p>

<p style="clear: left;">The “dynamic” part – and the main selling
      point – is that the program <strong>retains the window layout
        across resolutions</strong>. For example, let’s say you have two
      windows side by side, together covering the entirety of the
      screen. When you switch to a lower resolution using drm, the
      windows will automatically be repositioned and resized to cover
      the exact same area; the full-screen side-by-side layout will be
      retained regardless of resolution. In other words, drm retains the
      <em>centimeter-measured</em> positions and sizes of all windows,
      rather than the pixel-measured.</p>
    <p style="clear: left;">The resizing and repositioning is
      instantaneous and invisible, and it applies to all windows, even
      those that are currently minimized. Below is an example, where the
      window layout is retained when switching from 800×600 to 640×480.<br>
    </p>
    <img src="800x600.png" alt="Two windows side by side in 800×600." height="300" width="400"><img src="640x480.png" alt="The same two
      windows side by side in 640×480." height="300" width="400"> <br>
    <h2>Configuration</h2>
    <p>drm is configured via a set of registry keys located in <tt>
        HKCU\Software\JohnAJ\DRM</tt>. They will be created
      automatically when the program is launched for the first time.<br>
    </p>
    <table border="1" cellpadding="2" cellspacing="2" width="100%">
      <thead> <tr>
          <td valign="top"><b>Key</b><b><br>
            </b> </td>
          <td valign="top"><b>Description</b><b><br>
            </b> </td>
          <td valign="top"><b>Example</b><b><br>
            </b></td>
        </tr>
      </thead> <tbody>
        <tr>
          <td valign="top"><i>Resolutions</i><i><br>
            </i> </td>
          <td valign="top">Set of custom resolutions. Since 1.4, refresh
            rates can optionally be specified.*<br>
          </td>
          <td valign="top"><tt>1600x1200&nbsp;75Hz|1024x768<br>
      </tt>
          </td>
        </tr>
        <tr>
          <td valign="top"><i>Ignore</i><i><br>
            </i> </td>
          <td valign="top">Set of programs whose window position and
            size should be ignored (1.2).**<br>
          </td>
          <td valign="top"><tt>explorer.exe|2kclient.exe<br>
      </tt>
          </td>
        </tr>
        <tr>
          <td valign="top"><i>IgnoreSize</i><i><br>
            </i> </td>
          <td valign="top">Set of programs whose window size should be
            ignored, but window position retained (1.2).<br>
          </td>
          <td valign="top"><tt>mpc-hc.exe|winamp.exe<br>
      </tt>
          </td>
        </tr>
      </tbody>
    </table>
    <p><small>* Resolutions are specified using the following notation:
        <tt>width "x" height [" " refresh rate "Hz"]</tt>, with the
        section enclosed in brackets being optional. Each resolution is
        then separated by a pipe (<tt>|</tt>) character. Since 1.4.1,
        two pipe characters in a row (<tt>||</tt>) are rendered as a
        separator in the menu.<br>
        ** These windows will still be repositioned and resized, but
        always to their original pixel-measured position and size. (As
        such, it will still behave differently from Windows’ normal
        operation, which is to shrink windows that don’t fit on screen.)</small>
    </p>
    <p>To quickly open the configuration in Registry Editor, click the <i>Configure…</i>
      menu option. Note that you must restart drm in order for any
      configuration changes to be applied. To easily restart drm, hold Shift while opening the menu, which replaces the <i>Exit</i> option with a <i>Restart</i> option.<br>
</p>
    <h3>Advanced configuration</h3>
    <p>If you want to customize the handling of specific windows
      further, use the non-compiled version of drm, <i>drm.ahk</i> (<a href=".">browse versions</a>), which you can easily modify
      yourself. Note that this requires <a href="https://www.autohotkey.com/">AutoHotKey</a> to be
      installed on your system.<br>
    </p>
    <p>Since version 1.3.2, <i>drm.ahk</i> includes a designated place
      (around line 196, as of 1.4.2) where you can write your own custom rules. The
      included example, shown below, would instruct drm to ignore the
      size, but retain the position, of any window of the <i>mpc-hc.exe</i>
      process with a client width of 294 pixels:<br>
    </p>
    <pre>; Custom rules<br><br>; Example:<br>; if (exe = "mpc-hc.exe" and cw = 294)<br>;   DoIgnoreSize := true<br></pre>
    <p>Code in this section of the program is run once for every window,
      whenever drm initiates a resolution change. You can easily control
      how drm should handle a specific window by setting one of the
      variables <i>DoIgnore</i> and <i>DoIgnoreSize</i> to true. This
      is equivalent to adding the program to the <i>Ignore</i> or <i>IgnoreSize</i>
      registry key.</p>
    <p>This approach, while more powerful than the registry-based
      configuration, requires some knowledge of AutoHotKey, some
      understanding of drm’s source code (which, however, is relatively
      simple) and, finally, a slightly more manual update process,
      should a new version of drm be released.<br>
    </p>
    <h2>Other information<br>
    </h2>
    <ul>
      <li>Currently, drm is untested in combination with multiple
        monitors and is not programmed with multiple monitors in mind.</li>
      <li>If you want to use drm, I recommend disabling NVIDEA’s nView
        Desktop Manager, which has a tendency to interfere with it.</li>
    </ul>
    <p>If you have any other issues or feature requests, feel free to <a href="../../about.html#contact">contact me</a> or to modify the
      source code yourself. If you add a feature or fix a bug yourself,
      please share it!<br>
    </p>
  </body></html>