Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2024
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Define function snore()
  4. snore()
  5. {
  6. local IFS
  7. [[ -n "${_snore_fd:-}" ]] || { exec {_snore_fd}<> <(:) && read -r -t 0 -u $_snore_fd; } 2>/dev/null ||
  8. {
  9. # workaround for MacOS and similar systems
  10. local fifo
  11. fifo=$(mktemp -u)
  12. mkfifo -m 700 "$fifo"
  13. exec {_snore_fd}<>"$fifo"
  14. rm "$fifo"
  15. }
  16. read ${1:+-t "$1"} -u $_snore_fd || :
  17. }
  18.  
  19. # Define delimter as comma for brightnessctl -m list
  20. IFS=","
  21. #echo "New IFS is $IFS"
  22.  
  23. # Define hundred variable
  24. hun=100
  25.  
  26. # Define highest illuminance sensor value expected
  27. imax=3355
  28.  
  29. # Define top of linear slope: illuminance values above this amount will all be treated as go to full brightness
  30. ipeak=100
  31.  
  32. # Define starting manual adjustment value
  33. madj=0
  34.  
  35. # Get initial brightness value
  36. bctl=$(brightnessctl -m)
  37. set -- $bctl
  38. blast=$3
  39.  
  40. # Main Loop
  41. while true
  42. do
  43.  
  44.  
  45. iraw=$(cat /sys/bus/iio/devices/iio:device0/in_illuminance_raw)
  46. #echo "iraw is $iraw"
  47. bctl=$(brightnessctl -m)
  48. set -- $bctl
  49. #echo $bctl
  50. #echo $3
  51. braw=$3
  52. #echo "braw is $braw"
  53. #echo $4
  54. bpct="${4//%}"
  55. #echo "bpct is $bpct"
  56. #echo $5
  57. bmax=$5
  58.  
  59. #echo "Calculating bdiff from $braw and $blast"
  60. bdiff=$((braw - blast))
  61. #echo "bdiff is $bdiff"
  62. if [ "$bdiff" -ne "0" ]
  63. then
  64. #echo "Need to adjust ipeak.."
  65. #echo "ipeak is $ipeak"
  66. ipeak=$(( ipeak - ( bdiff * 100 / bmax ) ))
  67. if (( $(bc -l <<< "${ipeak/e/E} < 0") ))
  68. then
  69. ipeak=1
  70. fi
  71. #echo "ipeak changed to $ipeak"
  72. fi
  73. blast=$braw
  74. #echo $bctl
  75. #echo $3
  76. btarget=$((iraw * bmax / ipeak))
  77. #echo "btarget is $btarget"
  78. bstep=$(( (btarget-blast) / 10))
  79. if (( $(bc -l <<< "${bstep/e/E} > $bmax/100") ))
  80. then
  81. bstep=$(( bmax / 100 ))
  82. fi
  83. #echo "bstep is $bstep"
  84. bnext=$(( braw + bstep ))
  85. if [ $bnext -gt $bmax ]; then
  86. #echo "Bnext too high!, setting to $bmax"
  87. bnext=$bmax
  88. bstep=0
  89. #echo "Bnext is $bnext"
  90. fi
  91. brightnessctl -q set $bnext
  92.  
  93. # Save last brightness value to compare against in next loop
  94. #bctl=$(brightnessctl -m)
  95. #set -- $bctl
  96. #echo $bctl
  97. #echo $3
  98. #braw=$3
  99. #echo "new braw is $braw"
  100. blast=$bnext
  101. #echo "blast is $blast"
  102.  
  103. #Variable update amount based on last movement
  104. ssec=$(( 200 / ( 100 + ${bstep//-} ) ))
  105. #echo "initial ssec is $ssec"
  106. if (( $(bc -l <<< "${ssec/e/E} > 2") ))
  107. then
  108. ssec=2
  109. fi
  110. if (( $(bc -l <<< "${ssec/e/E} < .01") ))
  111. then
  112. ssec=.01
  113. fi
  114.  
  115. #echo "ssec is now $ssec"
  116. #echo "------------SLEEPING----------"
  117. #ssec=1
  118. #sleep $ssec
  119. snore $ssec
  120. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement