OSX 장치에서와 같이 "방해 금지 모드"가 존재하며 알림이 언제 귀찮게 할 수 있는지 결정할 수 있습니다.
방금 크롬을 설치했는데 보통 그룹 텍스트 및 기타 알림으로 스팸 메일을받습니다. 작업을 시도 할 때 성 가실 수 있습니다. 내 맥북에서는 모든 형태의 알림을 끄는 "방해 금지"를 켤 수 있습니다. 우분투에도 그런 것이 있습니까?
OSX 장치에서와 같이 "방해 금지 모드"가 존재하며 알림이 언제 귀찮게 할 수 있는지 결정할 수 있습니다.
방금 크롬을 설치했는데 보통 그룹 텍스트 및 기타 알림으로 스팸 메일을받습니다. 작업을 시도 할 때 성 가실 수 있습니다. 내 맥북에서는 모든 형태의 알림을 끄는 "방해 금지"를 켤 수 있습니다. 우분투에도 그런 것이 있습니까?
답변:
완전히 재 작성된 표시기 버전 (0.9.0)을 완료했습니다. 옵션에는 다음이 포함됩니다.
또한 인터페이스 및 동작에 대한 많은 개선이 이루어졌습니다.
변경되지 않은 설치 (ppa) :
sudo apt-add-repository ppa:vlijm/nonotifs
sudo apt-get update
sudo apt-get install nonotifs
아래 표시기로 알림을 일시적으로 끄도록 선택할 수 있습니다.
또는 알림 표시 :
이 속임수는 dbus-monitor
곧 나오는 알림을 가로 채고 알림이 표시되기 전에 중지 하는 간단한 명령 입니다.
이 표시기는 사용자 친화적 인 "래퍼"로 표시를 켜거나 끕니다.
당으로서 지금 ( 트러스티를 들어, 생생한, 와일리, 주객 관계의 ) :
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
파일 을 제거 하십시오.
또는 수동으로 :
해결책은 하나의 동일한 디렉토리에 함께 저장해야하는 여러 항목으로 구성됩니다.
표시기 : 아래 스크립트를 빈 파일로 복사하여 다음과 같이 저장하십시오 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()
dbus-monitor
스크립트; 첫 번째 스크립트 nonotifs.sh
와 동일한 디렉토리 와 동일한 디렉토리에 정확하게 저장하십시오 .
#!/bin/bash
dbus-monitor "interface='org.freedesktop.Notifications'" | xargs -I '{}' pkill notify-osd
이 스크립트를 실행 가능하게 만드십시오
세 개의 아이콘; 각각을 마우스 오른쪽 버튼으로 클릭하고 다음과 같이 두 스크립트와 함께 저장하십시오.
그게 다야. 이제 다음 명령을 사용하여 표시기를 테스트하십시오.
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"
스크립트 벨로우즈는 화면에 알림이 표시되지 않도록 음소거 할 수 있습니다. -m
음소거 및 -u
음소거 해제에 대한 두 가지 기본 옵션 이 있습니다. 둘 다 .desktop
파일로 결합되어 실행기 역할을합니다.
때 -m
사용되는 상기 알릴-OSD가 차단되기 전에 최종 통지를 보낼 것이다. 다른 스크립트 인스턴스가 실행중인 경우 스크립트가 이미 작업을 수행하고 있음을 사용자에게 알려주는 그래픽 팝업이 표시됩니다.
-u
옵션으로 호출 하면 스크립트는 알림 차단을 중지하고 알림을 표시하여이를 확인합니다. 이전 스크립트 인스턴스가 실행되고 있지 않으면 사용자에게 현재 차단 된 것이 없다는 알림이 표시됩니다.
스크립트 소스는 여기에 있습니다. 더 최신 버전의 경우 항상 내 github 에서 찾을 수 있습니다 . 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 "$@"
이것은 내가 개인적으로 사용하는 것의 예일뿐입니다. 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
실행기에 고정 된 바로 가기 파일
뮤팅 전 최종 알림
unmute
함수 내에서 줄 set -x
뒤에 추가 echo $0
하고 프로그램을 터미널에서 실행할 수 있습니까? 특정 출력을 표시합니다. 해당 내용을 복사하여 paste.ubuntu.com에 붙여 넣고 여기에 의견에 해당 붙여 넣기에 대한 링크를 제공하십시오. 감사합니다