{"version":"1.0","provider_name":"PRINT HEAD","provider_url":"https:\/\/cyberelk.net\/tim","author_name":"Tim Waugh","author_url":"https:\/\/cyberelk.net\/tim\/author\/twaugh\/","title":"Print job failure alerts - PRINT HEAD","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"Iwa9yKPxpS\"><a href=\"https:\/\/cyberelk.net\/tim\/2008\/02\/29\/print-job-failure-alerts\/\">Print job failure alerts<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/cyberelk.net\/tim\/2008\/02\/29\/print-job-failure-alerts\/embed\/#?secret=Iwa9yKPxpS\" width=\"600\" height=\"338\" title=\"&#8220;Print job failure alerts&#8221; &#8212; PRINT HEAD\" data-secret=\"Iwa9yKPxpS\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/cyberelk.net\/tim\/wp-includes\/js\/wp-embed.min.js\n<\/script>\n","description":"I&#8217;ve just added print job failure alert messages to the system-config-printer applet, and this is what one looks like. Part of the work involved in doing this was to switch from repeatedly polling the CUPS server for the entire job list (which can be slow and resource-intensive) to using IPP notifications to find out what&#8217;s [&hellip;]","thumbnail_url":"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2008\/02\/printerror.png"}