diff options
| author | Avneet Singh <4151485+kalsi-avneet@users.noreply.github.com> | 2021-03-21 00:06:33 +0530 | 
|---|---|---|
| committer | Marc Cornellà <hello@mcornella.com> | 2021-10-08 12:27:16 +0200 | 
| commit | f26a1ecdf01185218004dd6d15ce02541e6a2b26 (patch) | |
| tree | 80d20d1b98e55ca3f091e8c0106d266485b3ee03 /plugins | |
| parent | dc83d0b7204cf66315471e980729490813b7d915 (diff) | |
| download | zsh-f26a1ecdf01185218004dd6d15ce02541e6a2b26.tar.gz zsh-f26a1ecdf01185218004dd6d15ce02541e6a2b26.tar.bz2 zsh-f26a1ecdf01185218004dd6d15ce02541e6a2b26.zip  | |
feat(battery): add support for Android via Termux (#9752)
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/battery/README.md | 19 | ||||
| -rw-r--r-- | plugins/battery/battery.plugin.zsh | 43 | 
2 files changed, 56 insertions, 6 deletions
diff --git a/plugins/battery/README.md b/plugins/battery/README.md index c2554a36d..18e5bd882 100644 --- a/plugins/battery/README.md +++ b/plugins/battery/README.md @@ -8,15 +8,22 @@ To use, add `battery` to the list of plugins in your `.zshrc` file:  Then, add the `battery_pct_prompt` function to your custom theme. For example: -``` +```zsh  RPROMPT='$(battery_pct_prompt) ...'  ```  ## Requirements -On Linux, you must have the `acpi` tool installed on your operating system. +- On Linux, you must have the `acpi` or `acpitool` commands installed on your operating system. +  On Debian/Ubuntu, you can do that with `sudo apt install acpi` or `sudo apt install acpitool`. -Here's an example of how to install with apt: -``` -sudo apt-get install acpi -``` +- On Android (via [Termux](https://play.google.com/store/apps/details?id=com.termux)), you must have: + +  1. The `Termux:API` addon app installed: +     [Google Play](https://play.google.com/store/apps/details?id=com.termux.api) | [F-Droid](https://f-droid.org/packages/com.termux.api/) + +  2. The `termux-api` package installed within termux: + +     ```sh +     pkg install termux-api +     ``` diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh index 24bff8ae6..8e6afe65e 100644 --- a/plugins/battery/battery.plugin.zsh +++ b/plugins/battery/battery.plugin.zsh @@ -10,6 +10,9 @@  # Author: J (927589452)                   #  # Modified to add support for FreeBSD     #  ########################################### +# Author: Avneet Singh (kalsi-avneet)     # +# Modified to add support for Android     # +###########################################  if [[ "$OSTYPE" = darwin* ]]; then    function battery_is_charging() { @@ -160,6 +163,46 @@ elif [[ "$OSTYPE" = linux*  ]]; then        echo "%{$fg[$color]%}${battery_pct}%%%{$reset_color%}"      fi    } +elif [[ "$OSTYPE" = linux-android ]] && (( ${+commands[termux-battery-status]} )); then +  function battery_is_charging() { +    termux-battery-status 2>/dev/null | command awk '/status/ { exit ($0 ~ /DISCHARGING/) }' +  } +  function battery_pct() { +    # Sample output: +    # { +    #   "health": "GOOD", +    #   "percentage": 93, +    #   "plugged": "UNPLUGGED", +    #   "status": "DISCHARGING", +    #   "temperature": 29.0, +    #   "current": 361816 +    # } +    termux-battery-status 2>/dev/null | command awk '/percentage/ { gsub(/[,]/,""); print $2}' +  } +  function battery_pct_remaining() { +    if ! battery_is_charging; then +      battery_pct +    else +      echo "External Power" +    fi +  } +  function battery_time_remaining() { } # Not available on android +  function battery_pct_prompt() { +    local battery_pct color +    battery_pct=$(battery_pct_remaining) +    if battery_is_charging; then +      echo "∞" +    else +      if [[ $battery_pct -gt 50 ]]; then +        color='green' +      elif [[ $battery_pct -gt 20 ]]; then +        color='yellow' +      else +        color='red' +      fi +      echo "%{$fg[$color]%}${battery_pct}%%%{$reset_color%}" +    fi +  }  else    # Empty functions so we don't cause errors in prompts    function battery_is_charging { false }  | 
