38 lines
1.0 KiB
Nim
38 lines
1.0 KiB
Nim
import os
|
|
import streams
|
|
import strutils
|
|
|
|
const
|
|
BL_SYS_DIR = "/sys/class/backlight"
|
|
|
|
proc change_brightness(percent: int) =
|
|
if dirExists(BL_SYS_DIR):
|
|
for kind, path in walkDir(BL_SYS_DIR):
|
|
let
|
|
br_file = path & "/brightness"
|
|
mb_file = path & "/max_brightness"
|
|
if fileExists(br_file) and fileExists(mb_file):
|
|
try:
|
|
let br_stream = openFileStream(br_file)
|
|
let br = parseInt(br_stream.readLine())
|
|
br_stream.close()
|
|
|
|
let mb_stream = openFileStream(mb_file)
|
|
let mb = parseInt(mb_stream.readLine())
|
|
mb_stream.close()
|
|
|
|
var new_br = int(float(br) + float(mb) / 100.0 * float(percent))
|
|
if new_br < 0: new_br = 0
|
|
if new_br > mb: new_br = mb
|
|
|
|
let br_write = openFileStream(br_file, fmWrite)
|
|
br_write.writeLine(new_br)
|
|
br_write.close()
|
|
except:
|
|
echo "Fail to interact with ", br_file
|
|
|
|
when isMainModule:
|
|
if paramCount() > 0:
|
|
let percent = parseInt(paramStr(1))
|
|
change_brightness(percent)
|