<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Matt [Danger] &#187; display brightness</title>
	<atom:link href="http://mattdanger.net/tag/display-brightness/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattdanger.net</link>
	<description>One step closer to world domination</description>
	<lastBuildDate>Fri, 02 Dec 2011 18:20:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Adjust Mac OS X display brightness from the Terminal</title>
		<link>http://mattdanger.net/2008/12/adjust-mac-os-x-display-brightness-from-the-terminal/</link>
		<comments>http://mattdanger.net/2008/12/adjust-mac-os-x-display-brightness-from-the-terminal/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 20:24:16 +0000</pubDate>
		<dc:creator>Matt Danger</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[display brightness]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://mattdanger.net/?p=73</guid>
		<description><![CDATA[One of the classrooms I maintain is comprised of 2.4Ghz iMacs (MB323LL/A) that are dual booted with Windows XP and Mac OS X. Sometimes when the workstations are restarted from XP to OS X the display brightness gets changed to its dim power saver setting. This requires the user manually increase the display brightness by pressing the&#8230;]]></description>
			<content:encoded><![CDATA[<p>One of the classrooms I maintain is comprised of 2.4Ghz iMacs (MB323LL/A) that are dual booted with Windows XP and Mac OS X. Sometimes when the workstations are restarted from XP to OS X the display brightness gets changed to its dim power saver setting. This requires the user manually increase the display brightness by pressing the F2 key, which is inconvenient. I haven&#8217;t been able to determine the cause of this issue so I wanted to create a login hook to increases the brightness as a temporary fix.</p>
<p>OS X doesn&#8217;t ship with a command line utility that let&#8217;s you change display brightness. Fortunately, <a href="http://njr.sabi.net/">Nicholas Riley</a> has <a href="http://dev.sabi.net/svn/dev/trunk/LocationDo/brightness.c">written a utility</a> that uses OS X frameworks to accomplish this quickly and easily. Here&#8217;s the code:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;stdio.h&gt;</span>
<span style="color: #339900;">#include &lt;unistd.h&gt;</span>
<span style="color: #339900;">#include &lt;IOKit/graphics/IOGraphicsLib.h&gt;</span>
<span style="color: #339900;">#include &lt;ApplicationServices/ApplicationServices.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> kMaxDisplays <span style="color: #000080;">=</span> <span style="color: #0000dd;">16</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> CFStringRef kDisplayBrightness <span style="color: #000080;">=</span> CFSTR<span style="color: #008000;">&#40;</span>kIODisplayBrightnessKey<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>APP_NAME<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> errexit<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>fmt, ...<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">va_list</span> ap<span style="color: #008080;">;</span>
  <span style="color: #0000dd;">va_start</span><span style="color: #008000;">&#40;</span>ap, fmt<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>, <span style="color: #FF0000;">&quot;%s: &quot;</span>, APP_NAME<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">vfprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>, fmt, ap<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>, <span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
  <span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>, <span style="color: #FF0000;">&quot;usage: %s [-m|-d display] [-v] &lt;brightness&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, APP_NAME<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>, <span style="color: #FF0000;">&quot;   or: %s -l [-v]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, APP_NAME<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span> <span style="color: #0000ff;">const</span> argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
  APP_NAME <span style="color: #000080;">=</span> argv<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>argc <span style="color: #000080;">==</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">int</span> verbose <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> displayToSet <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">enum</span> <span style="color: #008000;">&#123;</span> ACTION_LIST, ACTION_SET_ALL, ACTION_SET_ONE <span style="color: #008000;">&#125;</span> action <span style="color: #000080;">=</span> ACTION_SET_ALL<span style="color: #008080;">;</span>
  <span style="color: #0000ff;">extern</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>optarg<span style="color: #008080;">;</span>
  <span style="color: #0000ff;">extern</span> <span style="color: #0000ff;">int</span> optind<span style="color: #008080;">;</span>
  <span style="color: #0000ff;">int</span> ch<span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span>ch <span style="color: #000080;">=</span> getopt<span style="color: #008000;">&#40;</span>argc, argv, <span style="color: #FF0000;">&quot;lmvd:&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">switch</span> <span style="color: #008000;">&#40;</span>ch<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'l'</span><span style="color: #008080;">:</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>action <span style="color: #000080;">==</span> ACTION_SET_ONE<span style="color: #008000;">&#41;</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      action <span style="color: #000080;">=</span> ACTION_LIST<span style="color: #008080;">;</span>
      <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'v'</span><span style="color: #008080;">:</span>
      verbose <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'m'</span><span style="color: #008080;">:</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>action <span style="color: #000040;">!</span><span style="color: #000080;">=</span> ACTION_SET_ALL<span style="color: #008000;">&#41;</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      action <span style="color: #000080;">=</span> ACTION_SET_ONE<span style="color: #008080;">;</span>
      displayToSet <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span><span style="color: #008000;">&#41;</span>CGMainDisplayID<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'d'</span><span style="color: #008080;">:</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>action <span style="color: #000040;">!</span><span style="color: #000080;">=</span> ACTION_SET_ALL<span style="color: #008000;">&#41;</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      action <span style="color: #000080;">=</span> ACTION_SET_ONE<span style="color: #008080;">;</span>
      <span style="color: #0000ff;">errno</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
      displayToSet <span style="color: #000080;">=</span> <span style="color: #0000dd;">strtoul</span><span style="color: #008000;">&#40;</span>optarg, <span style="color: #0000ff;">NULL</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">errno</span> <span style="color: #000080;">==</span> EINVAL <span style="color: #000040;">||</span> <span style="color: #0000ff;">errno</span> <span style="color: #000080;">==</span> <span style="color: #0000ff;">ERANGE</span><span style="color: #008000;">&#41;</span>
	errexit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;display must be an integer index (0) or a hexadecimal ID (0x4270a80)&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">default</span><span style="color: #008080;">:</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  argc <span style="color: #000040;">-</span><span style="color: #000080;">=</span> optind<span style="color: #008080;">;</span>
  argv <span style="color: #000040;">+</span><span style="color: #000080;">=</span> optind<span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">float</span> brightness<span style="color: #008080;">;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>action <span style="color: #000080;">==</span> ACTION_LIST<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>argc <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>argc <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">errno</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    brightness <span style="color: #000080;">=</span> strtof<span style="color: #008000;">&#40;</span>argv<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">errno</span> <span style="color: #000080;">==</span> <span style="color: #0000ff;">ERANGE</span><span style="color: #008000;">&#41;</span>
      usage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>brightness <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> brightness <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
      errexit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;brightness must be between 0 and 1&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  CGDirectDisplayID display<span style="color: #008000;">&#91;</span>kMaxDisplays<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
  CGDisplayCount numDisplays<span style="color: #008080;">;</span>
  CGDisplayErr err<span style="color: #008080;">;</span>
  err <span style="color: #000080;">=</span> CGGetActiveDisplayList<span style="color: #008000;">&#40;</span>kMaxDisplays, display, <span style="color: #000040;">&amp;</span>numDisplays<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>err <span style="color: #000040;">!</span><span style="color: #000080;">=</span> CGDisplayNoErr<span style="color: #008000;">&#41;</span>
    errexit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cannot get list of displays (error %d)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, err<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  CFWriteStreamRef stdoutStream <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>verbose<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    CFURLRef devStdout <span style="color: #000080;">=</span>
      CFURLCreateWithFileSystemPath<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">NULL</span>, CFSTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;/dev/stdout&quot;</span><span style="color: #008000;">&#41;</span>,
				    kCFURLPOSIXPathStyle, <span style="color: #0000ff;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    stdoutStream <span style="color: #000080;">=</span> CFWriteStreamCreateWithFile<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">NULL</span>, devStdout<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>stdoutStream <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
      errexit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cannot create CFWriteStream for /dev/stdout&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>CFWriteStreamOpen<span style="color: #008000;">&#40;</span>stdoutStream<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
      errexit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cannot open CFWriteStream for /dev/stdout&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>								  
&nbsp;
  <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>CGDisplayCount i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> numDisplays<span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    CGDirectDisplayID dspy <span style="color: #000080;">=</span> display<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    CFDictionaryRef originalMode <span style="color: #000080;">=</span> CGDisplayCurrentMode<span style="color: #008000;">&#40;</span>dspy<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>originalMode <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
      <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>action <span style="color: #000080;">==</span> ACTION_LIST<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
      <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;display %d: &quot;</span>, i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>CGMainDisplayID<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> dspy<span style="color: #008000;">&#41;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;main display, &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;ID 0x%x<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span>dspy<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>verbose<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	CFStringRef error <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
	CFPropertyListWriteToStream<span style="color: #008000;">&#40;</span>originalMode, stdoutStream,
				    kCFPropertyListXMLFormat_v1_0, <span style="color: #000040;">&amp;</span>error<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>error <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
	  errexit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;failed to write display info (%s)&quot;</span>,
		  CFStringGetCStringPtr<span style="color: #008000;">&#40;</span>error,
					CFStringGetFastestEncoding<span style="color: #008000;">&#40;</span>error<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    io_service_t service <span style="color: #000080;">=</span> CGDisplayIOServicePort<span style="color: #008000;">&#40;</span>dspy<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">switch</span> <span style="color: #008000;">&#40;</span>action<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">case</span> ACTION_SET_ONE<span style="color: #008080;">:</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>CGDirectDisplayID<span style="color: #008000;">&#41;</span>displayToSet <span style="color: #000040;">!</span><span style="color: #000080;">=</span> dspy <span style="color: #000040;">&amp;&amp;</span> displayToSet <span style="color: #000040;">!</span><span style="color: #000080;">=</span> i<span style="color: #008000;">&#41;</span>
	<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> ACTION_SET_ALL<span style="color: #008080;">:</span>
      err <span style="color: #000080;">=</span> IODisplaySetFloatParameter<span style="color: #008000;">&#40;</span>service, kNilOptions, kDisplayBrightness,
				       brightness<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>err <span style="color: #000040;">!</span><span style="color: #000080;">=</span> kIOReturnSuccess<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>,
		<span style="color: #FF0000;">&quot;%s: failed to set brightness of display 0x%x (error %d)&quot;</span>,
		APP_NAME, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span>dspy, err<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>verbose<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> ACTION_LIST<span style="color: #008080;">:</span>
      err <span style="color: #000080;">=</span> IODisplayGetFloatParameter<span style="color: #008000;">&#40;</span>service, kNilOptions, kDisplayBrightness,
				       <span style="color: #000040;">&amp;</span>brightness<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>err <span style="color: #000040;">!</span><span style="color: #000080;">=</span> kIOReturnSuccess<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">stderr</span>,
		<span style="color: #FF0000;">&quot;%s: failed to get brightness of display 0x%x (error %d)&quot;</span>,
		APP_NAME, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span>dspy, err<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
      <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;display %d: brightness %f<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, i, brightness<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>You can compile your own utility by saving this code to a file named brightness.c and doing:</p>
<p><code>gcc -std=c99 -o brightness brightness.c -framework IOKit -framework ApplicationServices</code></p>
<p>You can also download the <a href="http://mattdanger.net/portfolio/utilities/brightness.tar.gz">precompiled binary</a>.</p>
<p>You can create a login hook to automatically increase the brightness by chmoding the downloaded &#8216;brightness&#8217; file to 755 and running the following command as root in Terminal:</p>
<p><code>defaults write com.apple.loginwindow LoginHook "/path/to/brightness 1"</code></p>
]]></content:encoded>
			<wfw:commentRss>http://mattdanger.net/2008/12/adjust-mac-os-x-display-brightness-from-the-terminal/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

