better battery monitor
This commit is contained in:
		
							parent
							
								
									186ae68b40
								
							
						
					
					
						commit
						ff34c93c1e
					
				
					 1 changed files with 29 additions and 25 deletions
				
			
		| 
						 | 
				
			
			@ -4,37 +4,41 @@
 | 
			
		|||
(ql:quickload :serapeum)
 | 
			
		||||
 | 
			
		||||
(defun get-value (file)
 | 
			
		||||
  "Read a file and get it's value as a list of lines"
 | 
			
		||||
  (with-open-file (in file)
 | 
			
		||||
    (loop for line = (read-line in nil nil)
 | 
			
		||||
          while line
 | 
			
		||||
          collect line)))
 | 
			
		||||
  "Read a file and get it's value as a string"
 | 
			
		||||
  (serapeum:trim-whitespace (uiop:read-file-string file)))
 | 
			
		||||
 | 
			
		||||
(defun close-eww ()
 | 
			
		||||
  (uiop:run-program "eww close battery" :ignore-error-status t))
 | 
			
		||||
  (run-program "eww" '("close" "battery") :search "/run/current-system/sw/bin/"))
 | 
			
		||||
(defun open-eww ()
 | 
			
		||||
  (uiop:run-program "eww open battery" :ignore-error-status t))
 | 
			
		||||
  (run-program "eww" '("open" "battery") :search "/run/current-system/sw/bin/"))
 | 
			
		||||
 | 
			
		||||
(defun clear-file (file)
 | 
			
		||||
  (with-open-file (out file :direction :output :if-exists :overwrite :if-does-not-exist :create)
 | 
			
		||||
  (with-open-file (out file :direction :output :if-exists :supersede)
 | 
			
		||||
    (write-sequence "      " out))
 | 
			
		||||
  (uiop:println "Clearing killed"))
 | 
			
		||||
  (format t "~&Clearing killed"))
 | 
			
		||||
 | 
			
		||||
(setf capacity (parse-integer (car (get-value "/sys/class/power_supply/BAT1/capacity"))))
 | 
			
		||||
(setf status (car (get-value "/sys/class/power_supply/BAT1/status")))
 | 
			
		||||
 | 
			
		||||
(loop do (progn
 | 
			
		||||
           (sleep 10)
 | 
			
		||||
           (format t "~&Charge: ~a, Status: ~a" capacity status)
 | 
			
		||||
           (if (string= "Charging" status)
 | 
			
		||||
               (progn (format t "~&Charging, closing EWW") (close-eww))
 | 
			
		||||
               (if (<= capacity 30)
 | 
			
		||||
                   (progn (setf killed (serapeum:trim-whitespace (car (get-value "/tmp/ewwbattery"))))
 | 
			
		||||
                          (if killed
 | 
			
		||||
                              (progn (format t "~&EWW has been killed, waiting 3 minutes")
 | 
			
		||||
                                     (clear-file #p"/tmp/ewwbattery")
 | 
			
		||||
                                     (sleep 360)))
 | 
			
		||||
(defun main ()
 | 
			
		||||
  (loop do (let ((capacity (parse-integer
 | 
			
		||||
                            (get-value "/sys/class/power_supply/BAT1/capacity")
 | 
			
		||||
                            :junk-allowed t))
 | 
			
		||||
                 (status (get-value "/sys/class/power_supply/BAT1/status")))
 | 
			
		||||
             (format t "~&Charge: ~a, Status: ~a" capacity status)
 | 
			
		||||
             (if (string= "Charging" status)
 | 
			
		||||
                 (progn
 | 
			
		||||
                   (format t "~&Charging, closing EWW")
 | 
			
		||||
                   (close-eww))
 | 
			
		||||
                 (if (<= capacity 30)
 | 
			
		||||
                     (let ((killed (get-value "/tmp/ewwbattery")))
 | 
			
		||||
                       (if (string= "killed" killed)
 | 
			
		||||
                           (progn
 | 
			
		||||
                             (format t "~&EWW has been killed, waiting 3 minutes")
 | 
			
		||||
                             (clear-file #p"/tmp/ewwbattery")
 | 
			
		||||
                             (sleep 350)))
 | 
			
		||||
                          (format t "~&Opening EWW")
 | 
			
		||||
                          (open-eww))
 | 
			
		||||
                   (progn (format t "~&Charged more than 30%, Closing EWW")
 | 
			
		||||
                          (close-eww))))))
 | 
			
		||||
                     (progn (format t "~&Charged more than 30%, Closing EWW")
 | 
			
		||||
                            (clear-file #p"/tmp/ewwbattery")
 | 
			
		||||
                            (close-eww))))
 | 
			
		||||
             (sleep 10))))
 | 
			
		||||
 | 
			
		||||
(main)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue