Есть ли опция «не беспокоить», чтобы временно скрыть уведомления, как в MacBook?

Существует ли режим «Не беспокоить», как для устройства OSX, где вы можете решить, когда уведомление может беспокоить вас или нет ..

Я только что установил Chrome, и я обычно получаю спам по групповым текстам и другим уведомлениям, которые могут раздражать, когда я пытаюсь работать. На моем MacBook есть возможность включить «Не беспокоить», что отключает все формы уведомлений. Существует ли что-то подобное для Ubuntu?

13
задан 25 October 2016 в 23:44

2 ответа

1. Основное обновление

Только что законченный полностью переписанная версия индикатора (0.9.0). Опции теперь включают:

  • подавление только уведомлений, содержа определенные строки
  • подавление (отключения звука) звук
  • вход пропущенных уведомлений
  • работа запуска
  • запоминание последнего состояния (подавление или не) на следующем запуске

Кроме того, многие, много улучшений в интерфейсе и поведении.

enter image description here enter image description here

Установка неизменна (ppa):

sudo apt-add-repository  ppa:vlijm/nonotifs
sudo apt-get update
sudo apt-get install nonotifs

2. Старый (er) ответ

Индикатор для отключения звук/показывания уведомлений

С индикатором ниже, можно принять решение временно выключить уведомления:

enter image description here

или выставочные уведомления:

enter image description here

Как это работает

Прием является простой командой, с помощью dbus-monitor прервать предстоящие уведомления и остановить их, прежде чем они появятся.
Индикатор является удобной для пользователя "оберткой" для отключения его и на.

Как настроить


Согласно теперь (для Надежного человека, Яркого, Коварного, Гостеприимного):

sudo apt-add-repository  ppa:vlijm/nonotifs
sudo apt-get update
sudo apt-get install nonotifs

Это установит глобально (включая средство запуска). Установка через ppa предпочтена, так как это поддерживает последнюю версию и регулярно обновляется.
Индикатор появится в Тире как NoNotifications

Если Вы устанавливаете ppa, но ранее установленный вручную снизу, работайте rm ~/.local/share/applications/nonotif.desktop сначала удалить локальное .desktop файл.


Или вручную:

Решение существует многих объектов, которые просто необходимо сохранить вместе в одном и том же каталоге.

  1. Создайте каталог, или папка (может быть где угодно в Вашем корневом каталоге, например),
  2. Индикатор: Скопируйте сценарий ниже в пустой файл, сохраните его как nonotif_indicator.py:

    #!/usr/bin/env python3
    import os
    import signal
    import gi
    import subprocess
    gi.require_version('Gtk', '3.0')
    gi.require_version('AppIndicator3', '0.1')
    from gi.repository import Gtk, AppIndicator3
    
    currpath = os.path.dirname(os.path.realpath(__file__))
    proc = "nonotifs.sh"
    
    def run(path):
        try: 
            pid = subprocess.check_output(["pgrep", "-f", proc]).decode("utf-8").strip()
        except subprocess.CalledProcessError:
            subprocess.Popen(path+"/"+proc)
    
    def show():
        try:
            pid = subprocess.check_output(["pgrep", "-f", proc]).decode("utf-8").strip()
            subprocess.Popen(["pkill", "-P", pid])
        except subprocess.CalledProcessError:
            pass
    
    class Indicator():
        def __init__(self):
            self.app = 'nonotif'
            iconpath = currpath+"/grey.png"
            self.testindicator = AppIndicator3.Indicator.new(
                self.app, iconpath,
                AppIndicator3.IndicatorCategory.OTHER)
            self.testindicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
            self.testindicator.set_menu(self.create_menu())
    
        def create_menu(self):
            menu = Gtk.Menu()
            item_quit = Gtk.MenuItem('Quit')
            item_quit.connect('activate', self.stop)
            item_silent = Gtk.MenuItem("Don't disturb")
            item_silent.connect('activate', self.silent)
            item_show = Gtk.MenuItem("Show notifications")
            item_show.connect('activate', self.show)
            menu.append(item_quit)
            menu.append(item_silent)
            menu.append(item_show)
            menu.show_all()
            return menu
    
        def stop(self, source):
            Gtk.main_quit()
    
        def silent(self, source):
            self.testindicator.set_icon(currpath+"/red.png")
            run(currpath)
    
        def show(self, source):
            self.testindicator.set_icon(currpath+"/green.png")
            show()
    
    Indicator()
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    Gtk.main()
    
  3. dbus-monitor сценарий; сохраните его (точно) как nonotifs.sh в одном и том же каталоге как первый сценарий:

    #!/bin/bash
    dbus-monitor "interface='org.freedesktop.Notifications'" | xargs -I '{}' pkill notify-osd
    

    Сделайте этот исполняемый файл сценария

  4. Три значка; щелкните правой кнопкой по каждому из них и сохраните их вместе с этими двумя сценариями как (точно):

    enter image description here <-- green.png

    enter image description here <-- red.png

    enter image description here<-- grey.png

  5. Именно. Теперь тестовый прогон индикатор с командой:

    python3 /path/to/nonotif_indicator.py
    

    и уведомления о переключателе на /

Средство запуска

В случае, если Вы хотели бы средство запуска с индикатором:

enter image description here

  • Скопируйте значок ниже, сохраните его как nonotificon.png:

    enter image description here

  • Скопируйте код ниже в пустой файл:

    [Desktop Entry]
    Type=Application
    Name=No Notifications
    Exec=python3 /path/to/nonotif_indicator.py
    Icon=/path/to/nonotificon.png
    Type=Application
    
  • Отредактируйте строки:

    Exec=python3 /path/to/nonotif_indicator.py
    

    и

    Icon=/path/to/nonotificon.png
    

    согласно фактическим путям, и сохранили файл как nonotif.desktop в ~/.local/share/applications

Добавьте индикатор для Запущения Приложений

Можно добавить индикатор для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:

/bin/bash -c "sleep 15 && python3 /path/to/nonotif_indicator.py"
9
ответ дан 26 October 2016 в 09:44

Введение

Рев сценария позволяет отключать звук любых уведомлений от появления на экране. Существует две основных опции -m для бесшумного режима и -u для небесшумного режима. Оба соединены в a .desktop файл для служения в качестве средства запуска.

Когда -m используется, уведомление-osd отправит заключительное уведомление прежде чем быть заблокированным. Если будет другой экземпляр выполнения сценария, то он покажет графическое всплывающее окно, которое сообщит пользователю, что сценарий уже делает свое задание.

При вызове -u опция, сценарий прекратит блокировать уведомления и подтвердит это путем показа один. Если никакой предыдущий экземпляр сценария не будет работать, то пользователь будет уведомлен, что ничто не заблокировано прямо сейчас.

Источник сценария

Источник сценария доступен здесь. Для более актуальной версии можно всегда находить его на моем GitHub. Можно установить мерзавца с sudo apt-get install git и клонируйте целый репозиторий с git clone https://github.com/SergKolo/sergrep.git или используйте

wget https://raw.githubusercontent.com/SergKolo/sergrep/master/notify-block.sh  && chmod +x notify-block.sh

получить просто сам сценарий.

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: 1047481448@qq.com 
# Date: May 10th 2016
# Purpose: Notification blocker for Ubuntu
# Written for: 
# Tested on:  Ubuntu 14.04 LTS
###########################################################
# Copyright: Serg Kolo ,2016 
#    
#     Permission to use, copy, modify, and distribute this software is hereby granted
#     without fee, provided that  the copyright notice above and this permission statement
#     appear in all copies.
#
#     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
#     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
#     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
#     DEALINGS IN THE SOFTWARE.

ARGV0="$0"
ARGC=$#

mute_notifications()
{ 

  self=${ARGV0##*/}
  CHECK_PID_NUMS=$(pgrep -f  "$self -m" | wc -l )
  if [ "$CHECK_PID_NUMS" -gt 2 ]; then
     zenity --info --text "Notifications already disabled"
     exit 0
  else  
     killall notify-osd 2> /dev/null # ensure we have PID
     notify-send 'All notifications will be muted after this one' 
     sleep 1
     while true 
     do 
        PID=$(pgrep notify-osd)
        [  "x$PID" != "x" ]  && 
        kill -TERM $PID 
        sleep 0.25
     done
  fi
}

unmute()
{
  echo $0
  self=${0##*/}

  MUTE_PID=$(pgrep -f  "$self -m" ) #match self with -m option
  if [ "x$MUTE_PID" != "x"   ];then
     kill -TERM "$MUTE_PID" &&
     sleep 1 && # ensure the previous process exits
     notify-send "UNMUTED"
     exit 0
  else 
     notify-send "NOTIFICATIONS ALREADY UNMUTED"
     exit 0
  fi  
}

print_usage()
{
  cat > /dev/stderr <<EOF
  usage: notify-block.sh [-m|-u]
EOF
exit 1
}
main()
{
  [ $# -eq 0  ] && print_usage

  while getopts "mu" options
  do

     case ${options} in
          m) mute_notifications & ;;
          u) unmute ;;
          \?) print_usage ;;
     esac

  done
}
main "$@"

Шаблон ярлыка .desktop

Это - просто пример того, что я лично использую. Замените каждого Exec= строка с соответствующим путем к сценарию в Вашей среде. Конечно, Ваш Icon= должен будет быть изменен также. Предпочтительно, удержите этот файл Ваш ~/.local/share/applications папка

[Desktop Entry]
Name=Notification Blocker
Comment=blocks any on-screen notifications
Terminal=false
Actions=Mute;Unmute
Type=Application
Exec=/home/xieerqi/sergrep/notify-block.sh -m
Icon=/home/xieerqi/Desktop/no-notif2.png

[Desktop Action Mute]
Name=Mute Notifications
Exec=/home/xieerqi/sergrep/notify-block.sh -m
Terminal=false

[Desktop Action Unmute]
Name=Unmute Notifications
Exec=/home/xieerqi/sergrep/notify-block.sh -u
Terminal=false

Снимки экрана

image1

Файл ярлыка заблокирован к средству запуска

enter image description here

Заключительное уведомление перед отключением звука

11
ответ дан 26 October 2016 в 09:44
  • 1
    PPA теперь имеет ловкую версию, Вы возражали бы взглянуть на обновление инструкций? – Vadim Peretokin 24 October 2017 в 16:34

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

Похожие вопросы: