Printing
Size: 12186
Comment: + "Print dialog" (currently phone only)
|
Size: 15840
Comment: updated wireframes: “insensitive” > “disabled”
|
Deletions are marked like this. | Additions are marked like this. |
Line 26: | Line 26: |
* Whenever at least one manually configured printer is available, a section beginning with an insensitive item, “Configured printers”. * Whenever at least one broadcast printer is available, a section beginning with an insensitive item, “Discovered printers”. |
* Whenever at least one manually configured printer is available, a section beginning with a disabled item, “Configured printers”. * Whenever at least one broadcast printer is available, a section beginning with a disabled item, “Discovered printers”. |
Line 65: | Line 65: |
||<tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment:print-dialog-phone.png}}|| | === PC === ''TBD'' === Phone and tablet === ||<tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment:print-dialog.narrow.png}}|| |
Line 69: | Line 75: |
The “Printer” menu should contain a [[#listing|list of all known printers]], or if there are none, an insensitive item “(none detected)”. “Print” should be insensitive whenever “(none detected)” is selected. | ''TBD: Add duplex.'' The “Printer:” menu should contain a [[#listing|list of all known printers]], or if there are none, a disabled item “(none detected)”. “Print” should be disabled whenever “(none detected)” is selected. |
Line 73: | Line 81: |
The default value for “Copies” should be the value supplied by the app, if any (for example, the number of copies the previous time that document was printed); otherwise the previous value set for any print job in that app, if any; otherwise 1. Whenever the field value is not a whole number, “Print” should be insensitive. In the page range controls, “Current page” and “Selection” should be sensitive only if the application supplies them. The “Pages” field should be sensitive whenever “Pages” is chosen. Regardless, its default value should be “1-''X''”, where ''X'' is the number of pages in the document. |
The default value for “Copies:” should be the value supplied by the app, if any (for example, the number of copies the previous time that document was printed); otherwise the previous value set for any print job in that app, if any; otherwise 1. Whenever the field value is not a whole number, “Print” should be disabled. In the page range controls, “Current page” and “Selection” should be present only if the application supplies them. The “Range:” field should be sensitive whenever “Range:” is chosen. Regardless, its default value should be “1-''X''”, where ''X'' is the number of pages in the document. |
Line 86: | Line 94: |
(Cups event: `connecting-to-device`) | (Cups events: `connecting-to-device`, `job-created`) |
Line 90: | Line 98: |
Whenever you queue a print job, if the jobs window for that printer is not open already, it should open minimized. Each printer in this state should appear as its own application in the Launcher. | On all form factors, whenever you queue a print job, if the jobs window for that printer is not open already, it should open: minimized on the PC, and in the background on other form factors. Each printer in this state should appear as its own application in the Launcher. |
Line 98: | Line 106: |
<<Anchor(succeeds)>> == Printing succeeds == (Cups event: `job-completed`) {{attachment:printing-completed.png}} On all form factors, when a print job completes, a notification should appear. It should have the icon of the printer, the name of the printer as its title text, and body text of the form ‘“Name of Job” has printed.’ <<Anchor(fails)>> |
|
Line 100: | Line 118: |
Some of these error conditions involve an '''alert box'''. This is a dialog that emits the standard alert sound (if any) when it opens, and requests attention if it opens in the background. None of these error alerts have parents, so they should all have the title “Printing Problem”, and a minimize button and no other buttons in their title bar. They should also all use the printer’s icon (which should be overlaid by the error or warning emblem as appropriate). {{attachment:error-alert.png}} The secondary text for all of these alert boxes should be: |
Some of these error conditions involve an '''alert'''. This is a dialog that emits the standard alert sound (if any) when it opens, and requests attention if it opens in the background. Because it does not have a parent, it should have the title “Printing Error”, and a minimize button and no other buttons in its title bar. It should use the printer’s icon, overlaid by the error or warning emblem as appropriate. ||<^ style="border:none">{{attachment:error-alert.png}}||<^ style="border:none">{{attachment:error-alert.narrow.png}}|| ||<^ style="border:none">''Erratum: “Printing Problem” should be “Printing Error”.''||<^ style="border:none">''Erratum: The alert should have a title, “Printing Error”.''|| The secondary text for all of these alerts should be: |
Line 116: | Line 135: |
=== Printer gets low on toner === (Cups event: `printer-state-changed "toner-low"`) There should be no notification when a printer becomes low on toner, unless you have print jobs in progress or queued for that printer. If you have print jobs in progress or queued for a printer when it ''becomes'' low on toner, then: * If System Settings was open displaying any panel other than “Printing”, an error alert box should open, with the icon of the printer, primary text ‘The printer “Name of Printer” is low on toner.’, and buttons “Pause Printer”, and “Continue Anyway”. * If you click the “Pause Printer” button, and System Settings is not currently open, then System Settings should open to the Printing panel, navigate to the printer in question (revealing the low-toner warning in the settings interface), and request attention. === Printer runs out of toner === (Cups event: `printer-state-changed "toner-empty"`) There should be no notification when a printer runs out of toner, unless you have print jobs in progress or queued for that printer. If you have print jobs in progress or queued for a printer when it runs out of toner, then: * If System Settings was open displaying any panel other than “Printing”, an error alert box should open, with the icon of the printer, primary text ‘The printer “Name of Printer” is out of toner.’, and buttons “Settings…” and “OK”. * If you click the “Settings…” button, then System Settings should open to the “Printing” panel, navigate to the printer in question (revealing the low-toner warning in the settings interface), and request attention. In addition, if a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and the “Print” button should be insensitive. The error message “ {X} This printer is out of toner.” should appear alongside the “Cancel” and “Print” buttons, to explain why the button is insensitive. === Printer becomes low on paper === (Cups event: `media-low`) === Printer runs out of paper === (Cups event: `media-empty` ("Out of paper" is shown) === Printer becomes low on other supplies === (Cups event: `marker-supply-low`) === Printer runs out of other supplies === (Cups event: `marker-supply-empty`) |
=== Printer gets low on toner, paper, or other supplies === (Cups events: `printer-state-changed "toner-low"`, `"media-low"`, `"marker-supply-low"`) There should be no notification when a printer becomes low on toner, paper, or other supplies, unless you have print jobs in progress or queued for that printer. If you do, then: * If System Settings is not open, a notification should appear with: * the icon of the printer, * primary text ‘The printer “Name of Printer” is low on toner.’, ‘The printer “Name of Printer” is low on paper.’, or ‘The printer “Name of Printer” is low on supplies.’ * secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued”. * If System Settings is open displaying any panel other than “Printing”, an error alert box should open, with the same icon, primary and secondary text as for the notification above, and buttons “Pause Printer”, and “Continue Anyway”. If you choose “Pause Printer”, System Settings should navigate to “Printing”, navigate to the printer in question (revealing the low-toner/low-paper/low-supplies warning in the settings interface), and request focus. * If System Settings is open displaying “Printing”, it should navigate to the printer in question (revealing the low-toner warning in the settings interface), and request focus. === Printer runs out of toner, paper, or other supplies === (Cups event: `printer-state-changed "toner-empty"`, `"media-empty"`, `"marker-supply-empty"`) There should be no notification when a printer runs out of toner, paper, or other supplies, unless you have print jobs in progress or queued for that printer. If you do, then: * If System Settings is not open, an alert should appear with: * primary text ‘The printer “Name of Printer” is out of toner.’, ‘The printer “Name of Printer” is out of paper.’, or ‘The printer “Name of Printer” is out of supplies.’ * secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued” * buttons “Settings…” and “OK”. If you choose “Settings…”, System Settings should open to “Printing”, navigate to the printer in question (revealing the error in the settings interface), and request focus. * If System Settings is open, it should navigate to “Printing” if necessary, navigate to the printer in question (revealing the error in the settings interface), and request focus. If a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and “Print” should be disabled. The error message “ {X} This printer is out of toner.” or equivalent should appear alongside the “Cancel” and “Print” buttons, to explain why “Print” is disabled. |
Line 162: | Line 174: |
There should be no notification when a printer goes offline, unless you have print jobs in progress or queued for that printer. If you do, then: * If System Settings is not open, an alert should appear with: * primary text ‘The printer “Name of Printer” has gone offline. Check that it is still connected to power.’ * secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued” * buttons “Settings…” and “OK”. If you choose “Settings…”, System Settings should open to “Printing”, navigate to the printer in question (revealing the error in the settings interface), and request focus. * If System Settings is open, it should navigate to “Printing” if necessary, navigate to the printer in question (revealing the error in the settings interface), and request focus. If a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and “Print” should be disabled. The error message “ {X} This printer is offline.” should appear alongside the “Cancel” and “Print” buttons, to explain why “Print” is disabled. |
|
Line 166: | Line 192: |
There should be no notification for a miscellaneous error, unless you have print jobs in progress or queued for that printer. If you do, then: * If System Settings is not open, an alert should appear with: * primary text ‘The printer “Name of Printer” has an unknown problem.’ * secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued” * buttons “Settings…” and “OK”. If you choose “Settings…”, System Settings should open to “Printing”, navigate to the printer in question (revealing the error in the settings interface), and request focus. * If System Settings is open, it should navigate to “Printing” if necessary, navigate to the printer in question (revealing the error in the settings interface), and request focus. If a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and “Print” should be disabled. The error message “ {X} This printer has an unknown problem.” should appear alongside the “Cancel” and “Print” buttons, to explain why “Print” is disabled. |
|
Line 172: | Line 212: |
(Cups event: `job-created`) (Cups event: `job-completed`) |
|
Line 178: | Line 214: |
There should be no notification if a job is stopped, assuming that you stopped it yourself. |
Matthew Paul Thomas, Canonical
This is an incomplete but living specification for how printing should work in Ubuntu. Eventually it will cover printer setup, settings, the Print dialog, and event notifications.
Contents
Printer properties
Icon for a printer
In theory, a PPD can provide a customized icon representing that particular printer model. In practice, hardly any printers do.
For the purpose of this specification, a printer’s icon is the custom icon in the PPD if there is one, otherwise a generic printer icon. In either case, the icon should be overlaid with an error emblem if the printer has an error; otherwise the warning icon if the printer is low on paper or supplies.
Listing manually configured vs. broadcast printers
(bug 314408)
Ubuntu can use printers that are set up manually, and printers that are broadcast by a remote Cups server. Broadcast printers are a security issue: An attacker might set up a printer nearby with a name that seems to be associated with your organization, tricking you into printing confidential information to that printer. (A similar issue exists with Wi-Fi networks.)
To avoid this, we should not ask people whether they “trust” a printer. Instead, whenever available printers are listed, they should be listed in up to two sections:
- Whenever at least one manually configured printer is available, a section beginning with a disabled item, “Configured printers”.
- Whenever at least one broadcast printer is available, a section beginning with a disabled item, “Discovered printers”.
“Printers” settings
The “Hardware” category of System Settings should have a “Printers” panel. The panel should list available printers, and show status and settings for the selected printer.
Erratum: The “Jobs” item should not be present in the menu.
If you choose “Show Jobs”, the jobs window for that printer should open (if it is not open already) and take focus.
As much as practical, the controls in the “Copies & Pages”, “Job Details”, “Color”, and “Finishing” sub-panels should be presented in the same way, and in the same order, as the equivalent controls in the Print dialog.
Adding a printer
(Cups event: printer-added)
A printer may be plugged in and recognized automatically, or manually added through system-config-printer.
If a new printer is plugged in and recognized automatically while a Print dialog is open, the dialog should update to select it as the printer for that print job.
If a new printer is plugged in and recognized automatically while the Printers panel of System Settings is open, the list of printers should scroll to show the new printer, and it should be selected in the list.
If a new printer is plugged in and recognized automatically while neither a Print dialog nor System Settings (any panel) is open, System Settings should open to the Printers panel, the list of printers should scroll to show the new printer, and it should be selected in the list. (This is analogous to a USB storage device window opening when it is connected.)
Removing a printer
(Cups event: printer-removed)
TBD: If you have jobs queued on the printer you’re removing, the confirmation alert should let you move them to another printer.
There should be no notification when you remove a printer. If a Print dialog is open when you remove a printer, it should disappear from the list of printers. If that printer was selected, the dialog should revert to the default printer.
Print dialog
PC
TBD
Phone and tablet
To begin with, the Print dialog on the phone should let you choose a printer, number of copies, and page range.
TBD: Add duplex.
The “Printer:” menu should contain a list of all known printers, or if there are none, a disabled item “(none detected)”. “Print” should be disabled whenever “(none detected)” is selected.
TBD: Maybe replace “(none selected)” with a secondary “Add Printer” dialog. If you cancel that, the Print dialog goes away too?
The default value for “Copies:” should be the value supplied by the app, if any (for example, the number of copies the previous time that document was printed); otherwise the previous value set for any print job in that app, if any; otherwise 1. Whenever the field value is not a whole number, “Print” should be disabled.
In the page range controls, “Current page” and “Selection” should be present only if the application supplies them.
The “Range:” field should be sensitive whenever “Range:” is chosen. Regardless, its default value should be “1-X”, where X is the number of pages in the document.
The “Y pages on Z sheets” text should update instantly to reflect the number of copies and the page range.
Printing
(Cups events: connecting-to-device, job-created)
On all form factors, whenever you queue a print job, if the jobs window for that printer is not open already, it should open: minimized on the PC, and in the background on other form factors. Each printer in this state should appear as its own application in the Launcher.
The name of the Launcher item (as shown in its tooltip) should be the name of the printer. The icon should be the icon for the printer, including any emblem showing state. When any jobs are queued or printing, the icon should also have a standard Launcher badge with the combined number of jobs. And if all non-cancelled jobs have been successfully completed, it should have a green checkmark emblem. (The window should not close by itself, though you can close it at your leisure.)
Each printer Launcher item should have a quicklist menu, containing a “Pause” item, followed by an item of the form “Cancel 1 Job” or “Cancel All 14 Jobs”.
When a version of Ubuntu implementing this Launcher item is installed, com.canonical.Unity.Panel systray-whitelist should be rewritten to remove scp-dbus-service (because the system-config-printer notification area item is no longer needed).
Printing succeeds
(Cups event: job-completed)
On all form factors, when a print job completes, a notification should appear. It should have the icon of the printer, the name of the printer as its title text, and body text of the form ‘“Name of Job” has printed.’
Something goes wrong
Some of these error conditions involve an alert. This is a dialog that emits the standard alert sound (if any) when it opens, and requests attention if it opens in the background. Because it does not have a parent, it should have the title “Printing Error”, and a minimize button and no other buttons in its title bar. It should use the printer’s icon, overlaid by the error or warning emblem as appropriate.
Erratum: “Printing Problem” should be “Printing Error”. |
Erratum: The alert should have a title, “Printing Error”. |
The secondary text for all of these alerts should be:
- “You have {number of jobs} jobs queued to print on this printer.”, if the alert is appearing because you are printing to the printer.
- “There are {total number of jobs} jobs queued to print on this printer.”, if the alert is appearing because you look after the printer.
Missing software
If Cups reports the cups-missing-filter event, an alert box should appear: ‘The printer “Name of printer” can’t be used, because required software is missing.’ unless this is job-specific
A cover or door is opened
If Cups reports the event cover-open or door-open, an error alert box should appear: ‘A cover is open on the printer “Name of printer”.’, or ‘A door is open on the printer “Name of printer”.’, respectively.
Printer gets low on toner, paper, or other supplies
(Cups events: printer-state-changed "toner-low", "media-low", "marker-supply-low")
There should be no notification when a printer becomes low on toner, paper, or other supplies, unless you have print jobs in progress or queued for that printer.
If you do, then:
- If System Settings is not open, a notification should appear with:
- the icon of the printer,
- primary text ‘The printer “Name of Printer” is low on toner.’, ‘The printer “Name of Printer” is low on paper.’, or ‘The printer “Name of Printer” is low on supplies.’
- secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued”.
- If System Settings is open displaying any panel other than “Printing”, an error alert box should open, with the same icon, primary and secondary text as for the notification above, and buttons “Pause Printer”, and “Continue Anyway”. If you choose “Pause Printer”, System Settings should navigate to “Printing”, navigate to the printer in question (revealing the low-toner/low-paper/low-supplies warning in the settings interface), and request focus.
- If System Settings is open displaying “Printing”, it should navigate to the printer in question (revealing the low-toner warning in the settings interface), and request focus.
Printer runs out of toner, paper, or other supplies
(Cups event: printer-state-changed "toner-empty", "media-empty", "marker-supply-empty")
There should be no notification when a printer runs out of toner, paper, or other supplies, unless you have print jobs in progress or queued for that printer.
If you do, then:
- If System Settings is not open, an alert should appear with:
- primary text ‘The printer “Name of Printer” is out of toner.’, ‘The printer “Name of Printer” is out of paper.’, or ‘The printer “Name of Printer” is out of supplies.’
- secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued”
- buttons “Settings…” and “OK”.
- If System Settings is open, it should navigate to “Printing” if necessary, navigate to the printer in question (revealing the error in the settings interface), and request focus.
If a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and “Print” should be disabled. The error message “ This printer is out of toner.” or equivalent should appear alongside the “Cancel” and “Print” buttons, to explain why “Print” is disabled.
Printer goes offline
(Cups event: offline)
There should be no notification when a printer goes offline, unless you have print jobs in progress or queued for that printer.
If you do, then:
- If System Settings is not open, an alert should appear with:
- primary text ‘The printer “Name of Printer” has gone offline. Check that it is still connected to power.’
- secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued”
- buttons “Settings…” and “OK”.
- If System Settings is open, it should navigate to “Printing” if necessary, navigate to the printer in question (revealing the error in the settings interface), and request focus.
If a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and “Print” should be disabled. The error message “ This printer is offline.” should appear alongside the “Cancel” and “Print” buttons, to explain why “Print” is disabled.
Miscellaneous error
(Cups event: other "Printer error"`)
There should be no notification for a miscellaneous error, unless you have print jobs in progress or queued for that printer.
If you do, then:
- If System Settings is not open, an alert should appear with:
- primary text ‘The printer “Name of Printer” has an unknown problem.’
- secondary text of the form “1 job in progress” or “2 jobs queued” or “1 job in progress, 2 queued”
- buttons “Settings…” and “OK”.
- If System Settings is open, it should navigate to “Printing” if necessary, navigate to the printer in question (revealing the error in the settings interface), and request focus.
If a Print dialog is open with that printer selected, it should remain selected, but its icon should have an error emblem, and “Print” should be disabled. The error message “ This printer has an unknown problem.” should appear alongside the “Cancel” and “Print” buttons, to explain why “Print” is disabled.
Multiple errors
For now, multiple errors with the same printer should be presented separately. They may be combined in future if this turns out to be useful.
Other events
(Cups event: job-stopped)
There should be no notification if a job is stopped, assuming that you stopped it yourself.
Similar work
Gnome printing design whiteboard (mostly incomplete, but has good comparison screenshots)
Ideas
On the first window drawing on this page, have you considered using Tabs instead of the Combo that says "Printer Status" ?, (it also eliminate the redundancy of Show Jobs Button). - juancarlospaco
On "toner-empty" status, making the "Print" button inactive is a very bad idea, in my opinion. The machine is trying to be smarter than the user this way. Consider two situations: 1. The toner isn't empty, only the system thinks it is (I'm encountering this right now - I bought a new original toner and Ubuntu says there's no toner left) 2. There's very little toner left, but the printer tells Ubuntu it's empty - the user won't be able to use that little left. -- Both situations are real-life situations and with the new functionality it wouldn't be possible to override this. I don't think a "toner-empty" message should be treated as high-profiled as a paper-jam for example. - Wojtek Krawczak
Printing (last edited 2017-01-20 13:19:36 by mpt)