क्या मैकबुक पर सूचनाओं को अस्थायी रूप से छिपाने के लिए "परेशान न करें" विकल्प है?


13

क्या वहां "डिस्टर्ब मोड" मौजूद नहीं है जैसा कि OSX डिवाइस के लिए है, जहां आप तय कर सकते हैं कि कब नोटिफिकेशन आपको परेशान कर सकता है, या नहीं ..

मैंने केवल क्रोम स्थापित किया है, और मैं आमतौर पर समूह ग्रंथों और अन्य अधिसूचना से स्पैम हो जाता हूं, जो काम करने की कोशिश करने पर परेशान हो सकता है .. मेरी मैकबुक पर मेरे पास "डू नो डिस्टर्ब" चालू करने का विकल्प है जो सभी प्रकार के नोटेशन को म्यूट करता है। क्या उबंटू के लिए ऐसा कुछ मौजूद है?


फ़ायरफ़ॉक्स के लिए एक विकल्प है, लेकिन मैं कोई क्रोम उपयोगकर्ता नहीं हूं इसलिए इसके बारे में नहीं बता सकता हूं
सर्जियो कोलोडियाज़नी

समस्या क्रोम विशिष्ट नहीं है, लेकिन सामान्य रूप से सूचनाएँ ..
लैमडा


2
एक स्क्रिप्ट विकसित की है। अब तक यह मेरे github पर है: github.com/SergKolo/sergrep/blob/master/notify-block.sh मैं आज जैसे ही मेरे पास समय होगा मैं अपना जवाब अपडेट कर दूंगा। इसमें एक अच्छा शॉर्टकट भी शामिल होगा जिसे आप लॉन्चर में पिन कर सकते हैं
सर्जियो कोलोडियाज़नी

1
उत्तर संपादित करें, समीक्षा करें। मुझे बताएं कि क्या अतिरिक्त सुविधाएँ हैं, जो आप मुझे जोड़ना चाहते हैं
सर्गिय कोलोडाज़नी

जवाबों:


9

1. प्रमुख अद्यतन

बस संकेतक (0.9.0) के पूरी तरह से फिर से लिखे गए संस्करण को समाप्त कर दिया। विकल्पों में अब शामिल हैं:

  • केवल सूचनाओं को दबाने, जिसमें विशिष्ट तार होते हैं
  • दमन (मौन) ध्वनि
  • लॉगिंग नोटिफिकेशन छूट गया
  • स्टार्टअप पर चल रहा है
  • अगले रन पर अंतिम स्थिति (दबाने या नहीं) को याद करना

इसके अलावा कई, इंटरफ़ेस और व्यवहार पर कई सुधार।

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

स्थापना अपरिवर्तित है (ppa):

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

2. पुराना (एर) उत्तर

सूचनाओं को म्यूट करने / दिखाने के लिए संकेतक

नीचे दिए गए संकेतक के साथ, आप अस्थायी रूप से सूचनाओं को बंद करने का विकल्प चुन सकते हैं:

यहाँ छवि विवरण दर्ज करें

या सूचनाएं दिखाएं:

यहाँ छवि विवरण दर्ज करें

यह काम किस प्रकार करता है

ट्रिक एक साधारण कमांड है, dbus-monitorआगामी सूचनाओं को इंटरसेप्ट करने और उन्हें प्रदर्शित होने से पहले रोकने के लिए।
सूचक इसे बंद और चालू करने के लिए एक उपयोगकर्ता के अनुकूल "आवरण" है।

स्थापित कैसे करें


के अनुसार अब ( भरोसेमंद के लिए, विविड, चतुर, Xenial ):

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. तीन प्रतीक; उनमें से प्रत्येक पर राइट-क्लिक करें और उन्हें दो स्क्रिप्ट के साथ एक साथ सहेजें (बिल्कुल):

    यहाँ छवि विवरण दर्ज करें <- 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

    वास्तविक रास्तों के अनुसार, और फ़ाइल को इस रूप nonotif.desktopमें सहेजें~/.local/share/applications

स्टार्टअप अनुप्रयोगों के लिए संकेतक जोड़ें

आप स्टार्टअप एप्लिकेशन के लिए संकेतक जोड़ सकते हैं: डैश> स्टार्टअप एप्लिकेशन> जोड़ें। कमांड जोड़ें:

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

आप कमाल हो! :-)
फाबबी

वह @Fabby आप के आसपास देखने के लिए बहुत अच्छा!
जैकब व्लिजम

फिर भी एक और महान स्क्रिप्ट, याकूब! आइडिया: क्या स्क्रिप्ट उन ऑडियो नोटिफिकेशन को भी ब्लॉक कर सकती है जो नोटिफ़िकेशन-ओएसडी के साथ जाते हैं?
ऑर्किरो जू

@orschiro धन्यवाद! क्या वे नोटिफ़िकेशन-ओएसडी सूचनाएं भी हैं? सुनिश्चित नहीं हैं कि आप किन सूचनाओं का उल्लेख कर रहे हैं।
जेकब वलीजम

1
@RobertOrzanna उन चीजों में से एक है जिसे संस्करण 1.0 में बदला गया है :)
याकूब Vlijm

11

परिचय

स्क्रिप्ट बलो स्क्रीन पर प्रदर्शित होने से किसी भी सूचना को म्यूट करने की अनुमति देता है। -mम्यूट के लिए और -uअनम्यूट के लिए दो बुनियादी विकल्प हैं । दोनों .desktopको एक लांचर के रूप में सेवा करने के लिए एक फाइल में रखा गया है ।

जब -mउपयोग किया जाता है, तो अधिसूचित-ओएसडी अवरुद्ध होने से पहले एक अंतिम अधिसूचना भेजेगा। यदि स्क्रिप्ट चलाने का एक और उदाहरण है, तो यह एक ग्राफिकल पॉपअप दिखाएगा जो एक उपयोगकर्ता को सूचित करेगा कि स्क्रिप्ट पहले से ही अपना काम कर रही है।

जब -uविकल्प के साथ कहा जाता है, तो स्क्रिप्ट सूचनाओं को रोकना बंद कर देगी और यह पुष्टि करेगी कि एक दिखा कर। यदि स्क्रिप्ट का कोई पिछला उदाहरण नहीं चल रहा है, तो उपयोगकर्ता को सूचित किया जाएगा कि अभी कुछ भी अवरुद्ध नहीं है।

लिपि स्रोत

स्क्रिप्ट स्रोत यहां उपलब्ध है। अधिक अप-टू-डेट संस्करण के लिए आप हमेशा इसे मेरे जीथूब पर पा सकते हैं । आप के साथ git स्थापित कर सकते हैं 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

शॉर्टकट फ़ाइल लांचर के लिए बंद कर दिया

यहाँ छवि विवरण दर्ज करें

अंतिम अधिसूचना म्यूट करने से पहले


मुझे लगता है कि इसे अनम्यूट करने में समस्याएं हैं? .. क्या मुझे मैन्युअल रूप से प्रक्रिया को हर बार मारना चाहिए या?
लमडा

नहीं, अनम्यूटिंग विकल्प ठीक यही करता है, पिछली प्रक्रिया उदाहरण को मारता है। वास्तव में यह क्या समस्या है?
सर्गी कोलोडियाज़नी

कोई संदेश नहीं, घटित होता है। मैं म्यूट कर सकता हूं, लेकिन अनम्यूट बटोम को दबाकर अनम्यूट नहीं कर सकता ..
लैमडा

@ लमडा ओके, unmuteफंक्शन के अंदर , क्या आप कृपया लाइन के set -xबाद जोड़ सकते हैं echo $0और टर्मिनल में प्रोग्राम चला सकते हैं? यह कुछ आउटपुट प्रदर्शित करेगा। कॉपी और पेस्ट करना है कि paste.ubuntu.com पर और उस पेस्ट का लिंक यहां टिप्पणियों में प्रदान करें। धन्यवाद
सर्गी Kolodyazhnyy

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.