Add battery level to header
This commit is contained in:
parent
7054b08123
commit
1b7ed9e9c8
15
README.org
15
README.org
@ -9,6 +9,9 @@ words, let’s see how it looks like:
|
||||
#+caption: Screenshot of the default Eshell information banner
|
||||
[[file:img/screenshot.png]]
|
||||
|
||||
This will be displayed every time you open a new Eshell instance, or
|
||||
if you invoke ~eshell-info-banner~ from it.
|
||||
|
||||
This package is geared towards Linux in particular, I am pretty sure
|
||||
it will not work on Windows, and there will probably be bugs on
|
||||
macOS. PR are welcome if you want to fix that!
|
||||
@ -72,6 +75,18 @@ default your theme, but you can customize the following faces:
|
||||
- ~eshell-info-banner-critical-face~ :: Used for filling the progress
|
||||
bar when on critical levels
|
||||
|
||||
* My computer doesn’t have a battery, will this still work?
|
||||
As you can see, one line shows you your battery level. Il will start
|
||||
to warn you in a reverse way compared to the other progress bars, as
|
||||
it should for battery levels –a fully charged battery at 100% is not
|
||||
at a critical level, but at 0% it would be.
|
||||
|
||||
However, you might be on a desktop or any kind of computer that does
|
||||
not have a battery, so… what do? Don’t worry, /Emacs will automatically
|
||||
detect whether you have a battery or not/ and will only display this
|
||||
line if you have one. If you don’t have a battery, the only difference
|
||||
is you will have one less line than laptop users.
|
||||
|
||||
* License
|
||||
~eshell-info-banner.el~ is available under the GNU GPL-3.0 license. You
|
||||
can find the full text in [[file:LICENSE.md][LICENSE.md]].
|
||||
|
@ -187,22 +187,30 @@ the left side of the banner."
|
||||
'eshell-info-banner-warning-face)
|
||||
(t 'eshell-info-banner-normal-face))))
|
||||
|
||||
(defun eshell-info-banner--progress-bar (length percentage)
|
||||
(defun eshell-info-banner--progress-bar (length percentage &optional invert)
|
||||
"Display a progress bar `LENGTH' long and `PERCENTAGE' full.
|
||||
The full path will be displayed filled with the character
|
||||
specified by `eshell-info-banner-progress-bar-char' up to
|
||||
`PERCENTAGE' percents. The rest will be empty."
|
||||
(let* ((length-filled (if (= 0 percentage)
|
||||
0
|
||||
(/ (* length percentage) 100)))
|
||||
(length-empty (- length length-filled)))
|
||||
`PERCENTAGE' percents. The rest will be empty.
|
||||
|
||||
If `INVERT' is t, then consider the percentage to approach
|
||||
critical levels close to 0 rather than 100."
|
||||
(message "Length: %s" length)
|
||||
(let* ((length-filled (if (= 0 percentage)
|
||||
0
|
||||
(/ (* length percentage) 100)))
|
||||
(length-empty (- length length-filled))
|
||||
(percentage-level (if invert
|
||||
(- 100 percentage)
|
||||
percentage)))
|
||||
(concat
|
||||
(eshell-info-banner--with-face "[" :weight 'bold)
|
||||
(eshell-info-banner--with-face (s-repeat length-filled eshell-info-banner-progress-bar-char)
|
||||
:weight 'bold
|
||||
:inherit (eshell-info-banner--get-color-percentage percentage))
|
||||
:inherit (eshell-info-banner--get-color-percentage percentage-level))
|
||||
(eshell-info-banner--with-face (s-repeat length-empty eshell-info-banner-progress-bar-char)
|
||||
:weight 'bold :inherit 'eshell-info-banner-background-face)
|
||||
:weight 'bold
|
||||
:inherit 'eshell-info-banner-background-face)
|
||||
(eshell-info-banner--with-face "]" :weight 'bold))))
|
||||
|
||||
(defun eshell-info-banner--display-memory (type used total text-padding bar-length)
|
||||
@ -255,6 +263,35 @@ See also `eshell-info-banner--display-memory'."
|
||||
(number-to-string percentage)
|
||||
:inherit (eshell-info-banner--get-color-percentage percentage))))))
|
||||
|
||||
(defun eshell-info-banner--display-battery (text-padding bar-length)
|
||||
"If the computer has a battery, display its level.
|
||||
|
||||
Pad the left text with dots by `TEXT-PADDING' characters.
|
||||
|
||||
`BAR-LENGTH' indicates the length in characters of the progress
|
||||
bar.
|
||||
|
||||
The usage of `eshell-info-banner-warning-percentage' and
|
||||
`eshell-info-banner-critical-percentage' is reversed, and can be
|
||||
thought of as the “percentage of discharge” of the computer.
|
||||
Thus, setting the warning at 75% will be translated as showing
|
||||
the warning face with a battery level of 25% or less."
|
||||
(let ((battery-level (battery)))
|
||||
(if (string= battery-level "Battery status not available")
|
||||
""
|
||||
(let ((percentage (save-match-data
|
||||
(string-match "\\([0-9]+\\)\\.[0-9]+%" battery-level)
|
||||
(string-to-number (substring battery-level (match-beginning 1) (match-end 1))))))
|
||||
(concat (s-pad-right text-padding "." "Battery")
|
||||
": "
|
||||
(eshell-info-banner--progress-bar bar-length
|
||||
percentage
|
||||
t)
|
||||
(s-repeat 16 " ")
|
||||
(format "(%3s%%)\n" (eshell-info-banner--with-face
|
||||
(number-to-string percentage)
|
||||
:inherit (eshell-info-banner--get-color-percentage (- 100.0 percentage)))))))))
|
||||
|
||||
; Public functions ;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;;;###autoload
|
||||
@ -303,8 +340,8 @@ See also `eshell-info-banner--display-memory'."
|
||||
(format "%s: %s Uptime.: %s\n"
|
||||
(s-pad-right left-padding "." "Hostname")
|
||||
(s-pad-right middle-padding " " (eshell-info-banner--with-face hostname :weight 'bold))
|
||||
uptime
|
||||
)
|
||||
uptime)
|
||||
(eshell-info-banner--display-battery left-padding bar-length)
|
||||
(eshell-info-banner--display-memory "Ram"
|
||||
(string-to-number (nth 2 ram))
|
||||
(string-to-number (nth 1 ram))
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 38 KiB |
Loading…
Reference in New Issue
Block a user