Có tùy chọn nào không làm phiền phạm vi để tạm thời ẩn thông báo, như trên macbook không?


13

Có tồn tại "Không làm phiền chế độ" như đối với thiết bị OSX, nơi bạn có thể quyết định khi thông báo có thể làm phiền bạn hay không ..

Tôi mới cài đặt chrome và tôi thường bị spam bởi các văn bản nhóm và thông báo khác, điều này có thể gây khó chịu khi tôi thử làm việc .. Trên macbook của tôi, tôi có tùy chọn bật "Không làm phiền", tắt tiếng tất cả các hình thức thông báo .. Có một cái gì đó như thế tồn tại cho Ubuntu?


Có một tùy chọn cho firefox, nhưng tôi không phải là người dùng chrome nên không thể nói về điều đó
Sergiy Kolodyazhnyy

Vấn đề không phải là chrome cụ thể, nhưng thông báo nói chung ..
Lamda


2
Đã phát triển một kịch bản. Cho đến nay, trên github của tôi: github.com/SergKolo/sergrep/blob/master/notify-block.sh Tôi sẽ cập nhật câu trả lời của mình ngay khi có thời gian hôm nay. Cũng sẽ bao gồm một phím tắt đẹp mà bạn có thể ghim vào trình khởi chạy
Sergiy Kolodyazhnyy

1
Trả lời chỉnh sửa, xin vui lòng xem lại. Hãy cho tôi biết nếu có các tính năng bổ sung mà bạn muốn tôi thêm
Sergiy Kolodyazhnyy

Câu trả lời:


9

1. Cập nhật lớn

Chỉ cần hoàn thành một phiên bản viết lại hoàn toàn của chỉ báo (0.9.0). Các tùy chọn hiện bao gồm:

  • chỉ chặn các thông báo, chứa các chuỗi cụ thể
  • triệt tiêu (tắt tiếng)
  • đăng nhập thông báo bỏ lỡ
  • chạy khi khởi động
  • nhớ trạng thái cuối cùng (triệt tiêu hay không) trong lần chạy tiếp theo

Hơn nữa, nhiều cải tiến về giao diện và hành vi.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Cài đặt không thay đổi (ppa):

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

2. Câu trả lời cũ

Chỉ báo tắt tiếng / hiển thị thông báo

Với chỉ báo bên dưới, bạn có thể chọn tắt tạm thời thông báo:

nhập mô tả hình ảnh ở đây

hoặc hiển thị thông báo:

nhập mô tả hình ảnh ở đây

Làm thế nào nó hoạt động

Thủ thuật là một lệnh đơn giản, sử dụng dbus-monitorđể chặn các thông báo sắp tới và dừng chúng trước khi chúng xuất hiện.
Chỉ báo là một "trình bao bọc" thân thiện với người dùng để tắt và bật.

Làm thế nào để thiết lập


Theo như bây giờ ( đối với Trusty, Vivid, Wily, Xenial ):

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

Điều này sẽ cài đặt trên toàn cầu (bao gồm cả trình khởi chạy). Cài đặt qua ppa được ưu tiên, vì nó duy trì phiên bản mới nhất và được cập nhật thường xuyên.
Chỉ báo sẽ xuất hiện trong Dash dưới dạng NoNotutions

Nếu bạn cài đặt bằng ppa, nhưng trước đó đã cài đặt thủ công từ bên dưới, vui lòng chạy rm ~/.local/share/applications/nonotif.desktoptrước để xóa .desktoptệp cục bộ .


Hoặc thủ công:

Giải pháp tồn tại của một số mục bạn chỉ cần lưu trữ cùng nhau trong một và cùng một thư mục.

  1. Tạo một thư mục hoặc thư mục (có thể là bất cứ nơi nào trong thư mục nhà của bạn, vd)
  2. Chỉ báo: Sao chép tập lệnh bên dưới vào một tệp trống, lưu nó dưới dạng 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. Các dbus-monitorkịch bản; lưu nó (chính xác) như nonotifs.sh trong một và cùng thư mục với tập lệnh đầu tiên:

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

    Làm cho tập lệnh này được thực thi

  4. Ba biểu tượng; nhấp chuột phải vào từng tệp và lưu chúng cùng với hai tập lệnh dưới dạng (chính xác):

    nhập mô tả hình ảnh ở đây <- green.png

    nhập mô tả hình ảnh ở đây <- red.png

    nhập mô tả hình ảnh ở đây<- grey.png

  5. Đó là nó. Bây giờ hãy chạy thử chỉ báo bằng lệnh:

    python3 /path/to/nonotif_indicator.py

    và chuyển thông báo trên / của

Trình khởi chạy

Trong trường hợp bạn muốn một trình khởi chạy với chỉ báo:

nhập mô tả hình ảnh ở đây

  • Sao chép biểu tượng bên dưới, lưu nó dưới dạng nonotificon.png:

    nhập mô tả hình ảnh ở đây

  • Sao chép mã dưới đây vào một tập tin trống:

    [Desktop Entry]
    Type=Application
    Name=No Notifications
    Exec=python3 /path/to/nonotif_indicator.py
    Icon=/path/to/nonotificon.png
    Type=Application
  • Chỉnh sửa các dòng:

    Exec=python3 /path/to/nonotif_indicator.py

    Icon=/path/to/nonotificon.png

    theo các đường dẫn thực tế và lưu tệp như nonotif.desktoptrong~/.local/share/applications

Thêm chỉ báo vào Ứng dụng khởi động

Bạn có thể thêm chỉ báo vào Ứng dụng khởi động: Dấu gạch ngang> Ứng dụng khởi động> Thêm. Thêm lệnh:

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

Bạn thật tuyệt vời! :-)
Fabby

Anh ấy @Fabby thật tuyệt khi gặp bạn xung quanh!
Jacob Vlijm

Một kịch bản tuyệt vời nữa, Jacob! Ý tưởng: Tập lệnh cũng có thể chặn thông báo âm thanh đi cùng với thông báo osd không?
orschiro

@orschiro cảm ơn! Có phải những thông báo osd thông báo quá? Không chắc chắn những thông báo mà bạn đang đề cập đến.
Jacob Vlijm

1
@RobertOrzanna đó là một trong những điều được thay đổi trong phiên bản 1.0 :)
Jacob Vlijm

11

Giới thiệu

Kịch bản dưới đây cho phép tắt bất kỳ thông báo nào xuất hiện trên màn hình. Có hai tùy chọn cơ bản -mđể tắt tiếng và -ubật tiếng. Cả hai được đặt cùng nhau vào một .desktoptập tin để phục vụ như một launcher.

Khi -mđược sử dụng, osd thông báo sẽ gửi thông báo cuối cùng trước khi bị chặn. Nếu có một phiên bản khác của tập lệnh đang chạy, nó sẽ hiển thị một cửa sổ bật lên đồ họa sẽ thông báo cho người dùng rằng tập lệnh đã thực hiện công việc của mình.

Khi được gọi với -u tùy chọn, tập lệnh sẽ dừng chặn thông báo và sẽ xác nhận điều đó bằng cách hiển thị một thông báo. Nếu không có phiên bản trước nào của tập lệnh đang chạy, người dùng sẽ được thông báo rằng không có gì bị chặn ngay bây giờ.

Nguồn kịch bản

Nguồn kịch bản có sẵn ở đây. Đối với phiên bản cập nhật hơn, bạn luôn có thể tìm thấy nó trên github của tôi . Bạn có thể cài đặt git với sudo apt-get install gitvà sao chép toàn bộ kho lưu trữ với git clone https://github.com/SergKolo/sergrep.githoặc sử dụng

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

để có được chính kịch bản.

#!/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 "$@"

mẫu phím tắt .desktop

Đây chỉ là một ví dụ về những gì cá nhân tôi sử dụng. Thay thế mỗi Exec=dòng bằng đường dẫn thích hợp đến tập lệnh trong môi trường của bạn. Tất nhiên ý chí của bạn Icon=cũng phải được thay đổi. Tốt nhất, giữ tập tin này trong ~/.local/share/applicationsthư mục của bạ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

Ảnh chụp màn hình

hình ảnh1

Tệp lối tắt bị khóa với launcher

nhập mô tả hình ảnh ở đây

Thông báo cuối cùng trước khi tắt tiếng


Tôi dường như có vấn đề khi tắt nó? .. Tôi nên tự tay giết quá trình mọi lúc hay?
Lamda

Không, tùy chọn tắt tiếng thực hiện chính xác điều đó, giết chết thể hiện quy trình trước đó. Chính xác thì vấn đề đó đang xảy ra là gì?
Sergiy Kolodyazhnyy

Không có tin nhắn, xảy ra. Tôi có thể tắt tiếng, nhưng không bật tiếng bằng cách nhấn vào mông bất động ..
Lamda

@Lamda OK, bên trong unmutechức năng, bạn có thể vui lòng thêm set -xsau echo $0dòng và chạy chương trình trong thiết bị đầu cuối không? Nó sẽ hiển thị đầu ra nhất định. Sao chép và dán nó vào paste.ubfox.com và cung cấp liên kết đến dán đó trong các bình luận ở đây. Cảm ơn
Sergiy Kolodyazhnyy

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.