16.04 এ কোনও কম ব্যাটারি পপআপ বিজ্ঞপ্তি নেই


10

আমি 16.04 এ ইউনিটি ব্যবহার করি। কিছু কারণে, আমি কম ব্যাটারির জন্য পপআপ বিজ্ঞপ্তি পাচ্ছি না। ব্যাটারি "লো ব্যাটারি" পাশে আছে কিনা তা দেখতে আমাকে শীর্ষ প্যানেলে ব্যাটারি আইকনের উপর নির্ভর করতে হবে। 16.04 এ কি ডিফল্ট আচরণ? বা আমি কম ব্যাটারির জন্য পপ আপ পাচ্ছি না?


আপনি indicator-power প্যাকেজটি পুনরায় ইনস্টল করার চেষ্টা করতে পারেন。 আপনি যদি চান তবে আমি একটি স্ক্রিপ্টও আপনাকে দিতে পারে যা আপনাকে বিজ্ঞপ্তি দিতে পারে
সের্গি কলডায়াজিনি

ধন্যবাদ @ সার্জ, দয়া করে আমাকে একই কাজ করার আদেশ দিন।
ব্যবহারকারী 227495

ঠিক আছে, আমি কয়েক মিনিটের মধ্যে একটি উত্তর পোস্ট করব।
সের্গেই কোলোডিয়াজনি

আমার পোস্টের অধীনে মন্তব্যগুলি চ্যাট করতে সরানো হয়েছে। আমরা সেখানে সমস্যার সমাধান চালিয়ে যেতে পারি।
সের্গেই কলডিয়াজনি

@ সার্জিইকোলডিএজনি এই ল্যাপটপটির কম ব্যাটারি বা মাদারবোর্ডের ব্যাটারি। আলোচিত সমাধানটি কি সাধারণত মাদারবোর্ডের সেন্টিমোস ব্যাটারি নির্দেশ করে যা সাধারণত ঘড়িটি বাঁচিয়ে রাখার জন্য ব্যবহৃত হয়?
একীকরণকারী

উত্তর:


5

indicator-powerএই আদেশটি দিয়ে পুনরায় ইনস্টল করার চেষ্টা করুন :

sudo apt-get install --reinstall indicator-power

যদি এটি সমস্যার সমাধান না করে তবে আমার আগের উত্তরগুলির একটি হিসাবে সরবরাহিত ব্যাটারি পর্যবেক্ষণ স্ক্রিপ্টটি ব্যবহার করুন: https://askubuntu.com/a/603322/295286

নীচে পাইথন স্ক্রিপ্ট যা ব্যাটারি চার্জ নির্দিষ্ট শতাংশের অতীত হয়ে গেলে আপনাকে অবহিত করতে পারে এবং একবার 10% হয়ে গেলে সিস্টেম স্থগিত করে। ব্যবহার সহজ:

python battery_monitor.py INT

যেখানে INT হল আপনার পছন্দসই ব্যাটারি শতাংশের পূর্ণসংখ্যা মান যেখানে আপনাকে বিজ্ঞপ্তিটি পাওয়া উচিত, উদাহরণস্বরূপ 30

ইউনিটি সেশনে প্রতিটি লগইনে এই স্ক্রিপ্টটি শুরু করতে আপনি স্টার্টআপ অ্যাপ্লিকেশনগুলিতে উপরের কমান্ডটি যুক্ত করতে পারেন

সোর্স কোড

চ্যাট এবং মন্তব্যে ওপি অনুরোধ অনুসারে, স্ক্রিপ্টটি এখন দুটি আর্গুমেন্ট গ্রহণ করে, প্রথমে স্রাব নোটিফিকেশন এবং দ্বিতীয় ওএস চার্জ বিজ্ঞপ্তির জন্য।

গিথুব গিস্টস্ট হিসাবেও উপলব্ধ

#!/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()

মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়। এই কথোপকথন চ্যাটে সরানো হয়েছে ।
টেরডন

9

এটি আমার কাছে 16.04 চলছে এবং পপআপগুলি পাওয়া স্বাভাবিক নয় তবে আমি জিনোম শেলটি ব্যবহার করছি।

আপনি এমন একটি স্ক্রিপ্ট তৈরি করতে পারেন যা আপনাকে বার্তা দেয়।

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

তারপরে ক্রোন জব করুন এবং প্রতি কয়েক মিনিটে এটি চালান।


ধন্যবাদ @ আর্ন এন। যদিও কর্নার কাজ চালাতে হয় তা আমি জানি না। এছাড়াও, মূল ফাইলগুলি ফাই করার কোনও উপায় যাতে আমরা স্ক্রিপ্টটি এড়িয়ে যেতে পারি?
ব্যবহারকারী 227495

ক্রোন জব করার জন্য টার্মিনালটি টাইপ করুন টাইপ crontab -eকরুন ন্যানো সম্পাদকটি (কেবল যদি আপনি ক্রোন জব করেন না তবে) 2 টিপুন এবং প্রবেশ করুন, তারপরে একটি ফাইল উইল খুললে নীচে নীচে স্ক্রোল করুন এবং একটি নতুন লাইন যুক্ত করুন। /2 * * * * my-script.sh টিপুন ctrl + xএবং তারপরে টাইপ করুন yএবং প্রবেশ করুন। এটা কাজ করা উচিত। মূল ফাইলগুলি সম্পর্কে দুঃখিত, দুঃখিত।
সাইবার_স্টার

করব. আমি এখনও একে একে চেষ্টা করছি। কোর ফাইলগুলির মাধ্যমে এটি ঠিক করার আশা করছিল।
ব্যবহারকারী 227495

ধন্যবাদ! আমি এই কমান্ডটি স্টার্টআপসগুলিতে রেখেছি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'
VeganEye

3

হ্যাঁ, এটি স্বাভাবিক। ব্যাটারি বিজ্ঞপ্তিগুলি সেট আপ করার জন্য আমি একটি সাধারণ বাশ স্ক্রিপ্ট লিখেছি।

#!/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

আমার গিথুব অ্যাকাউন্টে এটি এবং নির্দেশাবলীও রয়েছে । আমি আশা করি এটি আপনার পক্ষে সহায়তা করে এবং এটিকে আরও সহজ করে তোলে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.