Per LibNotify, il file JSON che installa ha l'ID estensione errato. L'aggiornamento dell'ID estensione a quello corretto lo risolve.
Vai a .config/google-chrome/NativeMessagingHosts
(per Google Chrome) o .config/chromium/NativeMessagingHosts
(per Chromium). Aprire il file JSON nella cartella e notare che nella allowed_origins
sezione consente l'ID estensione gphchdpdmccpjmpiilaabhpdfogeiphf
. Tuttavia, l'ID estensione (almeno nel mio caso, ma dovrebbe essere lo stesso per tutti) è in realtà epckjefillidgmfmclhcbaembhpdeijg
.
Per risolvere questo problema, sostituire l'ID estensione errato con quello corretto oppure aggiungere una virgola e l'ID estensione corretto dopo di esso. Personalmente ho scelto quest'ultima opzione, ed ecco come appare il mio file 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: non è l'unica modifica che deve essere fatta. L'estensione si basa su notifiche Webkit, che sono state deprecate e rimosse in Chrome (ium) e probabilmente altri browser a favore delle notifiche HTML5. Pertanto, google-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.js
deve essere aggiornato. Ho scritto un breve script per questo, ma rompe la maggior parte dello standard tranne che per visualizzare la notifica. Sostituisci tutto nel file con il seguente (aggiunto supporto di base per i siti ancora in uso window.webkitNotifications
e (si spera) migliorato il supporto per le immagini) (supporto per le autorizzazioni aggiunto):
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
.