Я пытаюсь создать динамическое приглашение, которое использует цветовые кодировки для предоставления визуальных подсказок о состоянии батареи.
Я буду использовать pmset -g batt
для получения всей этой информации.
Пока я работаю с получением
- Процент батареи
- Аккумулятор заряжается, разряжается, заряжается - состояние
- Расчетное время работы от батареи до заряда или до разряда (= оставшееся время)
Номер 1 можно получить по pmset -g batt | egrep '([0-9]+\%).*' -o --colour=auto | cut -f1 -d';'
, и результат будет 100%
(ну, в настоящее время, так как моя батарея полностью заряжена).
Номер 2 можно получить с помощью pmset -g batt | awk '/charging|discharging|charged/ {print $4}' | cut -f1 -d';'
, но для его корректной работы в приглашении вам нужно изменить его на pmset -g batt | awk '/charging|discharging|charged/ {print $4}' | cut -f2 -d';'
- который будет показывать неловкое пустое место перед словом. поэтому " charged"
вместо "charged"
, " discharging"
вместо "discharging"
и " charging"
вместо "charging"
. Это нормально, я думаю, но я думаю, что это может быть продолжено.
Номер 3 можно получить по pmset -g batt | grep -Eo '([0-9][0-9]|[0-9]):[0-5][0-9]'
- но если ваша батарея полностью заряжена, вы получите крутой 0:00
, что не имеет смысла.
Хорошо, мы установили, что такая информация может быть извлечена и может отображаться, по крайней мере, в самом терминале, как насчет проблемы с динамическим запросом?
Ну, вот что у меня сейчас есть:
[100%] [] [ charged] [Sat Nov 10 21:24:34] [~] >>
Это не совсем идеально. Например, []
вообще не нужно показывать, учитывая, что информация будет отображаться 0:00
. [ charged]
также немного ненужен.
Итак, вот что я предлагаю спросить, как это сделать:
- Когда батарея полностью заряжена, просто покажите процент, без "
[time left / time to charge]
" и без "[ charged]
- Когда батарея разряжается, покажите процент и "
[time left]
(цвет в процентах может быть изменен?).
- Когда батарея заряжается, укажите процент и "
[time left]
(процент может быть желтым).
- Когда батарея критична (скажем, 15%) (процент может быть красным)
Теперь я дошел до этого:
export PS1="[\$(pmset -g batt | egrep '([0-9]+\%).*' -o --colour=auto | cut -f1 -d';')] [\$(pmset -g batt | grep -Eo '([0-9][0-9]|[0-9]):[0-5][0-9]')] [\$(pmset -g batt | awk '/charging|discharging|charged/ {print $4}' | cut -f2 -d';')] [\d \t]"
что дает мне [100%] [0:00] [ charged] [Sat Nov 10 21:32:38]
В любом случае, вернемся к этой странной cut -f1
против cut -f2
разницы между терминалом и подсказкой. Если я введу cut -f1
в приглашение export PS1
, я получу это:
[100%] [0:00] [ -InternalBattery-0 (id=4194403) 100%] [Sat Nov 10 21:34:44]
Во всяком случае, я думаю, что должен быть способ: "О, 0:00? Вообще не отображать этот сегмент приглашения" - но я не уверен, как это сделать.
Итак, резюмируя, я пытаюсь использовать «Заряженный, Зарядка, Разряд» для установки цвета батареи в процентах, заряженный = обычный цвет, зарядка = желтый, разрядка = ... зеленый ?, менее 20% = паника красный цвет. 5% мигать? : D
Я также пытаюсь использовать время, оставшееся до зарядки, и время, оставшееся до зарядки, чтобы оно отображалось в самой подсказке, динамически.
Любой совет будет высоко ценится.
p.s. дополнительные бонусные баллы за показ [оценки], если pmset -g batt
приводит к (no estimate)
в оставшееся время заряда
p.p.s. дополнительные бонусные баллы № 2 для выяснения, что делать с (т. е. это состояние, которое не (no estimate)
, но иногда будет происходить.
Now drawing from 'AC Power'
-InternalBattery-0 (id=4194403) 89%; AC attached; not charging present: true