cmd/buildlet: disable screensaver on MacStadium Mac VMs

It was using some CPU.

Kinda useless to save a virtual screen.

Change-Id: If2ca5a39818e190b44f87299837a305cfe966c3c
Reviewed-on: https://go-review.googlesource.com/37493
Reviewed-by: Kevin Burke <kev@inburke.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/cmd/buildlet/buildlet.go b/cmd/buildlet/buildlet.go
index f005826..5018294 100644
--- a/cmd/buildlet/buildlet.go
+++ b/cmd/buildlet/buildlet.go
@@ -65,7 +65,8 @@
 //    3: switched to revdial protocol
 //    5: reverse dialing uses timeouts+tcp keepalives, pargzip fix
 //    7: version bumps while debugging revdial hang (Issue 12816)
-const buildletVersion = 7
+//    8: mac screensaver disabled
+const buildletVersion = 8
 
 func defaultListenAddr() string {
 	if runtime.GOOS == "darwin" {
@@ -1256,6 +1257,8 @@
 
 	// TODO: setup RAM disk for tmp and set *workDir
 
+	disableMacScreensaver()
+
 	version, err := exec.Command("sw_vers", "-productVersion").Output()
 	if err != nil {
 		log.Fatalf("failed to find sw_vers -productVersion: %v", err)
@@ -1277,6 +1280,13 @@
 	*hostname = vmwareGetInfo("guestinfo.name")
 }
 
+func disableMacScreensaver() {
+	err := exec.Command("defaults", "-currentHost", "write", "com.apple.screensaver", "idleTime", "0").Run()
+	if err != nil {
+		log.Printf("disabling screensaver: %v", err)
+	}
+}
+
 func vmwareGetInfo(key string) string {
 	cmd := exec.Command("/Library/Application Support/VMware Tools/vmware-tools-daemon",
 		"--cmd",