Отключить уведомление о спаме "Разряжена батарея мыши"

Много раз за последние несколько недель меня уведомляли о низком заряде батареи в моей беспроводной мыши. Каждый раз, когда он выходит из спящего режима и переподключается через Bluetooth, я получаю уведомление. Я получил сотни уведомлений. Я не хочу их, и я не нуждаюсь в них. Да, батарея разряжена, но при 0% (как сообщалось) она будет работать еще как минимум неделю. Уведомление не имеет таймера и будет оставаться видимым, пока я не закрою его.

Как отключить эту пытку?

Понимая, что я могу походить на сварливого старика, я не собираюсь заменять свои батареи, которые годны для использования в качестве обходного пути. Я использую Ubuntu 17.10 с GNOME Shell. Я понятия не имею, что вызывает это. Указатели и предложения будут с благодарностью!

ОБНОВЛЕНИЕ: Оказывается, мышь работала еще около десяти дней после первоначального уведомления. С ОС постоянно напоминают мне, что она скоро перестанет работать. Истощение мелких батарей не очень хороший дизайн. Люди должны заботиться об этом и иметь возможность отключить уведомления.

ОБНОВЛЕНИЕ 2018-10-22: я задал вопрос некоторое время назад. Отмеченный правильный ответ может больше не применяться. Кажется, это ошибка в gnome-settings-daemon, См. Отчет об обновлениях, устраняющих эту проблему: https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1798166

8 ответов

Решение

ОК, я столкнулся с той же проблемой. Причины схожи; Мой Logitech M570 питается от "разряженных" батарей, поскольку он работает МЕСЯЦЕВ на очень низком напряжении щелочи. Поэтому я использую батарейки в других вещах и оставляю мертвые для моего M570.

Лучший ответ, который я нашел, это понизить предупреждение о критическом уровне Power Plugins. Таким образом, вы можете настроить, когда он ворчит.

Вам нужен dconf для командной строки или dconf-editor для версии GUI (для GUI вам нужно сделать sudo apt-get install dconf-tools).

Тем не менее, настройка в общем случае для батарей, поэтому, если вы используете ноутбук или ИБП, вы будете изменять уровни предупреждений для тех, которые могут быть не идеальными.

Для Ubuntu 17.10 (Artful Aardvark) перейдите в org → gnome → settings-daemon → plugins → power. Измените настройку "Процент-низкий" на то, что вы хотите. Я изменил с 10% до 4%.

Это не идеальный ответ, если у вас есть ноутбук, но он подходит для настольного компьютера и лучше, чем заполнять свалку батареями или ворчать.

Для Ubuntu 20: настройки -> уведомления -> питание, а затем отключите кнопку уведомления.

Как предлагается в этом посте, вы можете редактировать настройку UPower:

sudo nano /etc/UPower/UPower.conf

и измените атрибуты ниже:

      PercentageLow=5
PercentageCritical=2

Затем перезапустите службу:

sudo systemctl restart upower

Это может отключить уведомления о батарее, но все же имейте в виду, что на ноутбуке или настольном ПК с несколькими периферийными устройствами, имеющими собственный источник батареи, это отключит уведомления для каждого устройства.

Таким образом, это избавит вас от надоедливых уведомлений, но не даст полного решения.

Я могу подтвердить, что это работает на Ubuntu 18.04 и 20.04. Попробуйте, это может работать и на 17.10.

Копирование решения из сообщения в блоге . Используйте на свой риск.

disable_mouse_notification.sh

      #!/bin/bash
set -e

# https://wrgms.com/disable-mouse-battery-low-spam-notification/

# Check which version you're using
upower --version  
UPOWER_ORIG_VER=`upower --version`

# Check Debian / Ubuntu vs. Arch Linux / Manjaro
OS=`awk -F= '/^ID=/{print $2}' /etc/os-release`  
OS_VER=`awk -F= '/^VERSION_ID=/{print $2}' /etc/os-release | cut -d "\"" -f 2`

if [[ "$OS" == "manjaro" ]]  
then  
    echo "Manjaro detected"
    sudo pacman -S base-devel gtk-doc gobject-introspection git
    PATH_UPOWERD="/usr/lib"
    PATH_UPOWER="/usr/bin"
elif [[ "$OS" == "ubuntu" ]]  
then  
    sudo apt install git gtk-doc-tools gobject-introspection libgudev-1.0-dev libusb-1.0-0-dev autoconf libtool autopoint
    if [[ "$OS_VER" == "20.10" ]]
    then
        echo "Ubuntu version 20.10 (Groovy Gorilla) detected"
        PATH_UPOWERD="/usr/libexec"
        PATH_UPOWER="/usr/bin"
    else
        echo "Ubuntu version <= 20.04 detected"
        PATH_UPOWERD="/usr/lib/upower"
        PATH_UPOWER="/usr/bin"
    fi
else  
    echo "Unknown system; this script was only tested on ubuntu and manjaro."
    exit 1
fi

# Download and patch upowerd
#
git clone https://gitlab.freedesktop.org/upower/upower  
cd upower/src  
wget https://gist.githubusercontent.com/guiambros/f2bf07f1cc085f8f0b0a9e04c0a767b4/raw/ef90dfcfa2489bab577bd984a6082abacdf8b0b1/up-device.patch  
patch < up-device.patch  
cd ..  
./autogen.sh
./configure
make

# Install upowerd
#
pushd .  
cd src/.libs  
strip upowerd  
sudo chown root.root upowerd  
sudo mv upowerd ${PATH_UPOWERD}/upowerd-silent  
cd ${PATH_UPOWERD}  
sudo mv upowerd upowerd-original  
sudo ln -s upowerd-silent upowerd  
popd

# Install upower
#
pushd .  
cd tools/.libs  
strip upower  
sudo chown root.root upower  
sudo mv upower ${PATH_UPOWER}/upower-silent  
cd ${PATH_UPOWER}  
sudo mv upower upower-original  
sudo ln -s upower-silent upower  
popd

# Restart upowerd
#
sudo systemctl restart upower

# Compare versions before/after (they will likely be different, but it depends on what your distro packages by default)
echo "upower version BEFORE the update:"  
echo "${UPOWER_ORIG_VER}"  
echo "-------------------------------------"  
echo "upower version AFTER the update:"  
upower --version

Результат:

      $ upower --version

upower: ошибка поиска символа: upower: неопределенный символ: up_client_get_devices2

По крайней мере, уведомление пропало сразу.

Вы можете использовать скрипт, который закрывает сообщение, как только оно открывается (с задержкой в ​​0,5 секунды, для открытия окна сообщения требуется время). Это не идеально, потому что закрывает последнее окно уведомлений в стеке окон. Поэтому существует небольшая вероятность закрыть неправильное уведомление, если оно появляется почти одновременно с сообщением со сводкой "Разряжена батарея мыши".

зависимости:

sudo apt install python-dbus wmctrl -y

Это для XFCE. Вам придется настроить его для гнома, если это то, что вы используете. Для xfce следующая команда закрывает последнее окно уведомления:

wmctrl -i -c $(wmctrl -lx | awk '/xfce4-notifyd\.Xfce4-notifyd/{print $1}' | tail -n 1)

awk фильтрует окна по классу окон xfce4-notifyd.

Класс окна рабочего стола mate - это mate-tification-daemon, я не уверен в Gnome.

Измените эту строку для вашего DE в сценарии.

Сохраните следующий скрипт, сделайте его исполняемым и настройте его на запуск.

#!/usr/bin/env python
import glib
import dbus
import os
import time
from dbus.mainloop.glib import DBusGMainLoop

def close_notification(bus, message):
  keys = ["app_name", "replaces_id", "app_icon", "summary",
          "body", "actions", "hints", "expire_timeout"]
  args = message.get_args_list()
  if len(args) == 8:
    notification = dict([(keys[i], args[i]) for i in range(8)])
    if notification["summary"] == "Mouse battery low":
       time.sleep(.5)
       # Adapt next command for your DE
       os.system("wmctrl -i -c $(wmctrl -lx | awk '/xfce4-notifyd\.Xfce4-notifyd/{print $1}' | tail -n 1)")

loop = DBusGMainLoop(set_as_default=True)
session_bus = dbus.SessionBus()
session_bus.add_match_string_non_blocking("type='method_call',interface='org.freedesktop.Notifications',member='Notify',eavesdrop=true")
session_bus.add_message_filter(close_notification)
glib.MainLoop().run()

Здесь Ubuntu 18.04 на настольном компьютере, поэтому у меня нет проблем, которые потенциально могут возникнуть у ноутбука с этим решением.

  1. Вы можете проверить, работает ли то, что вы сделали, перезапустив службу upower:

    sudo systemctl restart upower
    
  2. Мне удалось решить эту проблему, изменив файл конфигурации upower:

    sudo nano /etc/dbus-1/system.d/org.freedesktop.UPower.conf
    

Я просто закомментировал всю конфигурацию, оставив пустой <busconfig></busconfig> тег.

Решение, упомянутое в: https://wrgms.com/disable-mouse-battery-low-spam-notification/ , сработало для меня (в Ubuntu 18.04)

Я тоже получил следующую ошибку на последнем шаге для команды «upower --version»: upower: ошибка поиска символа: upower: неопределенный символ: up_client_get_devices2

Затем я внес следующие изменения, как было предложено в разделе комментариев, т.е.:

  1. Заменено «git clone на «git clone --single-branch --branch UPOWER_0_99_7 https://gitlab.freedesktop.org/upower/upower»https://gitlab.freedesktop.org/upower/upower» (начиная с моей версии upower ). было 0,99,7)
  2. Установил «intltool» с помощью «sudo apt-get install intltool» перед запуском «./autogen.sh»

После включения этих изменений ошибка исчезла, как и уведомление о заряде батареи мыши! Спасибо Ги Амброс!!

Я никогда не пользовался Bluetooth-мышью, но если я нажму на ее значок, он даст мне варианты плагинов. Среди них есть плагин управления питанием. Возможно, отключение может помочь.

Другие вопросы по тегам