Para LibNotify, el archivo JSON que instala tiene una ID de extensión incorrecta. La actualización de la ID de extensión a la correcta lo arregla.
Vaya a .config/google-chrome/NativeMessagingHosts
(para Google Chrome) o .config/chromium/NativeMessagingHosts
(para Chromium). Abra el archivo JSON en la carpeta y observe que en la allowed_origins
sección, permite la identificación de la extensión gphchdpdmccpjmpiilaabhpdfogeiphf
. Sin embargo, la ID de extensión (al menos en mi caso, pero debería ser la misma para todos) es en realidad epckjefillidgmfmclhcbaembhpdeijg
.
Para solucionar esto, reemplace la ID de extensión incorrecta con la correcta o agregue una coma y la ID de extensión correcta después. Personalmente elegí la última opción, y así es como se ve mi archivo 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/"
]
}
EDITAR: Ese no es el único cambio que debe hacerse. La extensión se basa en las notificaciones de Webkit, que fueron desaprobadas y eliminadas en Chrome (ium) y probablemente en otros navegadores a favor de las notificaciones HTML5. Por lo tanto, google-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.js
necesita ser actualizado. He escrito un guión corto para esto, pero rompe la mayor parte del estándar, excepto para mostrar la notificación. Reemplace todo en el archivo con lo siguiente (soporte básico agregado para sitios que todavía usan window.webkitNotifications
y (con suerte) soporte mejorado de imágenes) (soporte de permisos agregado):
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
.