Supprimer le badge de notification du dock pour les applications qui ne sont pas dans le centre de notification

12

Pour les applications gênantes qui définissent une icône de notification de badge, mais qui ne figurent pas dans le centre de notification des paramètres, existe-t-il un moyen de bloquer l'icône de badge?


Spotify, par exemple, crée une notification pour chaque événement insignifiant, sans aucun moyen de le bloquer dans l'application.

Personnellement, je ne comprends pas comment les applications sont autorisées à afficher une icône de badge sans être dans le centre de notifications en premier lieu.


Exemple:

entrez la description de l'image ici

Jon Cox
la source
Les applications badgeant leurs icônes, comme dans votre capture d'écran, ont longtemps précédé l'inclusion de Notification Center dans OS X. Elles n'ont pas besoin d'utiliser la fonctionnalité de notification pour le faire.
tubedogg
En outre, c'est le meilleur correctif que j'ai trouvé à ce jour: masquer le statut de l'application en cours d'exécution (qui masque également le badge): apple.stackexchange.com/questions/68915/…
y3sh

Réponses:

27

J'ai une solution que j'ai pu inverser. Je l'ai testé sur ma machine, exécutant Yosemite 10.10.4 (14E46). Si vous pouvez trouver l'ID de l'ensemble (dans le fichier Info.plist pour l'ensemble d'applications), vous pouvez utiliser ce script pour forcer l'application à apparaître dans le volet des préférences de notifications.

# "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

À ce stade, vous pouvez ouvrir les Préférences Système -> Notifications, et vous trouverez l'application que vous venez d'ajouter en bas de la liste. Vous pouvez activer / désactiver le marquage de l'icône à partir de cette page.

Ryan Patterson
la source
2
Solution très intelligente, merci Ryan! (Bien que je l'ai maintenant `` corrigé '' en supprimant Spotify et en passant à Apple Music.)
Jon Cox
1
ENFIN, une solution pour cet horrible niggle. Merci * 1000.
Josh Harrison
1
Tu es l'homme.
Udi
1
Je veux juste confirmer que cette solution fonctionne toujours!
23tux
1
Besoin de remplacer grep com.apple.notificationcenter/db/db\$par à grep 'com.apple.notificationcenter/db2/db$'partir de Mac OS 10.14.1 (peut-être avant, je vois que cela a déjà plus de 3 ans)
Alex S
0

Pour les personnes qui sont des noobs mac comme moi, pour créer et exécuter le script ci-dessus:

1. Ouvrez TextEdit,
2. Mettez l'éditeur en mode Texte brut - Format> Créer du texte brut.
(Si vous ignorez cette étape, il ne vous permettra pas de l'enregistrer en tant que script.)
3. Collez le script ci-dessus dans la fenêtre TextEdit
4. Enregistrez le fichier en tant que script - Fichier> Enregistrer sous dans TextEdit. Saisissez votre nom de fichier suivi de l'extension de fichier «.sh», puis enregistrez le document sur le bureau.
5. Ouvrez l'application Terminal
6. Accédez au bureau dans Terminal - Tapez (puis appuyez sur Entrée):

cd Desktop
7. Définissez les autorisations pour le fichier que vous venez de créer afin de pouvoir l'exécuter - Tapez Terminal (puis appuyez sur fr):
sudo chmod 700 file.sh
(Remplacez "file.sh" par le nom de votre script.)
8. Exécutez le fichier - Tapez Terminal:
./file.sh
(Encore une fois, remplacez "file.sh" par le nom de votre script.)
9. Ouvrez Notifications dans les Préférences Système. Vous devriez pouvoir trouver l'application Spotify et désactiver les notifications.

Source de création d'un script: Terminal 101: automatiser le terminal avec des scripts Bash

Ch333
la source
1
Bon tutoriel sur la création d'un script shell exécutable, mais pour la solution votée, vous n'avez pas besoin d'un script bash. Ouvrez simplement le terminal et collez les commandes. Ignorez les lignes qui commencent par un #, car il s'agit d'un commentaire dans bash.
y3sh