Удалить значок уведомления дока для приложений, не находящихся в центре уведомлений

12

Есть ли способ заблокировать значок значка для приложений, которые устанавливают значок уведомления о значке, но не находятся в центре уведомлений о настройках?


Spotify, например, создает уведомление для каждого незначительного события, без возможности заблокировать его в приложении.

Лично я не понимаю, как приложения могут показывать значок значка, не находясь в центре уведомлений.


Пример:

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

Джон Кокс
источник
Приложения со значками, как на скриншоте, долгое время предшествовали включению Центра уведомлений в OS 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. Откройте приложение «Терминал».
6. Перейдите на рабочий стол в «Терминале» - введите (затем нажмите «Ввод»):

Рабочий стол CD
7. Установите разрешения для файла, который вы только что создали, чтобы вы могли его запустить - введите в Терминале (затем нажмите en):
sudo chmod 700 file.sh
(Замените «file.sh» на имя вашего скрипта.)
8. Запустите файл - введите в терминале:
./file.sh
(Снова замените «file.sh» на имя вашего скрипта.)
9. Откройте «Уведомления» в «Системных настройках». Вы сможете найти приложение Spotify и отключить уведомления.

Источник для создания скрипта: Терминал 101: Автоматизация терминала с помощью Bash Scripts

Ch333
источник
1
Хороший учебник по созданию исполняемого сценария оболочки, но для решения с голосованием вам не нужен bash-скрипт. Просто откройте терминал и вставьте команды. Пропускать строки, начинающиеся с #, потому что это комментарий в bash.
y3sh