Pour LibNotify, le fichier JSON qu'il installe a l'ID d'extension incorrect. La mise à jour de l'ID d'extension vers la bonne corrige le problème.
Accédez à .config/google-chrome/NativeMessagingHosts
(pour Google Chrome) ou .config/chromium/NativeMessagingHosts
(pour Chromium). Ouvrez le fichier JSON dans le dossier et notez que dans la allowed_origins
section, il autorise l'ID d'extension gphchdpdmccpjmpiilaabhpdfogeiphf
. Cependant, l'ID d'extension (au moins dans mon cas, mais il devrait être le même pour tout le monde) est en fait epckjefillidgmfmclhcbaembhpdeijg
.
Pour résoudre ce problème, remplacez l'ID d'extension incorrect par celui correct, ou ajoutez une virgule et l'ID d'extension correct après. J'ai personnellement choisi cette dernière option, et voici à quoi ressemble mon fichier JSON:
{
"name": "com.initiated.chrome_libnotify_notifications",
"description": "Libnotify Notifications in Chrome",
"path": path to the location of install.sh,
"type": "stdio",
"allowed_origins": [
"chrome-extension://gphchdpdmccpjmpiilaabhpdfogeiphf/",
"chrome-extension://epckjefillidgmfmclhcbaembhpdeijg/"
]
}
EDIT: Ce n'est pas le seul changement qui doit être fait. L'extension repose sur les notifications Webkit, qui ont été dépréciées et supprimées dans Chrome (ium) et probablement d'autres navigateurs au profit des notifications HTML5. Par conséquent, google-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.js
doit être mis à jour. J'ai écrit un court script pour cela, mais il brise la plupart des normes, sauf pour afficher la notification. Remplacez tout dans le fichier par ce qui suit (prise en charge de base ajoutée pour les sites utilisant toujours window.webkitNotifications
et (espérons-le) prise en charge d'image améliorée) (prise en charge des autorisations ajoutée):
OriginalNotification = Notification
Notification = function(title, properties) {
if (Notification.permission != "granted") {
if (this.onError) {
this.onError();
}
return;
}
if (!properties.hasOwnProperty("body")) {
properties["body"] = "";
}
if (!properties.hasOwnProperty("icon")) {
properties["icon"] = "";
}
if (properties["icon"]) {
properties["icon"] = getBaseURL() + properties["icon"];
}
document.getElementById('libnotify-notifications-transfer-dom-area').innerText = JSON.stringify({title:title, body:properties["body"], iconUrl:properties["icon"]});
var event = document.createEvent("UIEvents");
event.initUIEvent("change", true, true);
document.getElementById('libnotify-notifications-transfer-dom-area').dispatchEvent(event);
if (this.onShow) {
this.onShow();
}
};
Object.defineProperty(Notification, "permission", {
get: function() {
return OriginalNotification.permission;
},
set: undefined
});
Notification.requestPermission = function(callback) {
OriginalNotification.requestPermission(callback);
}
window.webkitNotifications = {}
window.webkitNotifications.checkPermission = function() {
return 0;
}
window.webkitNotifications.createNotification = function(image, title, body) {
if (image) {
image = getBaseURL() + image;
}
document.getElementById('libnotify-notifications-transfer-dom-area').innerText = JSON.stringify({title:title, body:body, iconUrl:image});
var event = document.createEvent("UIEvents");
event.initUIEvent("change", true, true);
document.getElementById('libnotify-notifications-transfer-dom-area').dispatchEvent(event);
}
function getBaseURL() {
return location.protocol + "//" + location.hostname +
(location.port && ":" + location.port) + "/";
}
chrome://flags/#enable-native-notifications
.