JP Vossen on 12 Apr 2011 23:49:37 -0700

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[PLUG] PLUG N: CLI access to clipboards, xdg-foo, and more

I wanted to follow-up on several discussions we had last night at PLUG N.

For details on "bash" vs "dash" see my PLUG preso at

The 'checkbashisms' script is supplied on Debian/Ubuntu in the "devscripts" package, or here at the badly spelled project.

Longer items:

1) reading and writing the "clipboard" under Linux and Windows
2) 'gnome-open' and 'xdg-open'
3) The x86 architecture; backwards compatibility thereof

First, we were discussing reading and writing the "clipboard" under Linux and Windows.

For Linux, I use 'xsel' tool/package with the following aliases that Just Do What I Mean, read the man page for more:
	alias getclip='xsel -b'
	alias putclip='xsel -bi'

For Windows, I use gclip.exe and pclip.exe from the awesome UNXUtils at See also many previous discussions in the archives, especially

CPAN (and in particular ActivePerl for Windows) also has The following is the code I use, but note I haven't updated my ActivePerl or Win32::Clipboard in forever, so this may be obsolete now.

### READ
use Win32::Clipboard;  # Import the clipboard module
my $cboard = Win32::Clipboard::GetText(); # (Have to) Read entire clipboard contents
$cboard =~ s/\r//g; # Remove odd CRs ("\r"), if any, the clipboard sticks

### Write (This is especially ugly, I wrote this many, many years ago)
### I write the output to a temp file (no, I don't remember why. It seemed like a good idea at the time).
### Then:
use Win32::Clipboard;                # Import the module
open (TMPFILE, "$tempfile") || die "$myname: error opening temp file $tempfile = $!";

binmode (TMPFILE); # Put into BINMODE so we don't mess with line termination undef ($/); # Undefine the input line terminator so we grab the whole thing
my $cboard = <TMPFILE>;              # Grab it
Win32::Clipboard::Set("$cboard");    # Send it to the clipboard

close (TMPFILE); # Close, then delete (unlink) the temp file unlink("$tempfile") || die "$myname: Could not delete temp file $tempfile: $!\n";

Second, I had mentioned 'gnome-open' and Rich countered with 'xdg-open'.

gnome-open - Open files and URLs using the GNOME file handlers
xdg-open - opens a file or URL in the user's preferred application

I think Rich wins, because his solution is slightly shorter and more portable. :-)

When you spend a lot of time at the command line, the ability to open things in the GUI, like 'xdg-open path/to/some.pdf' is pretty cool.

See also:
	1) 'start /?' on Windows.
	2)   # xdg-stuff...

In talking about x86 "real" vs "protected" mode, and the backwards compatibility that allows, Rich suggested that DOS would probably boot on your brand new 8 core, 8G RAM hypersuperduper system.

Damn if he wasn't right.

In literally 30 seconds, I just grabbed a USB floppy drive, a 720K (!!!) Zenith DOS 3.21 boot floppy (the oldest I had handy, and how scary is THAT statement) and booted a Dell Inspiron 1525 laptop. And. It. Just. Worked. I am sitting at an A> prompt.

I tried a Dell R210, but it did not see the floppy drive and I did not mess with the BIOS. = Fail, but probably for BIOS and not CPU/MB reasons

I tried a Dell PE-650 and it saw the floppy, and I messed with the BIOS to put the floppy first in the boot order, but it didn't see the OS and kept trying to PXE boot the NIC. = Fail, but probably for BIOS and not CPU/MB reasons

In VMware Workstation 7.x, my MS-DOS 6.22 started with DHCP networking just fine ("C:>"). My DR-DOS 7.0.3 started with no networking (I never configured it), as well ("C:>"). FreeDOS 1.0 failed to start with a bunch of errors ending in "EMM386 - unable to continue" but when I chose a different start option it also worked fine ("C:>").

At that point I'd spent enough time on this and I stopped...

Though you know what'd be really funny? Booting a Macbook with that drive and seeing what happens... I'd assume nothing will happen as the Mac BIOS is probably too different and not looking for floppies. Still...

JP Vossen, CISSP            |:::======|
My Account, My Opinions     |=========|
"Microsoft Tax" = the additional hardware & yearly fees for the add-on
software required to protect Windows from its own poorly designed and
implemented self, while the overhead incidentally flattens Moore's Law.
Philadelphia Linux Users Group         --
Announcements -
General Discussion  --