open Arg (* Sett default path to sysfs *) let default_sysfs_dir = ref "/sys" let default_backlight_path = ref (String.concat "" (List.append [!default_sysfs_dir] ["/class/backlight/intel_backlight"])) let default_backlight_maxbrightness_path = ref (String.concat "" (List.append [!default_backlight_path] ["/max_brightness"])) let default_backlight_brightness_path = ref (String.concat "" (List.append [!default_backlight_path] ["/brightness"])) let set_backlight_path () = default_backlight_path := (String.concat "" (List.append [!default_sysfs_dir] ["/class/backlight/intel_backlight"])) let set_backlight_maxbrightness_path () = default_backlight_maxbrightness_path := (String.concat "" (List.append [!default_backlight_path] ["/max_brightness"])) let set_backlight_brightness_path () = default_backlight_brightness_path := (String.concat "" (List.append [!default_backlight_path] ["/brightness"])) let print_debug () = begin let _ = Printf.printf "sysfs: %s\n" !default_sysfs_dir in let _ = Printf.printf "backlight: %s\n" !default_backlight_path in let _ = Printf.printf "max_brightness: %s\n" !default_backlight_maxbrightness_path in Printf.printf "brightness: %s\n" !default_backlight_brightness_path end let set_sysfs_dir dir = begin (Printf.printf "Setting value of sysfs to %s\n" dir); default_sysfs_dir := dir; set_backlight_path (); set_backlight_maxbrightness_path (); set_backlight_brightness_path () end let read_data filename = let ic = open_in filename in try let line = input_line ic in close_in ic; (line) with e -> close_in_noerr ic; raise e let show_brightness () = let b = read_data !default_backlight_brightness_path in let mb = read_data !default_backlight_maxbrightness_path in let _ = Printf.printf "Brightness: %s\n" b in Printf.printf "Max Brightness: %s\n" mb (* Set brightness from 0-100% *) let write_data filename a = let oc = open_out filename in output_string oc a; close_out oc;; let set_brightness brightness_path nv = let mb = read_data !default_backlight_maxbrightness_path in let i_mb = int_of_string mb in let nv_percent =((float_of_int nv) /. 100.0) *. (float_of_int i_mb) in let _ = Printf.printf "%f\n" nv_percent in write_data brightness_path (string_of_int (int_of_float nv_percent)) let arg_num = Array.length Sys.argv let main = begin let speclist = [ ("-s",Arg.String (set_sysfs_dir),"Sysfs directory") ] in let usage_msg = "set backlight value" in let _ = Arg.parse speclist print_endline usage_msg in (* If there is not argument print value of default path *) if arg_num == 1 then show_brightness(); (* If there is 1 argument set value to brigthness *) if arg_num == 2 then set_brightness !default_backlight_brightness_path (int_of_string Sys.argv.(1)); print_debug (); end let () = main;;