This is the first real program I've written in Go so have at it! I wrote it because I use a tiling window manager that doesn't have any brightness control functionality (at least not that I know of).
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strconv"
"strings"
"os"
)
func main() {
const BRIGHTNESS_AMOUNT = 25
maxBrightness := func() int {
buff, err := ioutil.ReadFile("/sys/class/backlight/gmux_backlight/max_brightness")
if err != nil {
log.Fatal(err)
return -1
}
buffInt, err := strconv.Atoi(strings.Replace(string(buff), "\n", "", -1))
if err != nil {
log.Fatal(err)
return -1
}
return buffInt
}()
currentBrightness := func() int {
buff, err := ioutil.ReadFile("/sys/class/backlight/gmux_backlight/brightness")
if err != nil {
log.Fatal(err)
return -1
}
buffInt, err := strconv.Atoi(strings.Replace(string(buff), "\n", "", -1))
if err != nil {
log.Fatal(err)
return -1
}
return buffInt
}
http.HandleFunc("/increase", func(w http.ResponseWriter, r *http.Request) {
brightness := maxBrightness
if (currentBrightness() + BRIGHTNESS_AMOUNT) < maxBrightness {
brightness = currentBrightness() + BRIGHTNESS_AMOUNT
}
buff := []byte(strconv.Itoa(brightness))
err := ioutil.WriteFile("/sys/class/backlight/gmux_backlight/brightness", buff, os.ModeDevice)
if(err != nil) { log.Fatal(err) }
fmt.Fprintf(w, strconv.Itoa(brightness))
})
http.HandleFunc("/decrease", func(w http.ResponseWriter, r *http.Request) {
brightness := 0
if (currentBrightness() - BRIGHTNESS_AMOUNT) > 0 {
brightness = currentBrightness() - BRIGHTNESS_AMOUNT
}
buff := []byte(strconv.Itoa(brightness))
err := ioutil.WriteFile("/sys/class/backlight/gmux_backlight/brightness", buff, os.ModeDevice)
if(err != nil) { log.Fatal(err) }
fmt.Fprintf(w, strconv.Itoa(brightness))
})
log.Fatal(http.ListenAndServe(":5600", nil))
}