aboutsummaryrefslogtreecommitdiff
path: root/index.html
blob: ba4d0fa81bfc057bf104d8616e4d55f14c19db71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<h1>drm</h1>
<p><a href="../plain/drm.exe">[download latest version]</a><br></p><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="../plain/menu.png?h=readme" alt="Screenshot of" 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 800x600 to 640x480.<br>
</p>
<img src="../plain/800x600.png?h=readme" alt="Two windows side by side in 800x600." height="300" width="400"><img src="../plain/640x480.png?h=readme" alt="The same two" 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.<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>, 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="http://john.ankarstrom.se/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>