Einführung
Das unten stehende Skript ermöglicht die Stummschaltung von Benachrichtigungen auf dem Bildschirm. Es gibt zwei grundlegende Optionen -m
zum Stummschalten und -u
zum Aufheben der Stummschaltung. Beide werden zu einer .desktop
Datei zusammengefügt, um als Startprogramm zu dienen.
Wenn -m
verwendet, sendet der notify-osd eine endgültige Benachrichtigung, bevor er blockiert wird. Wenn eine andere Instanz des Skripts ausgeführt wird, wird ein grafisches Popup angezeigt, das einen Benutzer darüber informiert, dass das Skript seine Arbeit bereits ausführt.
Bei Aufruf mit -u
das Skript Option wird, blockiert es keine Benachrichtigungen mehr und bestätigt dies, indem es eine anzeigt. Wenn keine vorherige Skriptinstanz ausgeführt wird, wird der Benutzer darüber informiert, dass derzeit nichts blockiert ist.
Skriptquelle
Die Skriptquelle finden Sie hier. Für eine aktuellere Version findest du sie immer auf meinem Github . Sie können git mit installieren sudo apt-get install git
und das gesamte Repository mit klonen git clone https://github.com/SergKolo/sergrep.git
oder verwenden
wget https://raw.githubusercontent.com/SergKolo/sergrep/master/notify-block.sh && chmod +x notify-block.sh
um nur das Skript selbst zu bekommen.
#!/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-Verknüpfungsvorlage
Dies ist nur ein Beispiel für das, was ich persönlich benutze. Ersetzen Sie jede Exec=
Zeile durch den entsprechenden Pfad zum Skript in Ihrer Umgebung. Natürlich muss auch dein Icon=
Wille geändert werden. Bewahren Sie diese Datei vorzugsweise in Ihrem ~/.local/share/applications
Ordner auf
[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
Screenshots
Die Verknüpfungsdatei ist für den Launcher gesperrt
Letzte Benachrichtigung vor Stummschaltung