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à -u
bật tiếng. Cả hai được đặt cùng nhau vào một .desktop
tậ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 git
và sao chép toàn bộ kho lưu trữ với git clone https://github.com/SergKolo/sergrep.git
hoặ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/applications
thư 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
Tệp lối tắt bị khóa với launcher
Thông báo cuối cùng trước khi tắt tiếng