Macbook'larda olduğu gibi bildirimleri geçici olarak gizlemek için “rahatsız etmeyin” seçeneği var mı?


13

Bildirimin sizi ne zaman rahatsız edip edemeyeceğine karar verebileceğiniz OSX cihazında olduğu gibi "Rahatsız etme modu" var mı?

Sadece krom yükledim ve genellikle çalışmayı denediğimde rahatsız edici olabilen grup metinleri ve diğer bildirimler tarafından spamlandım. Ubuntu için böyle bir şey var mı?


Firefox için bir seçenek var, ama ben krom kullanıcı değilim bu yüzden söyleyemem
Sergiy Kolodyazhnyy

Sorun kroma özgü değil, genel olarak bildirimler ..
Lamda


2
Bir senaryo geliştirdik. Şimdiye kadar github'ımda : github.com/SergKolo/sergrep/blob/master/notify-block.sh Cevabımı bugün olur olmaz güncelleyeceğim. Ayrıca başlatıcıya sabitleyebileceğiniz güzel bir kısayol da içerecek
Sergiy Kolodyazhnyy

1
Yanıt düzenlendi, lütfen inceleyin.
Eklememi

Yanıtlar:


9

1. Büyük güncelleme

Göstergenin (0.9.0) tamamen yeniden yazılmış bir sürümünü bitirdim. Seçenekler şimdi şunları içerir:

  • yalnızca belirli dizeleri içeren bildirimleri bastırma
  • sesi bastırma (sesi kapatma)
  • cevapsız bildirimleri günlüğe kaydetme
  • başlangıçta çalışıyor
  • bir sonraki koşuda son durumu (bastırıyor ya da bastırmıyor) hatırlamak

Ayrıca, arayüz ve davranışta birçok, birçok iyileştirme.

resim açıklamasını buraya girin resim açıklamasını buraya girin

Yükleme değişmedi (ppa):

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

2. Eski (er) cevap

Bildirimleri sessize alma / gösterme göstergesi

Aşağıdaki göstergeyle bildirimleri geçici olarak kapatmayı seçebilirsiniz:

resim açıklamasını buraya girin

veya bildirimleri göster:

resim açıklamasını buraya girin

Nasıl çalışır

Hile, dbus-monitoryaklaşan bildirimleri durdurmak ve görünmeden önce durdurmak için kullanılan basit bir komuttur .
Gösterge, kapatıp açmak için kullanıcı dostu bir "sarıcı" dır.

Nasıl kurulur


Gereğince artık ( Trusty için, Canlı, Wily Xenial ):

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

Bu genel olarak yüklenecektir (başlatıcı dahil). En son sürümü koruduğu ve düzenli olarak güncellendiği için ppa ile kurulum tercih edilir.
Gösterge Dash'de NoNotifications olarak görünecektir

Ppa tarafından yüklüyorsanız, ancak daha önce aşağıdan manuel olarak yüklediyseniz, lütfen rm ~/.local/share/applications/nonotif.desktopyerel .desktopdosyayı kaldırmak için önce çalıştırın .


Veya manuel olarak:

Çözüm, bir ve aynı dizinde birlikte depolamanız gereken birkaç öğeden oluşur.

  1. Bir dizin veya klasör oluşturun (örneğin ana dizininizde herhangi bir yerde olabilir)
  2. Gösterge: Aşağıdaki komut dosyasını boş bir dosyaya kopyalayın ve şöyle kaydedin 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-monitorsenaryo; ilk komut dosyasıyla nonotifs.sh aynı dizinde olduğu gibi (tam olarak) kaydedin :

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

    Bu komut dosyasını yürütülebilir yap

  4. Üç simge; her birine sağ tıklayın ve iki komut dosyasıyla birlikte (tam olarak) kaydedin:

    resim açıklamasını buraya girin <- green.png

    resim açıklamasını buraya girin <- red.png

    resim açıklamasını buraya girin<- grey.png

  5. Bu kadar. Şimdi göstergeyi şu komutla test edin:

    python3 /path/to/nonotif_indicator.py

    ve bildirimleri aç / kapat

Başlatıcı

Şu göstergeye sahip bir fırlatıcı istiyorsanız:

resim açıklamasını buraya girin

  • Aşağıdaki simgeyi kopyalayın, kaydedin nonotificon.png:

    resim açıklamasını buraya girin

  • Aşağıdaki kodu boş bir dosyaya kopyalayın:

    [Desktop Entry]
    Type=Application
    Name=No Notifications
    Exec=python3 /path/to/nonotif_indicator.py
    Icon=/path/to/nonotificon.png
    Type=Application
  • Satırları düzenleyin:

    Exec=python3 /path/to/nonotif_indicator.py

    ve

    Icon=/path/to/nonotificon.png

    Gerçek yollara göre ve aynı dosyayı kaydedin nonotif.desktopiçinde~/.local/share/applications

Göstergeyi Başlangıç ​​Uygulamalarına ekleyin

Göstergeyi Başlangıç ​​Uygulamaları'na ekleyebilirsiniz: Çizgi> Başlangıç ​​Uygulamaları> Ekle. Komutu ekleyin:

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

Harikasın! :-)
Fabby

Seni görmek çok güzel @Fabby!
Jacob Vlijm

Yine harika bir senaryo, Jacob! Fikir: Komut dosyası, notify-osd ile birlikte gelen sesli bildirimleri de engelleyebilir mi?
orschiro

@orschiro teşekkürler! Bunlar da notify-osd bildirimleri mi? Hangi bildirimlere başvurduğunuzdan emin değilim.
Jacob Vlijm

1
@RobertOrzanna, 1.0 sürümünde değiştirilen şeylerden biri :)
Jacob Vlijm

11

Giriş

Aşağıdaki komut dosyası, bildirimlerin ekranda görünmemesini sağlar. -mSessiz ve sessiz için iki temel seçenek vardır -u. Her ikisi de .desktopbaşlatıcı görevi görmek üzere bir dosyaya konur .

Ne zaman -mkullanılır, haber osd bloke edilmeden önce son bildirim gönderir. Başka bir komut dosyası örneği varsa, kullanıcıya komut dosyasının zaten işini yaptığını bildiren bir grafik açılır pencere görüntülenir.

-uSeçenek ile çağrıldığında , komut dosyası bildirimleri engellemeyi durduracak ve bir tane göstererek bunu onaylayacaktır. Hiçbir komut dosyası örneği çalışmıyorsa, kullanıcıya şu anda hiçbir şeyin engellenmediği bildirilir.

Komut Dosyası Kaynağı

Komut dosyası kaynağını burada bulabilirsiniz. Daha güncel bir sürüm için her zaman github'ımda bulabilirsiniz . Git ile kurabilir sudo apt-get install gitve tüm veri havuzunu klonlayabilir git clone https://github.com/SergKolo/sergrep.gitveya kullanabilirsiniz

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

sadece betiğin kendisini almak için.

#!/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 kısayol şablonu

Bu sadece kişisel olarak kullandığımın bir örneğidir. Her Exec=satırı, ortamınızdaki komut dosyası için uygun yolla değiştirin. Tabii ki sizin Icon=de değiştirilmesi gerekecek. Tercihen, bu dosyayı ~/.local/share/applicationsklasörünüzde saklayın

[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

Ekran görüntüleri

image1

Kısayol dosyası başlatıcıya kilitlendi

resim açıklamasını buraya girin

Susturmadan önce son bildirim


Sesi açarken sorun yaşıyorum gibi mi?
Lamda

Hayır, ses açma seçeneği tam olarak bunu yapar, önceki işlem örneğini öldürür. Sorun tam olarak nedir?
Sergiy Kolodyazhnyy

Mesaj yok. Sesi kapatabilirim, ancak sesini açarak açamazsınız.
Lamda

@Lamda Tamam, unmutefonksiyonun içinde, lütfen satırdan set -xsonra ekleyebilir echo $0ve programı terminalde çalıştırabilir misiniz? Belirli bir çıktı görüntüler. Paste.ubuntu.com adresine kopyalayıp yapıştırın ve buradaki yorumlarda bu macunun bağlantısını sağlayın. Teşekkürler
Sergiy Kolodyazhnyy

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.