Looking for the latest version? Download duplex_0_3_0_1.tar.gz (70.1 kB)
Name Modified Size Downloads / Week Status
duplex_0_3_0_1.tar.gz 2017-06-05 70.1 kB 1212 weekly downloads
README 2017-06-05 18.1 kB 0
duplex_0_3.tar.gz 2017-01-16 66.8 kB 0
duplex_0_2_3_3.tar.gz 2015-12-08 60.5 kB 0
duplex_0_2_3_2.tar.gz 2015-09-27 59.5 kB 0
Totals: 5 Items   275.2 kB 12
Release Notes - Duplex - 06/04/2017 This is primarily a maintenance release. Main changes: Finally fixed the print preview dialog box problem and removed the default_preview parameter from the .duplexpr configuration file Added text to some dialogs to let the user know that Ctrl+Enter works to submit these dialogs (when Enter does not) Streamlined the GUI dialogs a bit so they don't ask if you want to quit when they're done anyway Improved mpr to make it easier to quit in the middle of a batch Added number of sheets to be printed to the printing messages dprint and its wrappers, dprintf and dprintm now produce PDF output files instead of PostScript to make things more uniform dprintf is new. It formats and prints a text file directly to the print queue with automatic naming pqnext has a new oprtion, -q, which causes it to put the next file name in the clipboard silently. dprintf uses this. A number of small improvements/fixes, especially getting scripts to find each other when started from a GUI and to work better when called by another script Duplex. dplx, duplex, mpr - added error processing in dplx and duplex for mpr distinguish between print file related errors (returns 1) and script related errors (returns script_error (9) ) mpr keeps going on print file related errors, but quits on script related errors If a script/system related error occurs, mpr returns the value of script_error (9). user abort - sigint/Ctrl+C is now treated as a script error Improved page counting logic in mpr to only increment after successful printing mprb - User abort (sigint - Ctrl+C) now returns 2 instead of 1 so kmprb will get the memo kmprb - don't update total_sheets if we didn't get a valid page count kmprb, krmpq - If we just printed the last batch, don't ask the user about quitting and time out the deleted dialog krmpq - If the print queue is empty after deleting files, don't ask the user about quitting and time out the deleted dialog Do the same if DUPLEX_LAST_BATCH is true (not zero - set by kmprb and kmprb_one) mpr - added ynq so user can quit in the middle of a batch added total sheets to mpr summary mpr, mprb - added sheet count to Printing detail messages changed those to use printf to right justify the 2-digit numbers kmprb_one - changed print detail parsing to match the new layout kmprb, kmprb_one, krmpq, mprb, pqnext - improved yad timeout values and code duplex, dprint, kmprb_one - added test for missing enscript configuration file - $HOME/.enscriptrc But only if enscript will be called for text files dprint - Read .duplexpr and check default_print_strategy. If it's non-duplex (0) and print to file (-o file) was not specified, then it's an error because enscript calls dplx which will error out in duplex anyway Files printed to disk (-o file) are now converted from PostScript to PDF. dprintf - (New) Print text file directly to the print queue automatically using the next available file name/number This will return a failure if xclip is not installed. pqnext - Added -q (quiet) option which silently copies the next file name/number to the clipboard. This will return a failure if xclip is not installed. kmprb, .duplexpr - finally fixed print preview problem and removed default_preview from .duplexpr dplx, dprintf, dprintm, kmprb, kmprb_one, mpr, mprb - replaced realpath with mypath kmprb - changed dialogs to show pressing Ctlr+Enter in dialogs using --tail Duplex (two-sided) printing saves paper, money, trees, and space. Several other utilities are available which provide this functionality, but most require the user to select options in a popup window and are prone to user error. No utility I am aware of will (gracefully) allow a user to print multiple duplex print jobs in a batch. The duplex package is a set of shell scripts for duplex printing. The nature of shell scripts makes them relatively easy to extend and modify. I have tried to use string constants and put system dependencies in functions to further facilitate this. Once the package (tarball) is unpacked, the scripts are ready to use. Just put them in a directory that is in your PATH (e.g. $HOME/bin) so your shell can find them. Now, you also have to copy and rename the new configuration file, dot.duplexpr to $HOME/.duplexpr It contains the default path to the print queue, the default print strategy, and several other parameters. Several of the scripts use enscript to convert text files to postscript. For this to work correctly, add the following to the file .enscriptrc in your home directory. If this file does not exist, create it with the following content. # Defaults for enscript (used by duplexpr package) Spooler: <path>/dplx where "<path>" is the full path of the directory where you installed dplx. For example, if you installed dplx in /home/joe/bin then it would be: Spooler: /home/joe/bin/dplx You may also need to set the default paper type as in: DefaultMedia: Letter (Replace Letter with the page definition for the paper you use.) The GUI scripts use the folder $HOME/pq as the queue of files to be printed. If you want to change that, edit $HOME/.duplexpr (in package as dot.duplexpr so it isn't hidden) See INSTALL for more details. All of the scripts are optional. Use those that fit your work style. WARNING: The script names are intended to be unique (should not replace any existing commands on your system), but be sure to verify this for yourself BEFORE installing them. Brief synopsis of the scripts (see duplex.txt for details): dplx - Prints one two-sided print job by setting up the parameters and calling duplex duplex - Prints one two-sided print job mpr - Multiple print duplex jobs - one complete job (both sides) at a time using dplx mprb - Multiple print batch duplex jobs - prints the odd pages of all jobs in one pass and all the even pages in the other pass dprint - Prints one text file two-sided using some settings such as margins, wordwrap, and, optionally, font, font-size, landscape, title dprintf - (new) Prints one file directly to the print queue (using dprint) automatically naming it to the next available print file name/number dprintm - Prints one text file two-sided with a mono-spaced font (for structured text e.g. source code or tabular data,) rmpq - Remove files from the print queue kmprb - GUI to preview, print, and then remove printed files kmprb_one - GUI to preview, print, and then remove all one page jobs (to speed things up.) krmpq - GUI version of rmpq pqnext - GUI to display the next available print queue job name (which can be used with paste or copy and paste) klprm - GUI - (new) displays jobs in the user's CUPS print queue and deletes selected jobs General Notes: After installation, the file, Test_File.ps should be printed using dplx. This four page (two sheet) document will show you clearly whether duplex printing is working on your system. A detailed description of how this file printed along with the value of the -ps parameter (or default_print_strategy in .duplexpr) should be included in any bug reports related to printed output page issues. .duplexpr settings should also be included. If the default does not work, try adding -ps 1 as the first parameter and see if that fixes it for your printer. If it does, you can modify the default value in the .duplexpr configuration file. If jobs with an odd number of pages mess up the page order of subsequent jobs by adding an extra blank page, try setting default_formfeed=0 in .duplexpr. I have several notebook computers running kubuntu (currently kubuntu xenial) with KDE5. I have a couple of laserjets, a Samsung laser with duplex in hardware, and one Photosmart Inkjet printer and three print queues running under CUPS. The Duplex package works well in this setup. I almost feel like I have a new, better printer now that I don't have to flip the output of each job and watch out not to reinsert the last page of odd page count jobs. I wanted this to work as easily as it does under Windows. And now, with mprb/kmprb/kmprb_one, it works a lot better than Windows! It's also useful to use the batch size parameter in kmprb to break up large numbers of jobs into more manageable batches. Managing your own print queue also has its advantages. You can print some jobs and, if you like the output, you can then print multiple copies without having to regenerate the print jobs. I routinely look at the print queue before printing (using mprb -i or mprb -I). Sometimes, I see an unexpectedly large job and decide to just delete it if it's something I don't really need. Using a notebook, it's particularly helpful to have a print queue. When the printer is not attached, all the jobs just go into the print queue and are ready to print when the printer is attached *and* when I'm ready to deal with printing. Paper doesn't just start shooting out of the printer as soon as it is attached. It's also very nice to "print" things and just keep working with an uninterrupted workflow without having to stop and attend to the printer every time something needs to be printed. After many jobs have been "printed", then they can be sent from the queue to the printer all at once. If there's a paper jam, or ink/toner runs out, all the jobs are still there to be reprinted. With mprb -pass2, you can even reprint just the second sides of jobs whose pass one output survived the problem. Many computer systems are far more complex than mine. I look forward to others testing the package on systems with networked printers, multiple printers and queues, and shared printers. I think it should work on all of them (as long as no one else is printing to a shared printer at the same time as one of these scripts is printing to it!), but there is no substitute for testing. The code has a couple of system dependencies and I don't know how universally applicable they are. The function ps_page_ct() relies on whatever creates the postscript files to be printed (or enscript, if the files to be printed are text files) to put the postscript %%Pages: nnn line into the file near the beginning or end of the file. So far, it's been in one or the other place in all files I've printed except those printed by Opera. For those, the script counts the number of showpage commands. This method is not guaranteed to work because one showpage command could be in a function or loop and be called multiple times. I have seen a document in PostScript 1.6. My page counting algorithms do not know how to handle this format (and neither do I! and so it will fail with an error message.) pdfinfo is now used find the page count of PDF documents. This just works. The function lp_queue_id() relies on the output of the lp command to contain the queue-job_number in the fourth word of the line. This is too hard coded for my taste, but I don't know another way to do it. Although yad (the tool that provides the GUI interfaces) does depend on GTK, I think it should run fine on other window managers and desktops. I use it under KDE with no issues. If not, a text-only version of the scripts would be easy to write, but it wouldn't be quite as user friendly. The code is written for the way an HP Deskjet printer (page handling strategy 1) or an HP Laserjet P1006 printer (page handling strategy 2) handles paper. It also gets it perfectly for my HP Photosmart C4480 (page handling strategy 1). The Laserjets now print all the pages correctly using page handling strategy 2. To get this to work for all printers may requre a rewrite because one size doesn't fit all. It will probably require at least four (maybe 16) printing strategies to cover most printers and for now, there are only two (and print strategy 0 for non-duplex printing). If another printer works differently, all the same components of the code should still work with some rearranging of the sequence. The Deskjet prints such that the output stacks printed face up with the most recent page on top. To print the reverse side, all pages are manually removed, rotated 180 degrees horizontally and reinserted into the in paper tray. The Laserjets print such that the output stacks printed face down with the most recent page on the top. To print the reverse side, all pages are manually removed, rotated 180 degrees horizontally and reinserted into the in paper tray. The way I use the system is: As I'm browsing the Internet or doing other tasks, I use "Print to File" for most things and put them all in one directory ($HOME/pq) with file names like 01, 02, 03, .... (If you want to use pqnext or dprintf (optional), they only works correctly with two digit file names.) (File names ending in .ps or .pdf work fine as well.) That keeps the print jobs in the same order I generated them in. Then, when I'm ready, I just cd to that directory, do an mprb -I * to see how much I'm going to print (and if I need to modify the print order to put some small jobs ahead of large ones, etc.). (See also the optional pql alias included in extras.txt.) Then, I usually let it go ahead and print the whole queue. When it's done and checked, I use rmpq to delete the files in the print queue. When I have a lot to print, I just use shell glob expressions to specify which files to print and then rmpq. E.g. mprb -I 0* or mprb -I 0[123] . With this release, I use kmprb with -1 and -B, a new optional batch size parameter, to print all the one-page jobs first and then print the rest in manageable sub-batches. I recently found a new use for the mpr script which I had stopped using. Because it prints one job at a time, it's great for times when your printer is almost out of toner or ink and you want to squeeze the last little bit out of it before changing cartridges. You can do the same thing with kmprb by setting the batch size to 1 sheet with the -b or -B options. For anyone interested, I aso have an AutoKey macro available (see extras.txt) which is tied to ctrl-p for Firefox and Thunderbird. It automagically selects Print to File and fills in the next available print queue file name. Then it ends so that other print dialog options can still be selected. You can get AutoKey from the repositories for your distribution or get the latest version from git at https://github.com/Autokey/Autokey Installation instructions available in our GitHub wiki and upon request to me or to the AutoKey list. A newer, improved version of AutoKey - autokey-py3 - may be found at https://github.com/guoci/autokey-py3 My macro has not been tested for this version yet and may need some minor tweaks to be compatible with Python 3.x. Now that I have kmprb, I have added an icon for it to my panel (task bar). Once I have generated the print files as above, usually, I just click on the panel icon and let kmprb do the rest. That way, I can stay focused on what I am doing because I don't need to navigate through any menus or switch to a terminal window on another desktop. I also have an icon for pqnext in my panel, so I can get the next print queue file name for manual use with applications other than Firefox or Thunderbird. These icons are not added to the panel by installing the duplex package. It must be done manually. I have been unable to identify the license holders of the icons I use, so they are not included in this package. Sometimes, I do an mprb -i * first. If there are any one-page print jobs, I print them all directly with one lp command (very fast) and then delete them. Then, I print any remaining jobs with mprb. This can also be done automatically just by using kmprb -1. Or, for printing one page jobs only, kmprb_one can be run. This is especially useful if you use print strategy 2 (default) which will print all one page jobs as blank pages during pass one because it prints even pages first and there aren't any. (The script doesn't look ahead, so it doesn't know that in advance.) In real life, printers run out of ink, occasionally jam, and feed multiple pages at one time. To handle this eventuality, mprb only prints one job at a time during pass two (where jams, and especially multi-feeds are more likely) so it can be killed without having to remove a number of jobs from the system print queue with lprm. mprb also has a -pass2 option so that, after a jam, any jobs which still have good pass one output (all sheets with just one side printed) may be reinserted into the printer to print just pass 2 (the other side of all the sheets). Now, with faster processors and printers and big print buffers, this doesn't work as nicely as it used to, but if this is a problem, it is easy to add an additional delay between pass 2 print jobs. Gui Apps: These are preset to expect the print queue to be in $HOME/pq by default. (See INSTALL for details on how to modify this.) kmprb is a GUI which does it all. It displays all the files in the print queue along with the number of pages and sheets each will generate. Next, it allows you to select which files to print and prints them. Finally, it allows you to select which of the successfully printed files will be deleted. (Presumably, they are not needed any longer once they have been successfully printed.) kmprb_one is similar to kmprb, but it finds and prints ALL one page jobs very quickly. krmpq allows you to select those print files you want to delete once they have been printed. pqnext pops up an information dialog with the number of the next available print queue file name along with a count of jobs and pages in the print queue. This is useful for manually specifying the print file name in applications. The next file name in the pop-up can be manually copy and pasted into a print to file dialog. If xclip is installed (optional), the next file name is automatically copied to the clipboard. klprm (new) is a GUI which displays all the jobs in the user's CUPS print queue and allows selected ones to be deleted.
Source: README, updated 2017-06-05

Thanks for helping keep SourceForge clean.

Screenshot instructions:
Red Hat Linux   Ubuntu

Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Briefly describe the problem (required):

Upload screenshot of ad (required):
Select a file, or drag & drop file here.

Please provide the ad click URL, if possible:

Get latest updates about Open Source Projects, Conferences and News.

No, thanks