blob: 8ae50f71884aec86c574a7f8d45c19135b03ec29 (
plain) (
blame)
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
|
<?php
$title = "Forget autorandr, Automate Display Switching with devd(8) on FreeBSD";
if (isset($early) && $early) {
return;
}
include($_SERVER['DOCUMENT_ROOT'] . '/includes/head.php');
?>
<p class="description">
<a href="https://github.com/phillipberndt/autorandr"><code>autorandr</code></a> and <a href="https://github.com/libthinkpad/dockd"><code>dockd</code></a> have been around for a while. Both let you automatically switch to or from external displays when your laptop is plugged into a hub or hooked up to a docking station. But those are largely Linux- and Thinkpad-centric solutions. Let's do it the FreeBSD way.
</p>
<p>
Here are my requirements. I have an E-series Dell laptop with a docking station. My docking station is hooked up to one large Dell monitor. When the laptop is attached to the docking station, I want...
</p>
<ol>
<li>The laptop to use the larger, external monitor exclusively (no mirroring)</li>
<li>The default sound device to switch to the external monitor's speakers</li>
<li>Disable automatic locking via <code>xautolock(1)</code></li>
<li>Disable suspend on lid close</li>
</ol>
<p>When the laptop is removed from the docking station, I want...</p>
<ol>
<li>The laptop to switch to its internal display</li>
<li>The default sound device to switch back to the internal laptop speakers</li>
<li>Automatic locking to re-enable</li>
<li>Suspend on lid close to re-enable</li>
</ol>
<p>To do this we'll need the following:</p>
<ol>
<li><code>devd(8)</code> for launching userland applications when kernel events occur</li>
<li><code>xrandr(1)</code> for switching displays</li>
<li><code>xautolock(1)</code> for automatic locking</li>
<li><code>sysctl(8)</code> for changing hardware knobs</li>
<li>Some core utilities and a tiny shell script to bring it all together</li>
</ol>
|