是否存在暂时隐藏通知的“请勿打扰”选项,例如在macbooks上?

是否存在“请勿打扰模式”,就像OSX设备一样,您可以决定通知何时可以打扰您。

我刚刚安装了chrome,我通常会被群组文本和其他通知发送垃圾邮件,这在我尝试工作时会很烦人。在我的Macbook上我可以选择打开“请勿打扰”,这会使所有forms的通知无效。 Ubuntu有类似的东西吗?

1.重大更新

刚刚完成指标的完全重写版本(0.9.0)。 选项现在包括:

  • 仅抑制包含特定字符串的通知
  • 抑制(静音)声音
  • 记录错过的通知
  • 在启动时运行
  • 记住下次运行时的最后一个状态(抑制与否)

此外,在界面和行为方面进行了许多改进。

在此处输入图像描述 在此处输入图像描述

安装不变(ppa):

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

2.老(呃)回答

指示器静音/显示通知

使用下面的指标,您可以选择暂时关闭通知:

在此处输入图像描述

或显示通知:

在此处输入图像描述

这个怎么运作

诀窍是一个简单的命令,使用dbus-monitor拦截即将发出的通知并在它们出现之前将其停止。
该指标是一个用户友好的“包装器”,可以将其关闭和打开。

如何设置


截至目前适用于Trusty,Vivid,Wily,Xenial ):

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

这将全局安装(包括启动器)。 通过ppa安装是首选,因为它维护最新版本,并定期更新。
该指标将在Dash中显示为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. 三个图标; 右键单击它们并将它们与两个脚本一起保存(确切地说):

    在此处输入图像描述 < - green.png

    在此处输入图像描述 < - red.png

    在此处输入图像描述 < - grey.png

  5. 而已。 现在使用以下命令测试运行指标:

     python3 /path/to/nonotif_indicator.py 

    和切换通知

发射台

如果你想要一个带指示器的启动器:

在此处输入图像描述

  • 复制下面的图标,将其另存为nonotificon.png

    在此处输入图像描述

  • 将下面的代码复制到一个空文件中:

     [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 

    根据实际路径,将文件保存为~/.local/share/applications nonotif.desktop

将指示符添加到启动应用程序

您可以将指示符添加到启动应用程序:Dash>启动应用程序>添加。 添加命令:

 /bin/bash -c "sleep 15 && python3 /path/to/nonotif_indicator.py" 

介绍

下面的脚本允许将任何通知静音显示在屏幕上。 有两个基本选项-m用于静音, -u用于取消静音。 两者都放在一个.desktop文件中作为启动器。

使用-m ,notify-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 < 

.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 

截图

此搜索

快捷方式文件已锁定到启动器

在此处输入图像描述

静音前的最终通知