;;; oni-termux.el --- Termux-specific configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2021.1123.003341 ;; Package-Requires: (oni-alert oni-tui alert-termux) ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Configuration specific to running in Termux. ;; This configuration shows the battery power in the mode-line, since ;; the devices running Emacs in Termux will most likely always have a ;; battery. ;;; Code: (require 'alert) ;;(require 'alert-termux) (require 'json) (require 'oni-tui) (defun oni-termux--battery-status () "Get battery status information using `termux-battery status'. The following %-sequences are provided: %h Health %p Percentage %L Plugged %B Status %d Temperature" (let ((default-directory user-emacs-directory) (info (with-temp-buffer (call-process "termux-battery-status" nil t) (goto-char (point-min)) (json-read)))) (list (cons ?h (alist-get 'health info "N/A")) (cons ?p (number-to-string (alist-get 'percentage info -1))) (cons ?P (alist-get 'plugged info "N/A")) (cons ?B (alist-get 'status info "N/A")) (cons ?t (number-to-string (alist-get 'temperature info -1)))))) (defun oni-termux--load-alert-termux () "Load ‘alert-termux’. This can’t be done by a require because it appears that ‘alert-termux’ gets added to the load path and loaded after this library, so use this function in ‘after-init-hook’ instead." (load-library "alert-termux")) ;; To keep the byte-compiler happy I use a `defvar' here. (defvar battery-status-function #'oni-termux--battery-status) ;; The battery library needs to be loaded after the battery variables ;; have been set, otherwise loading it will produce the error that ;; access is denied to /sys/class/power_supply. (require 'battery) (setq battery-mode-line-format "%p%%") (setq alert-default-style 'termux) (add-hook 'after-init-hook #'oni-termux--load-alert-termux) (display-battery-mode) (provide 'oni-termux) ;;; oni-termux.el ends here