{"id":146,"date":"2007-05-24T17:44:41","date_gmt":"2007-05-24T17:44:41","guid":{"rendered":"http:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/"},"modified":"2014-05-20T09:12:06","modified_gmt":"2014-05-20T08:12:06","slug":"new-printer-notification-mock-ups","status":"publish","type":"post","link":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/","title":{"rendered":"&#8220;New printer&#8221; notification mock-ups"},"content":{"rendered":"<p>Got a plan for fixing the printer driver prompt. This is the prompt you get when a driver can\u2019t be found for the printer you just plugged in. The issue is that you can\u2019t say \u201cuse this PPD file I\u2019ve got\u201d but instead have to choose from the ones that already didn\u2019t match.<\/p>\n<p><!--more--><\/p>\n<p>Here is how it worked in Fedora 6: HAL discovers a printer and calls the \u201cadd\u201d HAL method on it (which is implemented in hal_lpadmin). This looks for a match, and when it fails it resorts to asking the user for help. It does this with D-Bus: it calls a D-Bus method, PromptPrintDriver (from the com.redhat.PrintDriverSelection interface), which is implemented by eggcups.<\/p>\n<p>All eggcups does with that is display the list of makes and models for you to choose one of them. Once the dialog is displayed, the method returns (and hal_lpadmin exits). If you choose one of the printer models, eggcups calls the \u201cConfigure\u201d HAL method on the device, which runs hal_lpadmin again. This loads the foomatic database again (yes, that\u2019s the third time now) to get the PPD, and sets it for the queue.<\/p>\n<p>You didn\u2019t even get to say anything about the PPD that the printer manufacturer provided you with.<\/p>\n<p>In Fedora 7 the situation is actually slightly worse because of the eggcups re-write: now the dialog is not implemented at all. In my defense, I don\u2019t think it can have been much use to anyone in the form described above.<\/p>\n<p>So for Fedora 8 I\u2019d like to fix the short-coming of not being able to provide your own PPD. Here is how it will work:<\/p>\n<p>HAL discovers a printer and calls the \u201cadd\u201d HAL method, as before. The hal_lpadmin implementation will try to find a driver match, as before, but this is a lengthy process so the first thing it will do is let the user know that something\u2019s going on. It will do this by looking for a \/com\/redhat\/NewPrinterNotification D-Bus object, and if it finds one it will call the GetReady D-Bus method.<\/p>\n<p>This NewPrinterNotification object will be implemented in the system-config-printer-applet, the replacement for eggcups, and it will do something like this:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png\" alt=\"Printer detected\" \/><\/p>\n<p>So the user has plugged in the printer, and they are now waiting patiently for hal_lpadmin to find a driver.  Hopefully it will find an exact driver match.  If it doesn&#8217;t there is always a fall-back it can use: a close model match, a generic driver, or (as a very last resort!) the text-only driver.  In any case, it will add a queue for the printer and call the NewPrinter D-Bus method.<\/p>\n<p>This will put a notification on the screen telling the user what the name of the queue is, with a button to give them an opportunity to find a better driver or configure the chosen driver.  If the driver was a perfect match, it should look like this:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/added0.png\" alt=\"Added (status 0)\" \/><\/p>\n<p>There are several reasons why hal_lpadmin might not have found an exact driver match:<\/p>\n<ol>\n<li>The exact model number wasn&#8217;t found, but a close match was<\/li>\n<li>A close match wasn&#8217;t found, but a generic driver for one of the command sets the printer knows was found<\/li>\n<li>Not even a generic driver could be found, so the driver of last resort (text-only) was used<\/li>\n<\/ol>\n<p>Here&#8217;s the &#8220;close match&#8221; mock-up, although it should probably not include the &#8220;Foomatic\/&#8230;&#8221; stuff:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/added1.png\" alt=\"Added (status 1)\" \/><\/p>\n<p>Here&#8217;s the &#8220;generic driver&#8221; mock-up (note that the button says &#8220;Find driver&#8221; rather than &#8220;Configure&#8221;, hopefully conveying the fact that the user might want to try to find a better driver):<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/added2.png\" alt=\"Added (status 2)\" \/><\/p>\n<p>And here&#8217;s what &#8220;missing driver&#8221; would look like:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/missing.png\" alt=\"Missing (status 4)\" \/><\/p>\n<p>The &#8220;Configure&#8221; and &#8220;Find driver&#8221; buttons all do the same thing: launch system-config-printer, telling it to start on the configuration page for that printer.  At that point, the user can provide their own PPD if they like.<\/p>\n<p>None of this is implemented, but none of it is particularly hard to do.\u00a0 The important thing is: does it look right?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Got a plan for fixing the printer driver prompt. This is the prompt you get when a driver can\u2019t be found for the printer you just plugged in. The issue is that you can\u2019t say \u201cuse this PPD file I\u2019ve got\u201d but instead have to choose from the ones that already didn\u2019t match.<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-software"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>&quot;New printer&quot; notification mock-ups - PRINT HEAD<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"&quot;New printer&quot; notification mock-ups - PRINT HEAD\" \/>\n<meta property=\"og:description\" content=\"Got a plan for fixing the printer driver prompt. This is the prompt you get when a driver can\u2019t be found for the printer you just plugged in. The issue is that you can\u2019t say \u201cuse this PPD file I\u2019ve got\u201d but instead have to choose from the ones that already didn\u2019t match.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/\" \/>\n<meta property=\"og:site_name\" content=\"PRINT HEAD\" \/>\n<meta property=\"article:published_time\" content=\"2007-05-24T17:44:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-05-20T08:12:06+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png\" \/>\n<meta name=\"author\" content=\"Tim Waugh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tim Waugh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/\"},\"author\":{\"name\":\"Tim Waugh\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\"},\"headline\":\"&#8220;New printer&#8221; notification mock-ups\",\"datePublished\":\"2007-05-24T17:44:41+00:00\",\"dateModified\":\"2014-05-20T08:12:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/\"},\"wordCount\":675,\"publisher\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\"},\"image\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2007\\\/05\\\/detected.png\",\"articleSection\":[\"Software\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/\",\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/\",\"name\":\"\\\"New printer\\\" notification mock-ups - PRINT HEAD\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2007\\\/05\\\/detected.png\",\"datePublished\":\"2007-05-24T17:44:41+00:00\",\"dateModified\":\"2014-05-20T08:12:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#primaryimage\",\"url\":\"http:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2007\\\/05\\\/detected.png\",\"contentUrl\":\"http:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2007\\\/05\\\/detected.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2007\\\/05\\\/24\\\/new-printer-notification-mock-ups\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"&#8220;New printer&#8221; notification mock-ups\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#website\",\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/\",\"name\":\"PRINT HEAD\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\",\"name\":\"Tim Waugh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\",\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\",\"contentUrl\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\",\"width\":731,\"height\":140,\"caption\":\"Tim Waugh\"},\"logo\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\"},\"sameAs\":[\"http:\\\/\\\/cyberelk.net\\\/tim\"],\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/author\\\/twaugh\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\"New printer\" notification mock-ups - PRINT HEAD","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/","og_locale":"en_GB","og_type":"article","og_title":"\"New printer\" notification mock-ups - PRINT HEAD","og_description":"Got a plan for fixing the printer driver prompt. This is the prompt you get when a driver can\u2019t be found for the printer you just plugged in. The issue is that you can\u2019t say \u201cuse this PPD file I\u2019ve got\u201d but instead have to choose from the ones that already didn\u2019t match.","og_url":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/","og_site_name":"PRINT HEAD","article_published_time":"2007-05-24T17:44:41+00:00","article_modified_time":"2014-05-20T08:12:06+00:00","og_image":[{"url":"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png","type":"","width":"","height":""}],"author":"Tim Waugh","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tim Waugh","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#article","isPartOf":{"@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/"},"author":{"name":"Tim Waugh","@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6"},"headline":"&#8220;New printer&#8221; notification mock-ups","datePublished":"2007-05-24T17:44:41+00:00","dateModified":"2014-05-20T08:12:06+00:00","mainEntityOfPage":{"@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/"},"wordCount":675,"publisher":{"@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6"},"image":{"@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#primaryimage"},"thumbnailUrl":"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png","articleSection":["Software"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/","url":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/","name":"\"New printer\" notification mock-ups - PRINT HEAD","isPartOf":{"@id":"https:\/\/cyberelk.net\/tim\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#primaryimage"},"image":{"@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#primaryimage"},"thumbnailUrl":"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png","datePublished":"2007-05-24T17:44:41+00:00","dateModified":"2014-05-20T08:12:06+00:00","breadcrumb":{"@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#primaryimage","url":"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png","contentUrl":"http:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2007\/05\/detected.png"},{"@type":"BreadcrumbList","@id":"https:\/\/cyberelk.net\/tim\/2007\/05\/24\/new-printer-notification-mock-ups\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cyberelk.net\/tim\/"},{"@type":"ListItem","position":2,"name":"&#8220;New printer&#8221; notification mock-ups"}]},{"@type":"WebSite","@id":"https:\/\/cyberelk.net\/tim\/#website","url":"https:\/\/cyberelk.net\/tim\/","name":"PRINT HEAD","description":"","publisher":{"@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cyberelk.net\/tim\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6","name":"Tim Waugh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png","url":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png","contentUrl":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png","width":731,"height":140,"caption":"Tim Waugh"},"logo":{"@id":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png"},"sameAs":["http:\/\/cyberelk.net\/tim"],"url":"https:\/\/cyberelk.net\/tim\/author\/twaugh\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pnnS2-2m","_links":{"self":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":1,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"predecessor-version":[{"id":1128,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts\/146\/revisions\/1128"}],"wp:attachment":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}