OSXデバイスの場合のように、「邪魔しないでください」モードがあります。このモードでは、通知が邪魔するかどうかを判断できます。
クロムをインストールしたばかりで、通常はグループテキストやその他の通知で迷惑になります。仕事中に迷惑になる場合があります。 Ubuntuにはそのようなものがありますか?
OSXデバイスの場合のように、「邪魔しないでください」モードがあります。このモードでは、通知が邪魔するかどうかを判断できます。
クロムをインストールしたばかりで、通常はグループテキストやその他の通知で迷惑になります。仕事中に迷惑になる場合があります。 Ubuntuにはそのようなものがありますか?
回答:
インジケーターの完全に書き直されたバージョン(0.9.0)を完成しました。オプションは次のとおりです。
さらに、インターフェイスと動作の多くの多くの改善。
インストールは変更されません(ppa):
sudo apt-add-repository ppa:vlijm/nonotifs
sudo apt-get update
sudo apt-get install nonotifs
以下のインジケータを使用して、通知を一時的にオフにすることができます。
または通知を表示:
トリックは単純なコマンドで、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つの同じディレクトリに一緒に保存する必要がある多くのアイテムで構成されています。
インジケーター:以下のスクリプトを空のファイルにコピーし、名前を付けて保存します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
このスクリプトを実行可能にする
3つのアイコン。それぞれを右クリックして、2つのスクリプトとともに(正確に)保存します。
それでおしまい。次のコマンドでインジケーターをテスト実行します:
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
解除の2つの基本オプションがあります。両方が一緒に配置されます.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にコピーして貼り付け、ここにコメントでその貼り付けへのリンクを提供します。ありがとう