Страница 1 из 1
Критический уровень батареи и полноэкранное приложение
Добавлено: 25 июл 2022, 13:49
alek_j
Hi! All, может быть я просто туплю, но вопрос такой: имеем ноутбук, "LMDE 5", и приложение работающее в полноэкранном режиме, приложение довольно прожорливое в смысле питания. Периодически приходится его запускать "в поле" когда ноут работает от акб, обычно все обходилось нормально, но вот на днях пришлось им пользоваться дольше обычного и ноут просто выключился (данные работы приложения сохранить не успели), вот и прошу подсказать либо настройку, либо прогу чтоб предупреждала о критическом разряде, желательно всплывающим окошком т.к. звук чаще всего выключен. В "управлении электропитанием" есть только варианты: бездействовать или сразу выключить. Попробовал настроить гибернацию, не получилось, так хоть какое предупреждение организовать чтоб "пробивало" полноэкранный режим....
Критический уровень батареи и полноэкранное приложение
Добавлено: 25 июл 2022, 14:00
hellonet
Хороший вопрос, тоже бывают такие проблемы с неожиданным выкл. ноута. Как победить тоже не знаю
Критический уровень батареи и полноэкранное приложение
Добавлено: 25 июл 2022, 14:44
Chocobo
самый простой вариант наверное завести скрипт по крону с несложной логикой, который
1. достанет цифру текущего заряда
2. сравнит полученное значения с триггером, скажем в 10%
3. Далее уже от фантазии:
3.1 отправит уведомляху, если в полноэкранном нотификации не порежутся (notify-send
)
3.2 принудительно свернет приклад на переднем плане (wmctrl
)
...
3.X отправит систему спать или в шатдаун (pm)
Критический уровень батареи и полноэкранное приложение
Добавлено: 25 июл 2022, 18:30
велес
Делал себе такой скрипт для LM Cinnamon,инфу брал от сюда
https://ask-ubuntu.ru/questions/726597/ ... buntu-1804 ,но там на заряд,нужно установить acpi и sox(для звукового оповещения).Чтобы проверить заменить в текстовом редакторе 16 на 99.
Сам скрипт :
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -le 16 ]; then #check if the battery level is over 16%
notify-send -u critical "подключи зарядку" "Battery level: ${battery_level}% (charged above 16%)" -i battery-low-charged; play /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga
fi
sleep 30 #wait for 30 seconds before checking again
done
Критический уровень батареи и полноэкранное приложение
Добавлено: 26 июл 2022, 00:02
alek_j
велес, у меня что то не отрабатывает статус, правила срабатывают при любом (уровни тестовые). acpi не ставил, вроде можно и без него, но наверно придется пробовать и такой вариант.
Разобрался, нужны пробелы до и после "=" в строке $battery_status="Discharging"
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`cat /sys/class/power_supply/BAT1/capacity`
battery_status=`cat /sys/class/power_supply/BAT1/status`
if [ $battery_status="Discharging" ]; then
if [ $battery_level -le 100 ]; then
notify-send -u critical "ВНИМАНИЕ !! Низкий уровень заряда" "Battery level: ${battery_level}% (При 5% переход в ждущий режим)" -i battery-full-charged
fi
if [ $battery_level -le 80 ]; then
systemctl suspend
fi
fi
sleep 300
done
Критический уровень батареи и полноэкранное приложение
Добавлено: 26 июл 2022, 14:30
alek_j
Если кому интересно, могу выложить финальный вариант скрипта, единственное что не поборол: сыпит уведомления в строку состояния.
Критический уровень батареи и полноэкранное приложение
Добавлено: 26 июл 2022, 15:04
hellonet
alek_j писал(а): ↑26 июл 2022, 14:30
Если кому интересно, могу выложить финальный вариант скрипта
Интересно
Критический уровень батареи и полноэкранное приложение
Добавлено: 26 июл 2022, 19:06
alek_j
Тогда вот:
Код: Выделить всё
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`cat /sys/class/power_supply/BAT1/capacity`
battery_status=`cat /sys/class/power_supply/BAT1/status`
if [ $battery_status = "Discharging" ]; then
if [ $battery_level -le 15 ]; then
notify-send "ВНИМАНИЕ !! Низкий уровень заряда" "Заряд: ${battery_level}% (При 5% переход в ждущий режим)" -i battery-level-20-symbolic
fi
if [ $battery_level -le 5 ]; then
notify-send -u normal "ПОДГОТОВКА К ПЕРЕХОДУ В ЖДУЩИЙ РЕЖИМ" -i battery-level-10-symbolic
sleep 7
systemctl suspend
fi
fi
sleep 60
done
небольшие пояснения, "BAT1" проверяется по указанному пути, у многих "BAT0". Ждущий режим выбран т.к. гибернация у меня не заработала (вообще, а не в скрипте). Выбранные иконки могут отсутствовать в вашей сборке линя. Все это задумывалось для работы с полноэкранным режимом, у меня оповещение не закрывалось "Х" поэтому от критического режима пришлось отказаться.
Критический уровень батареи и полноэкранное приложение
Добавлено: 26 июл 2022, 21:55
madesta
alek_j писал(а): ↑26 июл 2022, 19:06
Выбранные иконки могут отсутствовать в вашей сборке линя
Так не проблема, можно задать даже сторонний значок. Например:
#!/bin/bash
i=путь_к папке_со_значком
...
notify-send --icon=$i/значок.png "текст сообщения"
Только его размеры должны быть "вменяемыми", например, 48x48.
alek_j писал(а): ↑26 июл 2022, 19:06
у меня оповещение не закрывалось
Насколько понял, не закрывается нотификация? А если попробовать её запускать с параметром длительности отображения в миллисекундах?
notify-send -t=...
alek_j писал(а): ↑26 июл 2022, 00:02
sleep 300
Я верно понял, что скрипт постоянно висит в задачах, но отработка самой задачи с интервалом в 5 минут?
Критический уровень батареи и полноэкранное приложение
Добавлено: 26 июл 2022, 22:51
alek_j
madesta писал(а): ↑26 июл 2022, 21:55
Так не проблема,
я просто предупредил, что иконки могут пропасть
madesta писал(а): ↑26 июл 2022, 21:55
Насколько понял
именно так, "-t" отрабатывает не во всех случаях, например не работает вместе с "-u critical", в некоторых сборках, в гноме (если верить ману)
madesta писал(а): ↑26 июл 2022, 21:55
скрипт постоянно висит в задачах
да, мне показалось, что так проще чем через крон
Критический уровень батареи и полноэкранное приложение
Добавлено: 27 июл 2022, 12:43
alek_j
После "полевых испытаний" вылезла проблема: без "-u criticfl" не все полноэкранные сообщения "пробиваются" уведомлениями, соответственно и не проходит уведомление о переходе в ждущий режим, и, если в это время двигается мышь или нажимаются клавиши, то переход в ждущий режим нормально не происходит (сразу будится не успев перейти), следовательно теряется весь смысл для полноэкранного режима. Подкинте идею куда копать....
Критический уровень батареи и полноэкранное приложение
Добавлено: 27 июл 2022, 13:25
Chocobo
Это стандартное поведение что клавомышь выводит из ждущего.
можно отключить и wakeup на них, но вопрос насколько это удобно.
Как уже предлагал в
#2 - можно свернуть нафиг все полноэкранное и через несколько секунд задержки тушить сеанс, будет тебе триггер что руки с мыши лучше скинуть
Или воспроизвести звуковой алерт что вот-вот через минуту настанет печаль, будет время подготовиться к экстренному отключению)
Критический уровень батареи и полноэкранное приложение
Добавлено: 27 июл 2022, 19:05
alek_j
Chocobo, для себя любимого может так бы и сделал, но пользуюсь не только я один, а так пугать народ - чересчур. Нашел на просторах пост с подобной проблемой, там говорится о xmessage
и aosd_cat
которые пробивают полный экран, и опять "но", первый жуть по внешнему виду и не дружит с русским, хотя может мало пытался настроить, второго в моей сборке не было, и, хотя пытался все сделать без установки доп пакетов, все же поставил, но так и не смог добиться от него вывода на дисплей.
Да, по текущему скрипту: если к "-u" добавить "-t", то уведомления из "колокольчика" будут сами пропадать.
PS xmessage
у меня полный экран не пробил
Критический уровень батареи и полноэкранное приложение
Добавлено: 07 сен 2023, 10:21
Dja
alek_j писал(а): ↑26 июл 2022, 19:06
capacity
видимо, появляется при непосредственной работе от АКБ?
cat: /sys/class/power_supply/BAT0/capacity: Нет такого файла или каталога
Критический уровень батареи и полноэкранное приложение
Добавлено: 07 сен 2023, 10:46
alek_j
точно не скажу, когда этим озадачился файл там был, но по идее, он должен быть с самого начала т.к. для ноута в нем инфа о состоянии батареи (заряд, разряд...). Кстати, в результате так скрипт и забросил, не нешел чем пробить полный экран, но в работе на ноуте его оставил, для тех кто прошляпил разряд акб
Критический уровень батареи и полноэкранное приложение
Добавлено: 07 сен 2023, 10:54
Dja
alek_j, у меня везде сдохшие акб ) видимо, потому и нет файла ))) Праздное любопытство )