Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

Adjust brightness from Terminal UNIX
I've searched for a way to control the display brightness from the command line. I found several AppleScripts that open the System Preferences panel and set the slider, but I wanted a pure command line tool. Maybe someone else is looking for the same solution, so here is what I found:

This blog post discusses has a small commandline tool (written by Nicholas Riley) to set the brightness from Terminal. Just download the binary [4KB] and install it. You can then set the brightness by typing brightness 0 (to set it to minimum, use 1 for maximum, or any value between).

Note: The binary is Intel-Only (32-Bit), but the source code is available on the above linked page too, so you could easily compile a PowerPC or 64Bit Intel Binary on your own. I've tested it only with Snow Leopard and a self-compiled 64Bit binary, and it works fine
    •    
  • Currently 3.08 / 5
  You rated: 4 / 5 (12 votes cast)
 
[26,947 views]  

Adjust brightness from Terminal | 18 comments | Create New Account
Click here to return to the 'Adjust brightness from Terminal' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
Adjust brightness from Terminal
Authored by: billearl on Sep 14, '09 12:21:02PM

For the uninitiated such as myself, PowerPC and 64Bit binaries, along with their installation location, would be useful. Thanks.



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: sabi on Sep 14, '09 01:07:05PM
I'm the original author of the code listed in this hint. I originally wrote it for two reasons: first, to adjust brightness automatically by location on my iBook G4, which had no ambient light sensor, and second, so I could have my laptop turn on the backlight when a long operation finished, providing a quiet form of notification I could use while at a seminar.

http://sabi.net/nriley/software/brightness.zip is 4-way universal, 10.5+. I compiled it under 10.6 with:


gcc-4.0 -arch i386 -arch x86_64 -arch ppc -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.5.sdk \
-mmacosx-version-min=10.5 -std=c99 -o brightness \
-framework Cocoa -framework DisplayServices \
-F/Developer/SDKs/MacOSX10.5.sdk/System/Library/PrivateFrameworks brightness.m
(note that if you compile it with the 10.6 SDK you'll get a deprecation warning; it's harmless for now.)

[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: billearl on Sep 15, '09 08:01:30PM

Thanks for this!

Just copied it to /usr/local/bin on my iBook G4 and it works great.



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: aGr[j5(6WU on Oct 01, '12 05:10:30PM
Does this work on Mountain Lion? I've just downloaded it, unzipped and run it and get the following:
dyld: Symbol not found: _OBJC_CLASS_$_O3Manager
  Referenced from: /Users/<username>/Downloads/brightness
  Expected in: /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
 in /Users/<username>/Downloads/brightness
Trace/BPT trap: 5
Mountain Lion 10.8.2 on a MacBook Pro

[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: spencermefford on Jun 08, '13 11:03:58AM

You'll need to recompile it to work on Mountain Lion, but it's really easy. First, grab the source from http://dev.sabi.net/svn/dev/trunk/LocationDo/brightness.c and save it somewhere on your computer. Pop open terminal and run the following command from the same directory as brightness.c:

gcc -std=c99 -o brightness brightness.c -framework IOKit -framework ApplicationServices

You must have XCode installed to run this, and it worked like a charm for me. Move to /usr/local/bin and make sure it has the correct permissions. Hope this is helpful.



[ Reply to This | # ]
64-bit
Authored by: bankshot on Sep 16, '09 09:10:42AM

I guarantee that 64-bit won't gain you anything at all in this case over 32-bit running on Intel. This is such a small and simple application that there's no benefit whatsoever to going beyond 32-bit, even on a system running all 64-bit stuff otherwise. Well, maybe a tiny psychological advantage for those who absolutely can't stand to have their system "polluted" by 32-bit stuff, but certainly no real-world advantage. ;)

That said, many thanks to the original author and to the hint submitter for calling attention to it! This program gives me a great idea to simulate an intermittent screen problem in my custom anti-theft script for my MacBook. Can't wait to try it out.



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: corienti on Sep 14, '09 02:32:34PM

Absolutely brilliant! Thankyou!



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: luomat on Sep 14, '09 03:35:07PM

There are instructions to compile this on the linked page.

The only problem I found is that it only dims the screen of the main display, not a second display hooked to a laptop.



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: BobHarris on Sep 14, '09 08:20:33PM
The original brightness.c had a -d (display) option. I've been using this program for about 1/2 a year now and it works very nicely. The usage is something like:
usage: brightness [-m|-d display] [-v] 
   or: brightness -l [-v]

       -l   - Display current setting
       -d n - Use Display n (0, 1, 2, ...)
       -m   - Use the Main Display
       -v   - verbose

       0.0 to 1.0 - set the brightness from off to max
       brightness 1    # Full brightness
       brightness 0.5  # Half brightness
       brightness 0    # Display off


[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: mario_grgic on Sep 15, '09 03:16:54PM

This only works on my aluminum macbook, and iMac, it does not work on my mac pro with 30'' ACD.



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: sabi on Sep 15, '09 07:32:22PM
Yeah, unfortunately Apple doesn't have a documented way of controlling brightness over USB. The documented method only works with built-in and ADC displays.

Use the version I linked above (http://sabi.net/nriley/software/brightness.zip) instead; it uses the same method as the Displays preference pane does.

[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: mael on Dec 19, '09 04:37:43AM

-=*Brilliant*=-
THANK YOU!



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: dcottle on Nov 30, '10 08:48:39AM

Likewise, I've been searching high and low for a pure command line (the scripts for System Prefs is too slow). Thanks!



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: efreed on Dec 09, '10 09:57:03AM
This is the only way I could find to program brightness up/down into my Microsoft Ergonomic 4000 keyboard. I was able to write an application to do brightness up (and a separate app for brightness down)

Here's how to make the mac brightness-up app:

Save the brightness file to Macintosh HD/Library
Open AppleScript and enter this code
do shell script "/Library/brightness -l"
set lev to result's last word
set lev to lev + 0.05
do shell script "/Library/brightness " & lev

Go to File > Save As... (remember to select "Application" from the File format selection)

Then I set a programmable key on my keyboard to run this application I just saved.
Repeat process with a "- 0.05" in the script to make a brightness down app.

[ Reply to This | # ]

Adjust brightness from Terminal
Authored by: lvs1974 on Jun 04, '12 03:55:46AM

Hey to all!

Could you possibly help me with a script?

I have a problem in string "set lev to lev + 0.05":
AppleScript interpretator can't convert lev to number.



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: efreed on Jun 04, '12 08:35:19AM

You'll need to download the "brightness" file (link given in this original hint) and have the file path in the first and last line point to it.

Come to think of it, I actually downloaded the brightness file to my user's Library folder (It's a bit easier to get to using Finder)

So here's my BrightnessDown.scpt for example:

do shell script "/Users/Myname/Library/brightness -l"
set lev to result's last word
set lev to lev - 0.05
do shell script "/Users/Myname/Library/brightness " & lev

As a troubleshooting step, open terminal and enter in the commands as a test.

When I enter this in terminal:
/Users/Myname/Library/brightness -l
I get this: (which tells me I have the script downloaded and the command right)
display 0: main display, ID 0x42735c0
display 0: brightness 0.468750



[ Reply to This | # ]
Adjust brightness from Terminal
Authored by: hasole on Jan 27, '11 01:04:27PM

Great tip, I've been looking for something like this for a long time.

Now to get it to do it based on power source, i.e

Battery = 0.5
Ac = 1



[ Reply to This | # ]
Adjust brightness from Terminal Applescript
Authored by: Leimking on Jul 26, '12 01:39:50AM
Hey, based on this great tool, this blog (http://www.mikerapin.com/blog/?p=73) and some forums I made an Applescript that stores the current brightness in a hidden file, set it to 0 and back if executed again. All without slow, nasty GUI scripting. So you can use it with Spark or something as shortcut! Here it is:

-- adjust path to User Directory, file will be hidden
set logfilepath to ("/Users/???/.brightness--.txt" as Unicode text)

-- does the log file already exist?
try
set logfilealias to logfilepath as alias
set logfileexists to true
on error
set logfileexists to false
end try

try
set AppleScript's text item delimiters to "brightness "
do shell script "/bin/brightness -l"
-- get first number after word "brightness" so its safe if multiple displays
set brightness to (words 1 thru 1 of (text item 2 of result)) as real
end try


if brightness as number is greater than 0 then

try
do shell script "/bin/brightness 0"
writeTo(logfilepath, brightness, text, false)
end try

else
try
set brightness to readFile(logfilepath)
do shell script "/bin/brightness " & text of brightness
writeTo(logfilepath, "0", text, false)
end try
end if


on writeTo(targetFile, theData, dataType, apendData)
-- targetFile is the path to the file you want to write
-- theData is the data you want in the file.
-- dataType is the data type of theData and it can be text, list, record etc.
-- apendData is true to append theData to the end of the current contents of the file or false to overwrite it

try
set targetFile to targetFile as string
set openFile to open for access targetFile with write permission
if apendData is false then set eof of openFile to 0
write theData to openFile starting at eof as dataType
close access openFile
return true

on error
try
close access file targetFile
end try
return false
end try
end writeTo

on readFile(unixPath)
set foo to (open for access (POSIX file unixPath))
set txt to (read foo for (get eof foo))
close access foo
return txt
end readFile



[ Reply to This | # ]