16.04에서 Unity를 사용합니다. 어떤 이유로 배터리 부족에 대한 팝업 알림이 표시되지 않습니다. 배터리가 "배터리 부족"쪽에 있는지 확인하려면 상단 패널의 배터리 아이콘을 사용해야합니다. 16.04의 기본 동작입니까? 또는 배터리 부족으로 팝업이 나타나지 않습니까?
16.04에서 Unity를 사용합니다. 어떤 이유로 배터리 부족에 대한 팝업 알림이 표시되지 않습니다. 배터리가 "배터리 부족"쪽에 있는지 확인하려면 상단 패널의 배터리 아이콘을 사용해야합니다. 16.04의 기본 동작입니까? 또는 배터리 부족으로 팝업이 나타나지 않습니까?
답변:
indicator-power
이 명령으로 다시 설치 하십시오 :
sudo apt-get install --reinstall indicator-power
그래도 문제가 해결되지 않으면 이전 답변 중 하나에서 제공 한 배터리 모니터링 스크립트를 사용하는 것이 좋습니다 : https://askubuntu.com/a/603322/295286
아래는 배터리 충전량이 일정 비율을 초과했을 때 알려주고 10 %가되면 시스템을 일시 중단시키는 python 스크립트입니다. 사용법은 간단합니다.
python battery_monitor.py INT
여기서 INT는 알림을 받아야하는 원하는 배터리 비율의 정수 값입니다 (예 :) 30
.
Unity 세션에 로그인 할 때마다 위의 명령을 시작 응용 프로그램에 추가하여이 스크립트를 시작할 수도 있습니다
채팅 및 댓글의 OP 요청에 따라 이제 스크립트는 첫 번째 방전 알림에 대한 두 번째 인수와 청구 알림에 대한 두 번째 인수를 사용합니다.
Github Gitst로도 이용 가능
#!/usr/bin/env python
from gi.repository import Notify
import subprocess
from time import sleep, time
from sys import argv
import dbus
def send_notification(title, text):
try:
if Notify.init(argv[0]):
n = Notify.Notification.new("Notify")
n.update(title, text)
n.set_urgency(2)
if not n.show():
raise SyntaxError("sending notification failed!")
else:
raise SyntaxError("can't initialize notification!")
except SyntaxError as error:
print(error)
if error == "sending notification failed!":
Notify.uninit()
else:
Notify.uninit()
def run_cmd(cmdlist):
try:
stdout = subprocess.check_output(cmdlist)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout
def run_dbus_method(bus_type, obj, path, interface, method, arg):
if bus_type == "session":
bus = dbus.SessionBus()
if bus_type == "system":
bus = dbus.SystemBus()
proxy = bus.get_object(obj, path)
method = proxy.get_dbus_method(method, interface)
if arg:
return method(arg)
else:
return method()
def suspend_system():
run_dbus_method('session',
'com.canonical.Unity',
'/com/canonical/Unity/Session',
'com.canonical.Unity.Session',
'Suspend', 'None')
def get_battery_percentage():
output = run_cmd(['upower', '--dump']).decode().split('\n')
found_battery = False
for line in output:
if 'BAT' in line:
found_battery = True
if found_battery and 'percentage' in line:
return line.split()[1].split('%')[0]
def main():
end = time()
battery_path = ""
for line in run_cmd(['upower', '-e']).decode().split('\n'):
if 'battery_BAT' in line:
battery_path = line
break
while True:
notified = False
while subprocess.call(['on_ac_power']) == 0:
sleep(0.25)
run_dbus_method('system', 'org.freedesktop.UPower',
battery_path, 'org.freedesktop.UPower.Device',
'Refresh', 'None')
battery_percentage = int(get_battery_percentage())
if battery_percentage == int(argv[2]) and not notified:
subprocess.call( ['zenity', '--info','--text', 'Battery reached' + argv[2] + '%' ] )
notified = True
while subprocess.call(['on_ac_power']) == 1:
sleep(0.25)
run_dbus_method('system', 'org.freedesktop.UPower',
battery_path, 'org.freedesktop.UPower.Device',
'Refresh', 'None')
battery_percentage = int(get_battery_percentage())
if battery_percentage <= int(argv[1]):
if battery_percentage <= 10:
send_notification('Low Battery',
'Will suspend in 60 seconds')
sleep(60)
suspend_system()
continue
if end < time():
end = time() + 600
send_notification('Low Battery', 'Plug in your charger')
if __name__ == '__main__':
main()
이것은 정상이 아니며 16.04가 실행 중이며 팝업이 표시되지만 그놈 쉘 tho를 사용하고 있습니다.
메시지를 제공하는 스크립트를 만들 수 있습니다.
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -le 10 ]
then
notify-send "Battery low" "Battery level is ${battery_level}%!"
fi
그런 다음 크론 작업을 수행하고 몇 분마다 실행하십시오.
crontab -e
2를 눌러 nano 편집기 (cron 작업을 수행 한 적이없는 경우에만)를 선택하고 Enter를 누른 후 파일을 열고 아래로 스크롤하여 새 행을 추가하십시오. /2 * * * * my-script.sh
를 누른 ctrl + x
다음 입력 y
하고 입력하십시오. 작동합니다. 코어 파일에 대해 잘 모르겠습니다.
bash -c 'while true;do n="$(acpi -b |egrep "[[:digit:]]*%" -o |tr -d "%")";declare -p n;if((n<30));then notify-send "Low battery warning!" "$n%";fi;sleep $((5*60));done'
예, 이것은 정상입니다. 배터리 알림 설정을위한 간단한 bash 스크립트를 작성했습니다.
#!/usr/bin/env bash
# check if acpi is installed.
if [ `dpkg -l | grep acpi | grep -v acpi-support | grep -v acpid | grep -c acpi` -ne 1 ]; then
echo "run 'sudo apt install acpi' then run '$0' again."
exit
fi
if [ $# -eq 1 ] && [ "$1" == "--install" ]; then
echo "installing battery notifier..."
if [ ! -e "$HOME/bin" ]; then
mkdir $HOME/bin
fi
cp $0 $HOME/bin/bn.sh
(crontab -l 2>/dev/null; echo "*/2 * * * * $HOME/bin/bn.sh") | crontab -
else
# check if power adapter is plugged in, if not, check battery status.
if [ -z "`acpi -a | grep on-line`" ]; then
batlvl=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $batlvl -le 15 ] && [ $batlvl -ge 11 ]; then
notify-send "Battery is at $batlvl%. Please plug your computer in."
elif [ $batlvl -le 10 ] && [ $batlvl -ge 6 ]; then
notify-send "Battery is at $batlvl%. Computer will shutdown at 5%."
elif [ $batlvl -le 5 ]; then
notify-send "BATTERY CRITICALLY LOW, SHUTTING DOWN IN 3 SECONDS!"
sleep 3
shutdown -h now
fi
fi
fi
나는 배터리 부족, 전체 배터리 등을 위해 훌륭한 앱을 발견했습니다.
이것을 읽으십시오
http://www.omgubuntu.co.uk/2016/07/ubuntu-battery-monitor-notifications
indicator-power
원하는 경우 패키지를 다시 설치할 수도 있습니다 . 원하는 경우 알림을 제공하는 스크립트를 제공 할 수도 있습니다