是否有“请勿打扰”选项来暂时隐藏通知,例如在 macbook 上?

Lam*_*mda 16 notification indicator scripts notify-osd notify-send

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

我刚刚安装了 chrome,我通常会收到群文本和其他通知的垃圾邮件,这在我尝试工作时会很烦人。 Ubuntu 是否存在类似的东西?

Ser*_*nyy 11

介绍

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

-m被使用时,通知-OSD将被阻塞之前发送一个最后通知。如果有另一个脚本实例正在运行,它将显示一个图形弹出窗口,通知用户该脚本已经在执行其工作。

当使用-u选项调用时,脚本将停止阻止通知并通过显示一个来确认。如果之前没有脚本实例在运行,用户将被通知现在没有任何阻止。

脚本源

脚本源可在此处获得。有关更多最新版本,您始终可以在我的github上找到它。您可以安装 gitsudo 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
Run Code Online (Sandbox Code Playgroud)

只获取脚本本身。

wget https://raw.githubusercontent.com/SergKolo/sergrep/master/notify-block.sh  && chmod +x notify-block.sh
Run Code Online (Sandbox Code Playgroud)

.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
Run Code Online (Sandbox Code Playgroud)

截图

图片1

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

在此处输入图片说明

静音前的最终通知


Jac*_*ijm 10

1. 重大更新

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

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

此外,对界面和行为的许多改进。

在此处输入图片说明 在此处输入图片说明

安装不变(ppa):

sudo apt-add-repository  ppa:vlijm/nonotifs
sudo apt-get update
sudo apt-get install nonotifs
Run Code Online (Sandbox Code Playgroud)

2.旧的(er)答案

静音/显示通知的指示器

通过下面的指示,您可以选择暂时关闭通知:

在此处输入图片说明

或显示通知:

在此处输入图片说明

这个怎么运作

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

如何设置


按照现在对于 Trusty、Vivid、Wily、Xenial):

sudo apt-add-repository  ppa:vlijm/nonotifs
sudo apt-get update
sudo apt-get install nonotifs
Run Code Online (Sandbox Code Playgroud)

这将全局安装(包括启动器)。首选通过 ppa 安装,因为它维护最新版本,并定期更新。
该指标将在 Dash 中显示为NoNotifications

如果您通过 ppa 安装,但以前从下面手动安装,请先运行rm ~/.local/share/applications/nonotif.desktop以删除本地.desktop文件。


或手动:

该解决方案存在多个项目,您只需将它们存储在同一个目录中即可。

  1. 创建一个目录或文件夹(可以在您的主目录中的任何位置,例如)
  2. 指标:将下面的脚本复制到一个空文件中,另存为nonotif_indicator.py

    sudo apt-add-repository  ppa:vlijm/nonotifs
    sudo apt-get update
    sudo apt-get install nonotifs
    
    Run Code Online (Sandbox Code Playgroud)
  3. dbus-monitor脚本; 将它(完全)保存nonotifs.sh 在与第一个脚本相同的目录中:

    sudo apt-add-repository  ppa:vlijm/nonotifs
    sudo apt-get update
    sudo apt-get install nonotifs
    
    Run Code Online (Sandbox Code Playgroud)

    使这个脚本可执行

  4. 三个图标;右键单击它们中的每一个并将它们与两个脚本一起保存为(完全正确):

    在此处输入图片说明 <-- green.png

    在此处输入图片说明 <-- red.png

    在此处输入图片说明<-- grey.png

  5. 就是这样。现在使用以下命令测试运行指标:

    python3 /path/to/nonotif_indicator.py
    
    Run Code Online (Sandbox Code Playgroud)

    并打开/关闭通知

启动器

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

在此处输入图片说明

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

    在此处输入图片说明

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

    #!/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()
    
    Run Code Online (Sandbox Code Playgroud)
  • 编辑行:

    Exec=python3 /path/to/nonotif_indicator.py
    
    Run Code Online (Sandbox Code Playgroud)

    Icon=/path/to/nonotificon.png
    
    Run Code Online (Sandbox Code Playgroud)

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

将指标添加到启动应用程序

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

/bin/bash -c "sleep 15 && python3 /path/to/nonotif_indicator.py"
Run Code Online (Sandbox Code Playgroud)