Compare commits
57 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43832651ed | ||
|
|
5c47191df8 | ||
|
|
26491f0c03 | ||
|
|
c2eafd79f2 | ||
|
|
e3b7fe0641 | ||
|
|
65b0c5261b | ||
|
|
661aa4d25e | ||
|
|
3a1a711ba1 | ||
|
|
91b05110cc | ||
|
|
48fae59ba4 | ||
|
|
5c52d4f7f8 | ||
|
|
f865b04f78 | ||
|
|
f8b8e84519 | ||
|
|
86952b21cf | ||
|
|
0272f2fc94 | ||
|
|
8f1626fe95 | ||
|
|
8e5f5ab4c6 | ||
|
|
ac1c768e07 | ||
|
|
d163ef37a6 | ||
|
|
588a941cde | ||
|
|
cc18faec34 | ||
|
|
c60c41c826 | ||
|
|
5a3d235119 | ||
|
|
8cb3cce426 | ||
|
|
c2cd5c8687 | ||
|
|
8d5adf92fd | ||
|
|
db0698ea86 | ||
|
|
24f088fe5b | ||
|
|
09be78c35e | ||
|
|
b4cf61da23 | ||
|
|
8da22116eb | ||
|
|
267d960601 | ||
|
|
215de6dcd2 | ||
|
|
b630ec8707 | ||
|
|
51499f1cc7 | ||
|
|
7810c8d7ec | ||
|
|
d64c7fecc8 | ||
|
|
3d7cfed467 | ||
|
|
8fa3b627b6 | ||
|
|
9a4e6ef8e4 | ||
|
|
49ff2993be | ||
|
|
06688f8a64 | ||
|
|
c7034799bc | ||
|
|
f121a2368c | ||
|
|
0a2d6d02e4 | ||
|
|
a3a955e782 | ||
|
|
629902d532 | ||
|
|
af7b4be994 | ||
|
|
af907c2ceb | ||
|
|
1df74d095d | ||
|
|
fe54f2eb66 | ||
|
|
926bfd51fd | ||
|
|
e70f252bda | ||
|
|
77760e09af | ||
|
|
1f7686e0ae | ||
|
|
ce8d85440e | ||
|
|
ae8deefe57 |
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
*.swp
|
||||
17
CHANGELOG.md
|
|
@ -1,7 +1,20 @@
|
|||
# Changelog
|
||||
|
||||
### master
|
||||
|
||||
### v2.0.0, 2025-12-30
|
||||
- Added `#{battery_charging_watts}` format string for displaying current watts supplied on macOS
|
||||
- Added `#{battery_color_bg}`, `#{battery_color_fg}` format strings for dynamic color based on charge/status
|
||||
- Added `#{battery_color_charge_bg}`, `#{battery_color_charge_fg}` for colors based solely on charge level
|
||||
- Added `#{battery_color_status_bg}`, `#{battery_color_status_fg}` for colors based solely on battery status
|
||||
- Added `#{battery_icon_charge}`, `#{battery_icon_status}` for granular icon control
|
||||
- Added 8-tier charge level icons and colors with full customization support
|
||||
- Added `#{battery_graph}` to display battery as a bar graph
|
||||
- Added `@batt_remain_short` option to shorten remaining time display
|
||||
- Added WSL (Windows Subsystem for Linux) support
|
||||
- Added OpenBSD `apm` support
|
||||
- Added `battery_enabled.tmux` script for conditionally showing battery
|
||||
- Fixed battery graph display
|
||||
- Removed deprecated `#{battery_status_bg}` and `#{battery_status_fg}` format strings
|
||||
- Changed preferred order of utility applications to: pmset → acpi → upower → termux-battery-status due to CPU usage issues with upower
|
||||
|
||||
### v1.2.0, 2016-09-24
|
||||
- show output for `#{battery_remain}` interpolation only if the battery is
|
||||
|
|
|
|||
293
README.md
|
|
@ -2,39 +2,26 @@
|
|||
|
||||
Enables displaying battery percentage and status icon in tmux status-right.
|
||||
|
||||
Battery full (for OS X):<br/>
|
||||

|
||||
## Installation
|
||||
|
||||
Battery discharging, custom discharge icon:<br/>
|
||||

|
||||
In order to read the battery status, this plugin depends on having one of the following applications installed:
|
||||
- pmset (MacOS only)
|
||||
- acpi
|
||||
- upower
|
||||
- termux-battery-status
|
||||
- apm
|
||||
|
||||
Battery charging:<br/>
|
||||

|
||||
|
||||
Battery remain:<br/>
|
||||

|
||||
|
||||
This is done by introducing 3 new format strings that can be added to
|
||||
`status-right` option:
|
||||
- `#{battery_icon}` - will display a battery status icon
|
||||
- `#{battery_percentage}` - will show battery percentage
|
||||
- `#{battery_remain}` - will show remaining time of battery charge
|
||||
|
||||
### Usage
|
||||
|
||||
Add `#{battery_icon}`, `#{battery_percentage}` or `#{battery_remain}` format
|
||||
strings to existing `status-right` tmux option. Example:
|
||||
|
||||
# in .tmux.conf
|
||||
set -g status-right 'Batt: #{battery_icon} #{battery_percentage} #{battery_remain} | %a %h-%d %H:%M '
|
||||
In a normal situation, one of the above should be installed on your system by default and thus it should not be necessary to specifically install one of them. That being said, the `acpi` utility is currently recommended for use over `upower` where possible due to ongoing CPU usage issues.
|
||||
|
||||
### Installation with [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm) (recommended)
|
||||
|
||||
Add plugin to the list of TPM plugins in `.tmux.conf`:
|
||||
|
||||
set -g @plugin 'tmux-plugins/tmux-battery'
|
||||
```tmux
|
||||
set -g @plugin 'tmux-plugins/tmux-battery'
|
||||
```
|
||||
|
||||
Hit `prefix + I` to fetch the plugin and source it.
|
||||
Hit `<prefix> + I` to fetch the plugin and source it.
|
||||
|
||||
If format strings are added to `status-right`, they should now be visible.
|
||||
|
||||
|
|
@ -42,67 +29,245 @@ If format strings are added to `status-right`, they should now be visible.
|
|||
|
||||
Clone the repo:
|
||||
|
||||
$ git clone https://github.com/tmux-plugins/tmux-battery ~/clone/path
|
||||
```shell
|
||||
git clone https://github.com/tmux-plugins/tmux-battery ~/clone/path
|
||||
```
|
||||
|
||||
Add this line to the bottom of `.tmux.conf`:
|
||||
|
||||
run-shell ~/clone/path/battery.tmux
|
||||
```tmux
|
||||
run-shell ~/clone/path/battery.tmux
|
||||
```
|
||||
|
||||
Reload TMUX environment:
|
||||
From the terminal, reload TMUX environment:
|
||||
|
||||
# type this in terminal
|
||||
$ tmux source-file ~/.tmux.conf
|
||||
```shell
|
||||
tmux source-file ~/.tmux.conf
|
||||
```
|
||||
|
||||
If format strings are added to `status-right`, they should now be visible.
|
||||
|
||||
### Changing icons
|
||||
## Usage
|
||||
|
||||
By default, these icons are displayed:
|
||||
Add any of the supported format strings (see below) to the `status-right` tmux option in `.tmux.conf`. Example:
|
||||
|
||||
- charged: ":battery:" ("❇ " when not on OS X)
|
||||
- charging: ":zap:"
|
||||
- discharging: (nothing shown)
|
||||
- attached but not charging: ":warning:"
|
||||
```tmux
|
||||
set -g status-right '#{battery_color_bg} Batt: #{battery_icon} #{battery_percentage} #{battery_remain} | %a %h-%d %H:%M '
|
||||
```
|
||||
|
||||
You can change these defaults by adding the following to `.tmux.conf` (the
|
||||
following lines are not in the code block so that emojis can be seen):
|
||||
### Supported Format Strings
|
||||
|
||||
- set -g @batt_charged_icon ":sunglasses:"
|
||||
- set -g @batt_charging_icon ":+1:"
|
||||
- set -g @batt_discharging_icon ":thumbsdown:"
|
||||
- set -g @batt_attached_icon ":neutral_face:"
|
||||
- `#{battery_color_bg}` - will set the background color of the status bar based on the battery charge level if discharging and status otherwise
|
||||
- `#{battery_color_fg}` - will set the foreground color of the status bar based on the battery charge level if discharging and status otherwise
|
||||
- `#{battery_color_charge_bg}` - will set the background color of the status bar based solely on the battery charge level
|
||||
- `#{battery_color_charge_fg}` - will set the foreground color of the status bar based solely on the battery charge level
|
||||
- `#{battery_color_status_bg}` - will set the background color of the status bar based solely on the battery status
|
||||
- `#{battery_color_status_fg}` - will set the foreground color of the status bar based solely on the battery status
|
||||
- `#{battery_graph}` - will show battery percentage as a bar graph: ▁▂▄▆█
|
||||
- `#{battery_icon}` - will display a battery status/charge icon
|
||||
- `#{battery_icon_charge}` - will display a battery charge icon
|
||||
- `#{battery_icon_status}` - will display a battery status icon
|
||||
- `#{battery_percentage}` - will show battery percentage
|
||||
- `#{battery_remain}` - will show remaining time of battery charge\*
|
||||
- `#{battery_charging_watts}` - will display the current watts supplied (currently supported only on macOS)
|
||||
|
||||
Don't forget to reload tmux environment (`$ tmux source-file ~/.tmux.conf`)
|
||||
after you do this.
|
||||
\* These format strings can be further customized via options as described below.
|
||||
|
||||
### Limitations
|
||||
#### Options
|
||||
|
||||
- Battery icon change most likely won't be instant.<br/>
|
||||
When you un-plug power cord it will take some time (15 - 60 seconds) for the
|
||||
icon to change. This depends on the `status-interval` tmux option. Setting it
|
||||
to 15 seconds should be good enough.
|
||||
`#{battery_remain}`
|
||||
|
||||
### Other goodies
|
||||
- `@batt_remain_short`: 'true' / 'false' - This will shorten the time remaining (when charging or discharging) to `~H:MM`.
|
||||
|
||||
You might also find these useful:
|
||||
### Defaults
|
||||
|
||||
- [resurrect](https://github.com/tmux-plugins/tmux-resurrect) - restore tmux
|
||||
environment after system restart
|
||||
- [logging](https://github.com/tmux-plugins/tmux-logging) - easy logging and
|
||||
screen capturing
|
||||
- [online status](https://github.com/tmux-plugins/tmux-online-status) - online status
|
||||
indicator in tmux `status-right`. Useful when on flaky connection to see if
|
||||
you're online.
|
||||
#### Options
|
||||
|
||||
You might want to follow [@brunosutic](https://twitter.com/brunosutic) on
|
||||
twitter if you want to hear about new tmux plugins or feature updates.
|
||||
- `@batt_remain_short`: 'false'
|
||||
|
||||
#### Icons/Colors
|
||||
|
||||
By default, the following colors and icons are used. (The exact colors displayed depends on your terminal / X11 config.)
|
||||
|
||||
Please be aware that the 'level of charge' as noted below (e.g. `[80%-95%)`) uses interval notation. If you are unfamiliar with it, <a href="https://en.wikipedia.org/wiki/Bracket_(mathematics)#Intervals">check it out here</a>.
|
||||
|
||||
Also, a note about the `@batt_color_...` options: `@batt_color_..._primary_...` options are what will be displayed in the main `bg` or `fg` format strings you choose - e.g. if you use `#{battery_color_bg}`, the `@batt_color_..._primary_...` colors you choose will be the background. Likewise, the corresponding `@batt_color_..._secondary_...` color will be the foreground.
|
||||
|
||||
Level of Charge Colors:
|
||||
|
||||
- primary tier 8 \[95%-100%] (`@batt_color_charge_primary_tier8`): '#00ff00'
|
||||
- primary tier 7 \[80%-95%) (`@batt_color_charge_primary_tier7`): '#55ff00'
|
||||
- primary tier 6 \[65%-80%) (`@batt_color_charge_primary_tier6`): '#aaff00'
|
||||
- primary tier 5 \[50%-65%) (`@batt_color_charge_primary_tier5`): '#ffff00'
|
||||
- primary tier 4 \[35%-50%) (`@batt_color_charge_primary_tier4`): '#ffc000'
|
||||
- primary tier 3 \[20%-35%) (`@batt_color_charge_primary_tier3`): '#ff8000'
|
||||
- primary tier 2 (5%-20%) (`@batt_color_charge_primary_tier2`): '#ff4000'
|
||||
- primary tier 1 \[0%-5%] (`@batt_color_charge_primary_tier1`): '#ff0000'
|
||||
- secondary tier 8 \[95%-100%] (`@batt_color_charge_secondary_tier8`): 'colour0'
|
||||
- secondary tier 7 \[80%-95%) (`@batt_color_charge_secondary_tier7`): 'colour0'
|
||||
- secondary tier 6 \[65%-80%) (`@batt_color_charge_secondary_tier6`): 'colour0'
|
||||
- secondary tier 5 \[50%-65%) (`@batt_color_charge_secondary_tier5`): 'colour0'
|
||||
- secondary tier 4 \[35%-50%) (`@batt_color_charge_secondary_tier4`): 'colour0'
|
||||
- secondary tier 3 \[20%-35%) (`@batt_color_charge_secondary_tier3`): 'colour0'
|
||||
- secondary tier 2 (5%-20%) (`@batt_color_charge_secondary_tier2`): 'colour0'
|
||||
- secondary tier 1 \[0%-5%] (`@batt_color_charge_secondary_tier1`): 'colour0'
|
||||
|
||||
Status Colors:
|
||||
|
||||
- primary charged (`@batt_color_status_primary_charged`): 'colour33'
|
||||
- primary charging (`@batt_color_status_primary_charging`): 'colour33'
|
||||
- primary discharging (`@batt_color_status_primary_discharging`): 'colour14'
|
||||
- primary attached (`@batt_color_status_primary_attached`): 'colour201'
|
||||
- primary unknown (`@batt_color_status_primary_unknown`): 'colour7'
|
||||
- secondary charged (`@batt_color_status_secondary_charged`): 'colour0'
|
||||
- secondary charging (`@batt_color_status_secondary_charging`): 'colour0'
|
||||
- secondary discharging (`@batt_color_status_secondary_discharging`): 'colour0'
|
||||
- secondary attached (`@batt_color_status_secondary_attached`): 'colour0'
|
||||
- secondary unknown (`@batt_color_status_secondary_unknown`): 'colour0'
|
||||
|
||||
Level of Charge Icons:
|
||||
|
||||
- tier 8 \[95%-100%] (`@batt_icon_charge_tier8`): '█'
|
||||
- tier 7 \[80%-95%) (`@batt_icon_charge_tier7`): '▇'
|
||||
- tier 6 \[65%-80%) (`@batt_icon_charge_tier6`): '▆'
|
||||
- tier 5 \[50%-65%) (`@batt_icon_charge_tier5`): '▅'
|
||||
- tier 4 \[35%-50%) (`@batt_icon_charge_tier4`): '▄'
|
||||
- tier 3 \[20%-35%) (`@batt_icon_charge_tier3`): '▃'
|
||||
- tier 2 (5%-20%) (`@batt_icon_charge_tier2`): '▂'
|
||||
- tier 1 \[0%-5%] (`@batt_icon_charge_tier1`): '▁'
|
||||
|
||||
Status Icons:
|
||||
|
||||
- charged (`@batt_icon_status_charged`): '🔌'
|
||||
- charged - OS X (`@batt_icon_status_charged`): '🔌'
|
||||
- charging (`@batt_icon_status_charging`): '🔌'
|
||||
- discharging (`@batt_icon_status_discharging`): '🔋'
|
||||
- attached (`@batt_icon_status_attached`): '⚠️'
|
||||
- unknown (`@batt_icon_status_unknown`): '?'
|
||||
|
||||
#### Enabled
|
||||
|
||||
If you run `battery_enabled.tmux` from the top-level of the repo, it will setup a `@battery_enabled` variable, that can be used to selectively display the battery based on whether or not a battery is available or not.
|
||||
|
||||
```tmux
|
||||
run-shell ~/clone/path/battery_enabled.tmux
|
||||
# for example, if using catppuccin:
|
||||
set -agF status-right "#{?#{#{==:#{E:@battery_exists},true}},#{E:@catppuccin_status_battery},}"
|
||||
run-shell ~/clone/path/battery.tmux
|
||||
```
|
||||
|
||||
#### Changing the Defaults
|
||||
|
||||
All efforts have been made to make sane defaults, but if you wish to change any of them, add the option to `.tmux.conf`. For example:
|
||||
|
||||
```tmux
|
||||
set -g @batt_icon_charge_tier8 '🌕'
|
||||
set -g @batt_icon_charge_tier7 '🌖'
|
||||
set -g @batt_icon_charge_tier6 '🌖'
|
||||
set -g @batt_icon_charge_tier5 '🌗'
|
||||
set -g @batt_icon_charge_tier4 '🌗'
|
||||
set -g @batt_icon_charge_tier3 '🌘'
|
||||
set -g @batt_icon_charge_tier2 '🌘'
|
||||
set -g @batt_icon_charge_tier1 '🌑'
|
||||
set -g @batt_icon_status_charged '🔋'
|
||||
set -g @batt_icon_status_charging '⚡'
|
||||
set -g @batt_icon_status_discharging '👎'
|
||||
set -g @batt_color_status_primary_charged '#3daee9'
|
||||
set -g @batt_color_status_primary_charging '#3daee9'
|
||||
```
|
||||
|
||||
Don't forget to reload the tmux environment after you do this by either hitting `<prefix> + I` if tmux battery is installed via the tmux plugin manager, or by typing `tmux source-file ~/.tmux.conf` in the terminal if tmux battery is manually installed.
|
||||
|
||||
*Warning*: The battery icon change most likely will not be instant. When you un-plug the power cord, it will take some time (15 - 60 seconds) for the icon to change. This depends on the `status-interval` tmux option. Setting it to 15 seconds should be good enough.
|
||||
|
||||
## Examples
|
||||
|
||||
These are all examples of the default plugin color and icon schemes paired with the default tmux color scheme using the following `status-right` and `status-right-length` settings in `.tmux.conf`
|
||||
|
||||
```tmux
|
||||
set -g status-right 'Colors: #{battery_color_bg}bg#[default] #{battery_color_fg}fg#[default] #{battery_color_charge_bg}charge_bg#[default] #{battery_color_charge_fg}charge_fg#[default] #{battery_color_status_bg}status_bg#[default] #{battery_color_status_fg}status_fg#[default] | Graph: #{battery_graph} | Icon: #{battery_icon} | Charge Icon: #{battery_icon_charge} | Status Icon: #{battery_icon_status} | Percent: #{battery_percentage} | Remain: #{battery_remain}'
|
||||
set -g status-right-length '150'
|
||||
```
|
||||
|
||||
Battery charging at tier 8 \[95%-100%]:<br>
|
||||

|
||||
|
||||
Battery charging at tier 7 \[80%-95%):<br>
|
||||

|
||||
|
||||
Battery charging at tier 6 \[65%-80%):<br>
|
||||

|
||||
|
||||
Battery charging at tier 5 \[50%-65%):<br>
|
||||

|
||||
|
||||
Battery charging at tier 4 \[35%-50%):<br>
|
||||

|
||||
|
||||
Battery charging at tier 3 \[20%-35%):<br>
|
||||

|
||||
|
||||
Battery charging at tier 2 (5%-20%):<br>
|
||||

|
||||
|
||||
Battery charging at tier 1 \[0%-5%]:<br>
|
||||

|
||||
|
||||
Battery discharging at tier 8 \[95%-100%]:<br>
|
||||

|
||||
|
||||
Battery discharging at tier 7 \[80%-95%):<br>
|
||||

|
||||
|
||||
Battery discharging at tier 6 \[65%-80%):<br>
|
||||

|
||||
|
||||
Battery discharging at tier 5 \[50%-65%):<br>
|
||||

|
||||
|
||||
Battery discharging at tier 4 \[35%-50%):<br>
|
||||

|
||||
|
||||
Battery discharging at tier 3 \[20%-35%):<br>
|
||||

|
||||
|
||||
Battery discharging at tier 2 (5%-20%):<br>
|
||||

|
||||
|
||||
Battery discharging at tier 1 \[0%-5%]:<br>
|
||||

|
||||
|
||||
Battery in 'attached' status:<br>
|
||||

|
||||
|
||||
Battery in an unknown status:<br>
|
||||

|
||||
|
||||
### Tmux Plugins
|
||||
|
||||
This plugin is part of the [tmux-plugins](https://github.com/tmux-plugins) organisation. Checkout plugins as [resurrect](https://github.com/tmux-plugins/tmux-resurrect), [logging](https://github.com/tmux-plugins/tmux-logging), [online status](https://github.com/tmux-plugins/tmux-online-status), and many more over at the [tmux-plugins](https://github.com/tmux-plugins) organisation page.
|
||||
|
||||
### Maintainer
|
||||
|
||||
- [Martin Beentjes](https://github.com/martinbeentjes)
|
||||
|
||||
### Contributors
|
||||
|
||||
- [@jgeralnik](https://github.com/jgeralnik)
|
||||
- [@m1foley](https://github.com/m1foley)
|
||||
- [@asethwright](https://github.com/asethwright)
|
||||
- [@JanAhrens](https://github.com/JanAhrens)
|
||||
- Adam Biggs
|
||||
- Aleksandar Djurdjic
|
||||
- Bruno Sutic
|
||||
- Caleb
|
||||
- Dan Cassidy
|
||||
- Diego Ximenes
|
||||
- Evan N-D
|
||||
- Jan Ahrens
|
||||
- Joey Geralnik
|
||||
- HyunJong (Joseph) Lee
|
||||
- Martin Beentjes
|
||||
- Mike Foley
|
||||
- Ryan Frantz
|
||||
- Seth Wright
|
||||
- Tom Levens
|
||||
|
||||
### License
|
||||
|
||||
|
|
|
|||
52
battery.tmux
|
|
@ -4,12 +4,37 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||
|
||||
source "$CURRENT_DIR/scripts/helpers.sh"
|
||||
|
||||
battery_percentage="#($CURRENT_DIR/scripts/battery_percentage.sh)"
|
||||
battery_remain="#($CURRENT_DIR/scripts/battery_remain.sh)"
|
||||
battery_icon="#($CURRENT_DIR/scripts/battery_icon.sh)"
|
||||
battery_percentage_interpolation="\#{battery_percentage}"
|
||||
battery_remain_interpolation="\#{battery_remain}"
|
||||
battery_icon_interpolation="\#{battery_icon}"
|
||||
battery_interpolation=(
|
||||
"\#{battery_color_bg}"
|
||||
"\#{battery_color_fg}"
|
||||
"\#{battery_color_charge_bg}"
|
||||
"\#{battery_color_charge_fg}"
|
||||
"\#{battery_color_status_bg}"
|
||||
"\#{battery_color_status_fg}"
|
||||
"\#{battery_graph}"
|
||||
"\#{battery_icon}"
|
||||
"\#{battery_icon_charge}"
|
||||
"\#{battery_icon_status}"
|
||||
"\#{battery_percentage}"
|
||||
"\#{battery_remain}"
|
||||
"\#{battery_charging_watts}"
|
||||
)
|
||||
|
||||
battery_commands=(
|
||||
"#($CURRENT_DIR/scripts/battery_color.sh bg)"
|
||||
"#($CURRENT_DIR/scripts/battery_color.sh fg)"
|
||||
"#($CURRENT_DIR/scripts/battery_color_charge.sh bg)"
|
||||
"#($CURRENT_DIR/scripts/battery_color_charge.sh fg)"
|
||||
"#($CURRENT_DIR/scripts/battery_color_status.sh bg)"
|
||||
"#($CURRENT_DIR/scripts/battery_color_status.sh fg)"
|
||||
"#($CURRENT_DIR/scripts/battery_graph.sh)"
|
||||
"#($CURRENT_DIR/scripts/battery_icon.sh)"
|
||||
"#($CURRENT_DIR/scripts/battery_icon_charge.sh)"
|
||||
"#($CURRENT_DIR/scripts/battery_icon_status.sh)"
|
||||
"#($CURRENT_DIR/scripts/battery_percentage.sh)"
|
||||
"#($CURRENT_DIR/scripts/battery_remain.sh)"
|
||||
"#($CURRENT_DIR/scripts/battery_charging_watts.sh)"
|
||||
)
|
||||
|
||||
set_tmux_option() {
|
||||
local option="$1"
|
||||
|
|
@ -18,10 +43,10 @@ set_tmux_option() {
|
|||
}
|
||||
|
||||
do_interpolation() {
|
||||
local string="$1"
|
||||
local percentage_interpolated="${string/$battery_percentage_interpolation/$battery_percentage}"
|
||||
local remain_interpolated="${percentage_interpolated/$battery_remain_interpolation/$battery_remain}"
|
||||
local all_interpolated="${remain_interpolated/$battery_icon_interpolation/$battery_icon}"
|
||||
local all_interpolated="$1"
|
||||
for ((i=0; i<${#battery_commands[@]}; i++)); do
|
||||
all_interpolated=${all_interpolated//${battery_interpolation[$i]}/${battery_commands[$i]}}
|
||||
done
|
||||
echo "$all_interpolated"
|
||||
}
|
||||
|
||||
|
|
@ -33,7 +58,10 @@ update_tmux_option() {
|
|||
}
|
||||
|
||||
main() {
|
||||
update_tmux_option "status-right"
|
||||
update_tmux_option "status-left"
|
||||
local interpolated_options="$(get_tmux_option "@plugin_interpolated_options" "status-right status-left")"
|
||||
for interpolated_option in $interpolated_options
|
||||
do
|
||||
update_tmux_option $interpolated_option
|
||||
done
|
||||
}
|
||||
main
|
||||
|
|
|
|||
10
battery_enabled.tmux
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/scripts/helpers.sh"
|
||||
|
||||
main() {
|
||||
tmux set-option -gq "@battery_exists" "$( [ -n "$(battery_status)" ] && echo true || echo false )"
|
||||
}
|
||||
main
|
||||
|
Before Width: | Height: | Size: 10 KiB |
BIN
screenshots/battery_charging_tier1.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
screenshots/battery_charging_tier2.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
screenshots/battery_charging_tier3.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
screenshots/battery_charging_tier4.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
screenshots/battery_charging_tier5.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
screenshots/battery_charging_tier6.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
screenshots/battery_charging_tier7.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
screenshots/battery_charging_tier8.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 10 KiB |
BIN
screenshots/battery_discharging_tier1.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
screenshots/battery_discharging_tier2.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
screenshots/battery_discharging_tier3.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
screenshots/battery_discharging_tier4.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
screenshots/battery_discharging_tier5.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
screenshots/battery_discharging_tier6.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
screenshots/battery_discharging_tier7.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
screenshots/battery_discharging_tier8.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 18 KiB |
BIN
screenshots/battery_status_attached.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
screenshots/battery_status_unknown.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
22
scripts/battery_charging_watts.sh
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
print_battery_charging_watts() {
|
||||
if is_osx; then
|
||||
watts=$(system_profiler SPPowerDataType | grep Wattage | awk '{print $3}')
|
||||
if [ -z "$watts" ]; then
|
||||
watts="0"
|
||||
fi
|
||||
echo "${watts}W"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
print_battery_charging_watts
|
||||
}
|
||||
main
|
||||
23
scripts/battery_color.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
print_color() {
|
||||
local plane="$1"
|
||||
local status="$2"
|
||||
if [ "$status" == "discharging" ]; then
|
||||
$CURRENT_DIR/battery_color_charge.sh "$plane"
|
||||
else
|
||||
$CURRENT_DIR/battery_color_status.sh "$plane" "$status"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local status="$(battery_status)"
|
||||
local plane="$1"
|
||||
print_color "$plane" "$status"
|
||||
}
|
||||
|
||||
main $@
|
||||
98
scripts/battery_color_charge.sh
Executable file
|
|
@ -0,0 +1,98 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
# script global variables
|
||||
color_charge_primary_tier8=''
|
||||
color_charge_primary_tier7=''
|
||||
color_charge_primary_tier6=''
|
||||
color_charge_primary_tier5=''
|
||||
color_charge_primary_tier4=''
|
||||
color_charge_primary_tier3=''
|
||||
color_charge_primary_tier2=''
|
||||
color_charge_primary_tier1=''
|
||||
color_charge_secondary_tier8=''
|
||||
color_charge_secondary_tier7=''
|
||||
color_charge_secondary_tier6=''
|
||||
color_charge_secondary_tier5=''
|
||||
color_charge_secondary_tier4=''
|
||||
color_charge_secondary_tier3=''
|
||||
color_charge_secondary_tier2=''
|
||||
color_charge_secondary_tier1=''
|
||||
|
||||
# script default variables
|
||||
color_charge_primary_tier8_default='#00ff00'
|
||||
color_charge_primary_tier7_default='#55ff00'
|
||||
color_charge_primary_tier6_default='#aaff00'
|
||||
color_charge_primary_tier5_default='#ffff00'
|
||||
color_charge_primary_tier4_default='#ffc000'
|
||||
color_charge_primary_tier3_default='#ff8000'
|
||||
color_charge_primary_tier2_default='#ff4000'
|
||||
color_charge_primary_tier1_default='#ff0000'
|
||||
color_charge_secondary_tier8_default='colour0'
|
||||
color_charge_secondary_tier7_default='colour0'
|
||||
color_charge_secondary_tier6_default='colour0'
|
||||
color_charge_secondary_tier5_default='colour0'
|
||||
color_charge_secondary_tier4_default='colour0'
|
||||
color_charge_secondary_tier3_default='colour0'
|
||||
color_charge_secondary_tier2_default='colour0'
|
||||
color_charge_secondary_tier1_default='colour0'
|
||||
|
||||
# colors are set as script global variables
|
||||
get_color_charge_settings() {
|
||||
color_charge_primary_tier8=$(get_tmux_option "@batt_color_charge_primary_tier8" "$color_charge_primary_tier8_default")
|
||||
color_charge_primary_tier7=$(get_tmux_option "@batt_color_charge_primary_tier7" "$color_charge_primary_tier7_default")
|
||||
color_charge_primary_tier6=$(get_tmux_option "@batt_color_charge_primary_tier6" "$color_charge_primary_tier6_default")
|
||||
color_charge_primary_tier5=$(get_tmux_option "@batt_color_charge_primary_tier5" "$color_charge_primary_tier5_default")
|
||||
color_charge_primary_tier4=$(get_tmux_option "@batt_color_charge_primary_tier4" "$color_charge_primary_tier4_default")
|
||||
color_charge_primary_tier3=$(get_tmux_option "@batt_color_charge_primary_tier3" "$color_charge_primary_tier3_default")
|
||||
color_charge_primary_tier2=$(get_tmux_option "@batt_color_charge_primary_tier2" "$color_charge_primary_tier2_default")
|
||||
color_charge_primary_tier1=$(get_tmux_option "@batt_color_charge_primary_tier1" "$color_charge_primary_tier1_default")
|
||||
color_charge_secondary_tier8=$(get_tmux_option "@batt_color_charge_secondary_tier8" "$color_charge_secondary_tier8_default")
|
||||
color_charge_secondary_tier7=$(get_tmux_option "@batt_color_charge_secondary_tier7" "$color_charge_secondary_tier7_default")
|
||||
color_charge_secondary_tier6=$(get_tmux_option "@batt_color_charge_secondary_tier6" "$color_charge_secondary_tier6_default")
|
||||
color_charge_secondary_tier5=$(get_tmux_option "@batt_color_charge_secondary_tier5" "$color_charge_secondary_tier5_default")
|
||||
color_charge_secondary_tier4=$(get_tmux_option "@batt_color_charge_secondary_tier4" "$color_charge_secondary_tier4_default")
|
||||
color_charge_secondary_tier3=$(get_tmux_option "@batt_color_charge_secondary_tier3" "$color_charge_secondary_tier3_default")
|
||||
color_charge_secondary_tier2=$(get_tmux_option "@batt_color_charge_secondary_tier2" "$color_charge_secondary_tier2_default")
|
||||
color_charge_secondary_tier1=$(get_tmux_option "@batt_color_charge_secondary_tier1" "$color_charge_secondary_tier1_default")
|
||||
}
|
||||
|
||||
print_color_charge() {
|
||||
local primary_plane="$1"
|
||||
local secondary_plane=""
|
||||
if [ "$primary_plane" == "bg" ]; then
|
||||
secondary_plane="fg"
|
||||
else
|
||||
secondary_plane="bg"
|
||||
fi
|
||||
percentage=$($CURRENT_DIR/battery_percentage.sh | sed -e 's/%//')
|
||||
if [ $percentage -ge 95 -o "$percentage" == "" ]; then
|
||||
# if percentage is empty, assume it's a desktop
|
||||
printf "#[$primary_plane=$color_charge_primary_tier8${color_charge_secondary_tier8:+",$secondary_plane=$color_charge_secondary_tier8"}]"
|
||||
elif [ $percentage -ge 80 ]; then
|
||||
printf "#[$primary_plane=$color_charge_primary_tier7${color_charge_secondary_tier7:+",$secondary_plane=$color_charge_secondary_tier7"}]"
|
||||
elif [ $percentage -ge 65 ]; then
|
||||
printf "#[$primary_plane=$color_charge_primary_tier6${color_charge_secondary_tier6:+",$secondary_plane=$color_charge_secondary_tier6"}]"
|
||||
elif [ $percentage -ge 50 ]; then
|
||||
printf "#[$primary_plane=$color_charge_primary_tier5${color_charge_secondary_tier5:+",$secondary_plane=$color_charge_secondary_tier5"}]"
|
||||
elif [ $percentage -ge 35 ]; then
|
||||
printf "#[$primary_plane=$color_charge_primary_tier4${color_charge_secondary_tier4:+",$secondary_plane=$color_charge_secondary_tier4"}]"
|
||||
elif [ $percentage -ge 20 ]; then
|
||||
printf "#[$primary_plane=$color_charge_primary_tier3${color_charge_secondary_tier3:+",$secondary_plane=$color_charge_secondary_tier3"}]"
|
||||
elif [ $percentage -gt 5 ]; then
|
||||
printf "#[$primary_plane=$color_charge_primary_tier2${color_charge_secondary_tier2:+",$secondary_plane=$color_charge_secondary_tier2"}]"
|
||||
else
|
||||
printf "#[$primary_plane=$color_charge_primary_tier1${color_charge_secondary_tier1:+",$secondary_plane=$color_charge_secondary_tier1"}]"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local plane="$1"
|
||||
get_color_charge_settings
|
||||
print_color_charge "$plane"
|
||||
}
|
||||
|
||||
main $@
|
||||
74
scripts/battery_color_status.sh
Executable file
|
|
@ -0,0 +1,74 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
# script global variables
|
||||
color_status_primary_charged=''
|
||||
color_status_primary_charging=''
|
||||
color_status_primary_discharging=''
|
||||
color_status_primary_attached=''
|
||||
color_status_primary_unknown=''
|
||||
color_status_secondary_charged=''
|
||||
color_status_secondary_charging=''
|
||||
color_status_secondary_discharging=''
|
||||
color_status_secondary_attached=''
|
||||
color_status_secondary_unknown=''
|
||||
|
||||
# script default variables
|
||||
color_status_primary_charged_default='colour33'
|
||||
color_status_primary_charging_default='colour33'
|
||||
color_status_primary_discharging_default='colour14'
|
||||
color_status_primary_attached_default='colour201'
|
||||
color_status_primary_unknown_default='colour7'
|
||||
color_status_secondary_charged_default='colour0'
|
||||
color_status_secondary_charging_default='colour0'
|
||||
color_status_secondary_discharging_default='colour0'
|
||||
color_status_secondary_attached_default='colour0'
|
||||
color_status_secondary_unknown_default='colour0'
|
||||
|
||||
# colors are set as script global variables
|
||||
get_color_status_settings() {
|
||||
color_status_primary_charged=$(get_tmux_option "@batt_color_status_primary_charged" "$color_status_primary_charged_default")
|
||||
color_status_primary_charging=$(get_tmux_option "@batt_color_status_primary_charging" "$color_status_primary_charging_default")
|
||||
color_status_primary_discharging=$(get_tmux_option "@batt_color_status_primary_discharging" "$color_status_primary_discharging_default")
|
||||
color_status_primary_attached=$(get_tmux_option "@batt_color_status_primary_attached" "$color_status_primary_attached_default")
|
||||
color_status_primary_unknown=$(get_tmux_option "@batt_color_status_primary_unknown" "$color_status_primary_unknown_default")
|
||||
color_status_secondary_charged=$(get_tmux_option "@batt_color_status_secondary_charged" "$color_status_secondary_charged_default")
|
||||
color_status_secondary_charging=$(get_tmux_option "@batt_color_status_secondary_charging" "$color_status_secondary_charging_default")
|
||||
color_status_secondary_discharging=$(get_tmux_option "@batt_color_status_secondary_discharging" "$color_status_secondary_discharging_default")
|
||||
color_status_secondary_attached=$(get_tmux_option "@batt_color_status_secondary_attached" "$color_status_secondary_attached_default")
|
||||
color_status_secondary_unknown=$(get_tmux_option "@batt_color_status_secondary_unknown" "$color_status_secondary_unknown_default")
|
||||
}
|
||||
|
||||
print_color_status() {
|
||||
local plane_primary="$1"
|
||||
local plane_secondary=""
|
||||
if [ "$plane_primary" == "bg" ]; then
|
||||
plane_secondary="fg"
|
||||
else
|
||||
plane_secondary="bg"
|
||||
fi
|
||||
local status="$2"
|
||||
if [[ $status =~ (charged) || $status =~ (full) ]]; then
|
||||
printf "#[$plane_primary=$color_status_primary_charged${color_status_secondary_charged:+",$plane_secondary=$color_status_secondary_charged"}]"
|
||||
elif [[ $status =~ (^charging) ]]; then
|
||||
printf "#[$plane_primary=$color_status_primary_charging${color_status_secondary_charging:+",$plane_secondary=$color_status_secondary_charging"}]"
|
||||
elif [[ $status =~ (^discharging) ]]; then
|
||||
printf "#[$plane_primary=$color_status_primary_discharging${color_status_secondary_discharging:+",$plane_secondary=$color_status_secondary_discharging"}]"
|
||||
elif [[ $status =~ (attached) ]]; then
|
||||
printf "#[$plane_primary=$color_status_primary_attached${color_status_secondary_attached:+",$plane_secondary=$color_status_secondary_attached"}]"
|
||||
else
|
||||
printf "#[$plane_primary=$color_status_primary_unknown${color_status_secondary_unknown:+",$plane_secondary=$color_status_secondary_unknown"}]"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local plane="$1"
|
||||
local status=${2:-$(battery_status)}
|
||||
get_color_status_settings
|
||||
print_color_status "$plane" "$status"
|
||||
}
|
||||
|
||||
main $@
|
||||
45
scripts/battery_graph.sh
Executable file
|
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
print_graph() {
|
||||
local percentage=$1
|
||||
if [ $percentage -gt 5 ]; then
|
||||
printf "▁"
|
||||
else
|
||||
printf " "
|
||||
fi
|
||||
if [ $percentage -ge 25 ]; then
|
||||
printf "▂"
|
||||
else
|
||||
printf " "
|
||||
fi
|
||||
if [ $percentage -ge 50 ]; then
|
||||
printf "▄"
|
||||
else
|
||||
printf " "
|
||||
fi
|
||||
if [ $percentage -ge 75 ]; then
|
||||
printf "▆"
|
||||
else
|
||||
printf " "
|
||||
fi
|
||||
if [ $percentage -ge 95 ]; then
|
||||
printf "█"
|
||||
else
|
||||
printf " "
|
||||
echo "▇"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local percentage=$($CURRENT_DIR/battery_percentage.sh)
|
||||
if [ "$(uname)" == "OpenBSD" ]; then
|
||||
print_graph ${percentage}
|
||||
else
|
||||
print_graph ${percentage%?}
|
||||
fi
|
||||
}
|
||||
main
|
||||
|
|
@ -4,50 +4,18 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
# script global variables
|
||||
charged_icon=""
|
||||
charging_icon=""
|
||||
attached_icon=""
|
||||
discharging_icon=""
|
||||
|
||||
charged_default="❇ "
|
||||
charged_default_osx="🔋 "
|
||||
charging_default="⚡️ "
|
||||
attached_default="⚠️ "
|
||||
discharging_default=""
|
||||
|
||||
charged_default() {
|
||||
if is_osx; then
|
||||
echo "$charged_default_osx"
|
||||
else
|
||||
echo "$charged_default"
|
||||
fi
|
||||
}
|
||||
|
||||
# icons are set as script global variables
|
||||
get_icon_settings() {
|
||||
charged_icon=$(get_tmux_option "@batt_charged_icon" "$(charged_default)")
|
||||
charging_icon=$(get_tmux_option "@batt_charging_icon" "$charging_default")
|
||||
attached_icon=$(get_tmux_option "@batt_attached_icon" "$attached_default")
|
||||
discharging_icon=$(get_tmux_option "@batt_discharging_icon" "$discharging_default")
|
||||
}
|
||||
|
||||
print_icon() {
|
||||
local status=$1
|
||||
if [[ $status =~ (charged) ]]; then
|
||||
printf "$charged_icon"
|
||||
elif [[ $status =~ (^charging) ]]; then
|
||||
printf "$charging_icon"
|
||||
elif [[ $status =~ (^discharging) ]]; then
|
||||
printf "$discharging_icon"
|
||||
elif [[ $status =~ (attached) ]]; then
|
||||
printf "$attached_icon"
|
||||
if [ "$status" == "discharging" ]; then
|
||||
$CURRENT_DIR/battery_icon_charge.sh
|
||||
else
|
||||
$CURRENT_DIR/battery_icon_status.sh "$status"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
get_icon_settings
|
||||
local status=$(battery_status)
|
||||
print_icon "$status"
|
||||
}
|
||||
|
||||
main
|
||||
|
|
|
|||
66
scripts/battery_icon_charge.sh
Executable file
|
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
# script global variables
|
||||
icon_charge_tier8=''
|
||||
icon_charge_tier7=''
|
||||
icon_charge_tier6=''
|
||||
icon_charge_tier5=''
|
||||
icon_charge_tier4=''
|
||||
icon_charge_tier3=''
|
||||
icon_charge_tier2=''
|
||||
icon_charge_tier1=''
|
||||
|
||||
# script default variables
|
||||
icon_charge_tier8_default='█'
|
||||
icon_charge_tier7_default='▇'
|
||||
icon_charge_tier6_default='▆'
|
||||
icon_charge_tier5_default='▅'
|
||||
icon_charge_tier4_default='▄'
|
||||
icon_charge_tier3_default='▃'
|
||||
icon_charge_tier2_default='▂'
|
||||
icon_charge_tier1_default='▁'
|
||||
|
||||
# icons are set as script global variables
|
||||
get_icon_charge_settings() {
|
||||
icon_charge_tier8=$(get_tmux_option "@batt_icon_charge_tier8" "$icon_charge_tier8_default")
|
||||
icon_charge_tier7=$(get_tmux_option "@batt_icon_charge_tier7" "$icon_charge_tier7_default")
|
||||
icon_charge_tier6=$(get_tmux_option "@batt_icon_charge_tier6" "$icon_charge_tier6_default")
|
||||
icon_charge_tier5=$(get_tmux_option "@batt_icon_charge_tier5" "$icon_charge_tier5_default")
|
||||
icon_charge_tier4=$(get_tmux_option "@batt_icon_charge_tier4" "$icon_charge_tier4_default")
|
||||
icon_charge_tier3=$(get_tmux_option "@batt_icon_charge_tier3" "$icon_charge_tier3_default")
|
||||
icon_charge_tier2=$(get_tmux_option "@batt_icon_charge_tier2" "$icon_charge_tier2_default")
|
||||
icon_charge_tier1=$(get_tmux_option "@batt_icon_charge_tier1" "$icon_charge_tier1_default")
|
||||
}
|
||||
|
||||
print_icon_charge() {
|
||||
percentage=$($CURRENT_DIR/battery_percentage.sh | sed -e 's/%//')
|
||||
if [ $percentage -ge 95 -o "$percentage" == "" ]; then
|
||||
# if percentage is empty, assume it's a desktop
|
||||
printf "$icon_charge_tier8"
|
||||
elif [ $percentage -ge 80 ]; then
|
||||
printf "$icon_charge_tier7"
|
||||
elif [ $percentage -ge 65 ]; then
|
||||
printf "$icon_charge_tier6"
|
||||
elif [ $percentage -ge 50 ]; then
|
||||
printf "$icon_charge_tier5"
|
||||
elif [ $percentage -ge 35 ]; then
|
||||
printf "$icon_charge_tier4"
|
||||
elif [ $percentage -ge 20 ]; then
|
||||
printf "$icon_charge_tier3"
|
||||
elif [ $percentage -gt 5 ]; then
|
||||
printf "$icon_charge_tier2"
|
||||
else
|
||||
printf "$icon_charge_tier1"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
get_icon_charge_settings
|
||||
print_icon_charge
|
||||
}
|
||||
|
||||
main
|
||||
61
scripts/battery_icon_status.sh
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
# script global variables
|
||||
icon_status_charged=''
|
||||
icon_status_charging=''
|
||||
icon_status_discharging=''
|
||||
icon_status_attached=''
|
||||
icon_status_unknown=''
|
||||
|
||||
# script default variables
|
||||
icon_status_charged_default='🔌'
|
||||
icon_status_charged_default_osx='🔌'
|
||||
icon_status_charging_default='🔌'
|
||||
icon_status_discharging_default='🔋'
|
||||
icon_status_attached_default='⚠️'
|
||||
icon_status_unknown_default='?'
|
||||
|
||||
# determine which charged_default variable to use
|
||||
get_icon_status_charged_default() {
|
||||
if is_osx; then
|
||||
printf "$icon_status_charged_default_osx"
|
||||
else
|
||||
printf "$icon_status_charged_default"
|
||||
fi
|
||||
}
|
||||
|
||||
# icons are set as script global variables
|
||||
get_icon_status_settings() {
|
||||
icon_status_charged=$(get_tmux_option "@batt_icon_status_charged" "$(get_icon_status_charged_default)")
|
||||
icon_status_charging=$(get_tmux_option "@batt_icon_status_charging" "$icon_status_charging_default")
|
||||
icon_status_discharging=$(get_tmux_option "@batt_icon_status_discharging" "$icon_status_discharging_default")
|
||||
icon_status_attached=$(get_tmux_option "@batt_icon_status_attached" "$icon_status_attached_default")
|
||||
icon_status_unknown=$(get_tmux_option "@batt_icon_status_unknown" "$icon_status_unknown_default")
|
||||
}
|
||||
|
||||
print_icon_status() {
|
||||
local status=$1
|
||||
if [[ $status =~ (charged) || $status =~ (full) || $status =~ (^finishing charge) ]]; then
|
||||
printf "$icon_status_charged"
|
||||
elif [[ $status =~ (^charging) ]]; then
|
||||
printf "$icon_status_charging"
|
||||
elif [[ $status =~ (^discharging) ]]; then
|
||||
printf "$icon_status_discharging"
|
||||
elif [[ $status =~ (attached) ]]; then
|
||||
printf "$icon_status_attached"
|
||||
else
|
||||
printf "$icon_status_unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
get_icon_status_settings
|
||||
local status=${1:-$(battery_status)}
|
||||
print_icon_status "$status"
|
||||
}
|
||||
|
||||
main
|
||||
|
|
@ -8,12 +8,36 @@ print_battery_percentage() {
|
|||
# percentage displayed in the 2nd field of the 2nd row
|
||||
if command_exists "pmset"; then
|
||||
pmset -g batt | grep -o "[0-9]\{1,3\}%"
|
||||
elif command_exists "upower"; then
|
||||
for battery in $(upower -e | grep battery); do
|
||||
upower -i $battery | grep percentage | awk '{print $2}'
|
||||
done | xargs echo
|
||||
elif command_exists "acpi"; then
|
||||
acpi -b | grep -Eo "[0-9]+%"
|
||||
acpi -b | grep -v " 0%" | grep -m 1 -Eo "[0-9]+%"
|
||||
elif command_exists "upower"; then
|
||||
# use DisplayDevice if available otherwise battery
|
||||
local battery=$(upower -e | grep -E 'battery|DisplayDevice'| tail -n1)
|
||||
if [ -z "$battery" ]; then
|
||||
return
|
||||
fi
|
||||
local percentage=$(upower -i $battery | awk '/percentage:/ {print $2}')
|
||||
if [ "$percentage" ]; then
|
||||
echo "$(float2int $percentage)%"
|
||||
return
|
||||
fi
|
||||
local energy
|
||||
local energy_full
|
||||
energy=$(upower -i $battery | awk -v nrg="$energy" '/energy:/ {print nrg+$2}')
|
||||
energy_full=$(upower -i $battery | awk -v nrgfull="$energy_full" '/energy-full:/ {print nrgfull+$2}')
|
||||
if [ -n "$energy" ] && [ -n "$energy_full" ]; then
|
||||
echo $energy $energy_full | awk '{printf("%d%%", ($1/$2)*100)}'
|
||||
fi
|
||||
elif command_exists "termux-battery-status"; then
|
||||
termux-battery-status | jq -r '.percentage' | awk '{printf("%d%%", $1)}'
|
||||
elif command_exists "apm"; then
|
||||
apm -l
|
||||
elif command_exists "termux-battery-status" "jq"; then
|
||||
termux-battery-status | jq -er '"\(.percentage)%"'
|
||||
elif is_wsl; then
|
||||
local battery
|
||||
battery=$(find /sys/class/power_supply/*/capacity | tail -n1)
|
||||
cat "$battery"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,29 +4,136 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||
|
||||
source "$CURRENT_DIR/helpers.sh"
|
||||
|
||||
short=false
|
||||
|
||||
get_remain_settings() {
|
||||
short=$(get_tmux_option "@batt_remain_short" false)
|
||||
}
|
||||
|
||||
battery_discharging() {
|
||||
local status="$(battery_status)"
|
||||
[[ $status =~ (discharging) ]]
|
||||
}
|
||||
|
||||
pmset_battery_remaining_time() {
|
||||
pmset -g batt | grep -o '[0-9]\{1,2\}:[0-9]\{1,2\}'
|
||||
battery_charged() {
|
||||
local status="$(battery_status)"
|
||||
[[ $status =~ (charged) || $status =~ (full) ]]
|
||||
}
|
||||
|
||||
|
||||
convertmins() {
|
||||
((h=${1}/60))
|
||||
((m=${1}%60))
|
||||
printf "%02d:%02d\n" $h $m $s
|
||||
}
|
||||
|
||||
apm_battery_remaining_time() {
|
||||
local remaining_time="$(convertmins $(apm -m))"
|
||||
if battery_discharging; then
|
||||
if $short; then
|
||||
echo $remaining_time | awk '{printf "~%s", $1}'
|
||||
else
|
||||
echo $remaining_time | awk '{printf "- %s left", $1}'
|
||||
fi
|
||||
elif battery_charged; then
|
||||
if $short; then
|
||||
echo $remaining_time | awk '{printf "charged", $1}'
|
||||
else
|
||||
echo $remaining_time | awk '{printf "fully charged", $1}'
|
||||
fi
|
||||
else
|
||||
echo "charging"
|
||||
fi
|
||||
}
|
||||
|
||||
pmset_battery_remaining_time() {
|
||||
local status="$(pmset -g batt)"
|
||||
if echo $status | grep 'no estimate' >/dev/null 2>&1; then
|
||||
if $short; then
|
||||
echo '~?:??'
|
||||
else
|
||||
echo '- Calculating estimate...'
|
||||
fi
|
||||
else
|
||||
local remaining_time="$(echo $status | grep -o '[0-9]\{1,2\}:[0-9]\{1,2\}')"
|
||||
if battery_discharging; then
|
||||
if $short; then
|
||||
echo $remaining_time | awk '{printf "~%s", $1}'
|
||||
else
|
||||
echo $remaining_time | awk '{printf "- %s left", $1}'
|
||||
fi
|
||||
elif battery_charged; then
|
||||
if $short; then
|
||||
echo $remaining_time | awk '{printf "charged", $1}'
|
||||
else
|
||||
echo $remaining_time | awk '{printf "fully charged", $1}'
|
||||
fi
|
||||
else
|
||||
if $short; then
|
||||
echo $remaining_time | awk '{printf "~%s", $1}'
|
||||
else
|
||||
echo $remaining_time | awk '{printf "- %s till full", $1}'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
upower_battery_remaining_time() {
|
||||
battery=$(upower -e | grep -E 'battery|DisplayDevice'| tail -n1)
|
||||
if battery_discharging; then
|
||||
local remaining_time
|
||||
remaining_time=$(upower -i "$battery" | grep -E '(remain|time to empty)')
|
||||
if $short; then
|
||||
echo "$remaining_time" | awk '{printf "%s %s", $(NF-1), $(NF)}'
|
||||
else
|
||||
echo "$remaining_time" | awk '{printf "%s %s left", $(NF-1), $(NF)}'
|
||||
fi
|
||||
elif battery_charged; then
|
||||
if $short; then
|
||||
echo ""
|
||||
else
|
||||
echo "charged"
|
||||
fi
|
||||
else
|
||||
local remaining_time
|
||||
remaining_time=$(upower -i "$battery" | grep -E 'time to full')
|
||||
if $short; then
|
||||
echo "$remaining_time" | awk '{printf "%s %s", $(NF-1), $(NF)}'
|
||||
else
|
||||
echo "$remaining_time" | awk '{printf "%s %s to full", $(NF-1), $(NF)}'
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
acpi_battery_remaining_time() {
|
||||
regex="[0-9]+:[0-9]+"
|
||||
if ! $short; then
|
||||
regex="$regex:[0-9]+"
|
||||
fi
|
||||
acpi -b | grep -v " 0%" | grep -m 1 -Eo "$regex"
|
||||
}
|
||||
|
||||
|
||||
print_battery_remain() {
|
||||
if command_exists "pmset"; then
|
||||
if is_wsl; then
|
||||
local charge_full charge_now current_now
|
||||
charge_full=$(find /sys/class/power_supply/*/charge_full | tail -n1 | xargs cat)
|
||||
charge_now=$(find /sys/class/power_supply/*/charge_now | tail -n1 | xargs cat)
|
||||
current_now=$(find /sys/class/power_supply/*/current_now | tail -n1 | xargs cat)
|
||||
echo $charge_full $charge_now $current_now | awk '{num=($1-$2)/$3; printf "%02d:%02d:%02d", int(num), int(60*num%60), int(3600*num%60)}'
|
||||
elif command_exists "pmset"; then
|
||||
pmset_battery_remaining_time
|
||||
elif command_exists "upower"; then
|
||||
battery=$(upower -e | grep battery | head -1)
|
||||
upower -i $battery | grep remain | awk '{print $4}'
|
||||
elif command_exists "acpi"; then
|
||||
acpi -b | grep -Eo "[0-9]+:[0-9]+:[0-9]+"
|
||||
acpi_battery_remaining_time
|
||||
elif command_exists "upower"; then
|
||||
upower_battery_remaining_time
|
||||
elif command_exists "apm"; then
|
||||
apm_battery_remaining_time
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
if battery_discharging; then
|
||||
print_battery_remain
|
||||
fi
|
||||
get_remain_settings
|
||||
print_battery_remain
|
||||
}
|
||||
main
|
||||
|
|
|
|||
60
scripts/helpers.sh
Normal file → Executable file
|
|
@ -13,20 +13,64 @@ is_osx() {
|
|||
[ $(uname) == "Darwin" ]
|
||||
}
|
||||
|
||||
is_chrome() {
|
||||
chrome="/sys/class/chromeos/cros_ec"
|
||||
if [ -d "$chrome" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
is_wsl() {
|
||||
version=$(</proc/version)
|
||||
if [[ "$version" == *"Linux"* || "$version" == *"Microsoft"* || "$version" == *"microsoft"* ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
command_exists() {
|
||||
local command="$1"
|
||||
type "$command" >/dev/null 2>&1
|
||||
local command
|
||||
for command; do
|
||||
type "$command" >/dev/null 2>&1 || return $?
|
||||
done
|
||||
}
|
||||
|
||||
battery_status() {
|
||||
if command_exists "pmset"; then
|
||||
pmset -g batt | awk -F '; *' 'NR==2 { print $2 }'
|
||||
elif command_exists "upower"; then
|
||||
# sort order: attached, charging, discharging
|
||||
for battery in $(upower -e | grep battery); do
|
||||
upower -i $battery | grep state | awk '{print $2}'
|
||||
done | sort | head -1
|
||||
elif command_exists "acpi"; then
|
||||
acpi -b | grep -oi 'discharging' | awk '{print tolower($0)}'
|
||||
acpi -b | awk '{gsub(/,/, ""); print tolower($3); exit}'
|
||||
elif command_exists "upower"; then
|
||||
local battery
|
||||
battery=$(upower -e | grep -E 'battery|DisplayDevice'| tail -n1)
|
||||
upower -i $battery | awk '/state/ {print $2}'
|
||||
elif command_exists "apm"; then
|
||||
local battery
|
||||
battery=$(apm -a)
|
||||
if [ $battery -eq 0 ]; then
|
||||
echo "discharging"
|
||||
elif [ $battery -eq 1 ]; then
|
||||
echo "charging"
|
||||
fi
|
||||
elif command_exists "termux-battery-status" "jq"; then
|
||||
termux-battery-status | jq -er '.status | ascii_downcase'
|
||||
elif is_wsl; then
|
||||
local battery
|
||||
battery=$(find /sys/class/power_supply/*/status | tail -n1)
|
||||
awk '{print tolower($0);}' "$battery"
|
||||
fi
|
||||
}
|
||||
|
||||
float2int() {
|
||||
local float="$1"
|
||||
if [[ $float =~ "," ]]; then
|
||||
echo ${float%,*}
|
||||
elif [[ $float =~ "." ]]; then
|
||||
echo ${float%.*}
|
||||
else
|
||||
echo ${float//%}
|
||||
fi
|
||||
}
|
||||
|
|
|
|||