Видаліть значок сповіщення док-станції для програм, які не перебувають у центрі сповіщень


12

Для неприємних програм, які встановлюють значок сповіщення про значки, але їх немає в центрі сповіщень про налаштування, чи існує спосіб блокувати значок значка?


Наприклад, Spotify створює сповіщення про кожну незначну подію, не маючи можливості блокувати її у додатку.

Особисто я не розумію, яким чином додатки можуть показувати значок значка, не перебуваючи в центрі сповіщень.


Приклад:

введіть тут опис зображення


Програми, які значать свої піктограми, як на екрані екрана, давно передували включенню Центру сповіщень в ОС X. Для цього їм не потрібно використовувати функцію сповіщення.
tubedogg


Крім того, це найкраще виправлення, яке я знайшов поки: приховання запущеного стану програми під час запуску (який також приховує значок): apple.stackexchange.com/questions/68915/…
y3sh

Відповіді:


27

У мене є рішення, яке мені вдалося змінити інженером. Я перевірив це на своїй машині, запустивши Yosemite 10.10.4 (14E46). Якщо ви можете знайти ідентифікатор пакета (у файлі Info.plist для пакета програм), ви можете використовувати цей скрипт, щоб змусити додаток відображатися на панелі налаштувань сповіщень.

# "Usernoted" seems to be the "user notifications daemon", so get it's PID.
pid=$(ps aux | grep -i [u]sernoted | awk '{print $2}')

# Find the sqlite3 database that this program has open. It's in a "private" folder (app sandboxing).
db="$(lsof -p $pid | grep com.apple.notificationcenter/db/db\$ | awk '{print $9}')"

# I got the bundleid from Spotify.app/Contents/Info.plist
bundleid="com.spotify.client"

# I use 0 as the flags because you can change all the settings in System Preferences
# 5 seems to be the default for show_count
# Grab the next-highest sort order
sql="INSERT INTO app_info (bundleid, flags, show_count, sort_order) VALUES ( '$bundleid', 0, 5, (SELECT MAX(sort_order) + 1 FROM app_info) );"

# Run the command
sqlite3 "$db" "$sql"

# Restart usernoted to make the changes take effect
killall usernoted

У цей момент ви можете відкрити Налаштування системи -> Сповіщення, і ви знайдете додаток, яке ви тільки що додали, внизу списку. Ви можете ввімкнути / вимкнути значок значка на цій сторінці.


2
Дуже розумне рішення, дякую, Райан! (Хоча зараз я це "виправив", скинувши Spotify та перейшовши на Apple Music.)
Джон Кокс

1
НАРЕШТУ, рішення цього жахливого нігтя. Дякую * 1000.
Джош Харрісон

1
Ти людина.
Уді

1
Я просто хочу підтвердити, що це рішення все ще працює!
23тукс

1
Необхідно замінити grep com.apple.notificationcenter/db/db\$з , grep 'com.apple.notificationcenter/db2/db$'як в Mac OS 10.14.1 (можливо , раніше, я бачу це більше 3 років вже)
Alex S

0

Для тих людей, які мають Mac noobs, як я, створити та запустити вищезазначений сценарій:

1. Відкрийте TextEdit,
2. Переведіть редактор в режим звичайного тексту - Формат> Зробити звичайний текст.
(Якщо пропустити цей крок, він не дозволить вам зберегти його як сценарій.)
3. Вставте вищезазначений скрипт у вікно TextEdit
4. Збережіть файл у вигляді сценарію - Файл> Зберегти як у TextEdit. Введіть своє ім'я файлу, а потім розширення файлу ".sh", а потім збережіть документ на робочому столі.
5. Відкрийте програму Terminal
6. Перейдіть на робочий стіл у Terminal - Введіть (потім натисніть клавішу Enter):

CD робочий стіл
7. Встановіть дозволи для створеного вами файлу, щоб ви могли його запустити - Введіть термінал (потім натисніть en):
sudo chmod 700 file.sh
(Замініть "file.sh" на ім'я вашого сценарію.)
8. Запустіть файл - введіть термінал:
./file.sh
(Знову замініть "file.sh" на ім'я вашого сценарію.)
9. Відкрийте сповіщення в системних налаштуваннях. Ви повинні мати можливість знайти додаток Spotify та вимкнути сповіщення.

Джерело для створення сценарію: Термінал 101: Автоматизація терміналу з Bash Script


1
Хороший підручник щодо створення виконуваного сценарію оболонки, але для схваленого рішення вам не потрібен скрипт bash. Просто відкрийте термінал і вставте команди. Пропустіть рядки, які починаються з #, тому що це коментар в bash.
y3sh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.