PuTTY, I'm leaving you.
OK, so while I love Linux as a server environment, it gives me the creeping horrors on the desktop and I stick to Windows there. This means I need a terminal emulator, and a good one would be nice. I've used the old stand-by, PuTTY, for approximately two centuries. (Or about ten years, but who's counting?) It's very functional software: does pretty much anything you need. No complaints about that, and I'm grateful to Simon Tatham and company for making such handy software. But it's always had some very un-Windows behaviors, and they're a real pain. Some are understandable, although could be worked around (for example, Ctrl-C is used as an abort command on the terminal side of things, but if you're highlighting text, it's not exactly rocket science that you want to copy that text when you hit Ctrl-C) with a little thinking. Some are not, and after having eight different PuTTY windows on my toolbar1 today, I had enough of this crap.
Enter Poderosa, an unfortunately named but very very nice .NET/Mono terminal emulator. Tabs! Split display panes! Saved authentication data! A context menu when I right-click, not the bizarre X paste behavior! (It doesn't do the smart thing for Ctrl-C/Ctrl-V, instead preferring Alt-C/Alt-V, but that's small potatoes compared to trying to middle-click for a copy on a two-button touchpad.)
If you're on Windows and you need a terminal emulator a lot, I'd totally give this a look.
1 - Yes, I know I could use screen. I don't want to; not all of them are on the same server, and even if they were I still want tabs. No, I do not care that it is not the UNIX way. The UNIX way is programmer-oriented process wank rather than user-oriented software. If it doesn't just work, it doesn't work well enough.
My PATH is longer than 1024
My PATH is longer than 1024 characters which prevents Poderosa from opening a cygwin session. I get this exception:
Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: startIndex
at System.String.CtorCharArrayStartLength(Char[] value, Int32 startIndex, Int32 length)
at Poderosa.Protocols.LocalShellUtil.PrepareEnv(ICygwinParameter p) in C:\P4\src\Protocols\LocalShell.cs:line 155
at Poderosa.Protocols.LocalShellUtil.Connector.Connect() in C:\P4\src\Protocols\LocalShell.cs:line 99
at Poderosa.Protocols.LocalShellUtil.Connector.AsyncConnect() in C:\P4\src\Protocols\LocalShell.cs:line 70
PrepareEnv looks like this in reflector:
protected static void PrepareEnv(ICygwinParameter p){
if (!_cygwinDLL_loaded)
{
char[] buf = new char[0x400];
int n = Win32.GetEnvironmentVariable("PATH", buf, buf.Length);
string newval = new string(buf, 0, n) + ";" + CygwinUtil.GuessRootDirectory() + @"\bin";
Win32.SetEnvironmentVariable("PATH", newval);
_cygwinDLL_loaded = true;
}
}
That call to Win32.GetEnvironmentVariable() is a PInvoke to kernel32.dll:
http://msdn.microsoft.com/en-us/library/ms683188%28VS.85%29.aspx
The return value from GetEnvironmentVariable() will be greater than 1024 in my case, causing the exception to be thrown in the string constructor on the next line.
To work around it, use NetDasm to modify the IL so it creates a 4096-byte buffer instead of 1024 bytes. Make sure when you backup Poderosa.Protocols.dll that your backup doesn't have a .dll extension, otherwise it'll try to load both DLLS and raise an exception about duplicate extension points.
From snooping around the GuessRootDirectory() function, I found another quirk. If your cygwin bin directory isn't in your PATH then you may need to create a registry key called "/" under "HKCU\Cygnus Solutions\Cygwin\mounts v2" and inside it a REG_SZ called "native" with a value pointing to your cygwin installation.
That is some serious
That is some serious dedication, sir.
I don't like cygwin as a matter of principle (it infests the computer pretty nastily, IMO), so I'd only used it for SSH. I'll shoot a link to this comment over to the devs, though.
Ed: Dedication? Maybe, but
Ed: Dedication? Maybe, but it's worth it to have a decent terminal emulator on windows! And you're right about putty being awful - I had been using Console but it's got its own quirks that make it just as annoying - eg. it locks up if you scroll while long-running commands are running. I do a mix of cygwin and ssh so Poderosa is a dream come true. Thanks for putting me onto it!
Re feedback? I'd submit a patch and replace the PInvokes with managed calls - but they haven't had a release in 3 years so I doubt they'd care. I'll email them though.
For the die-hards out there - there are another couple of cygwin issues: I have poderosa start with cygwin. But it ignores %HOME% in the environment and defaults to /home/(username) when launching a cygwin session at startup. If you have a non-standard %HOME% like I do (I use My Documents) you won't get the desired result. To point it to your non-standard home directory, save out a shortcut file with the correct home directory, and launch using that. The same applies if you use a non-standard shell.
If the path to your shortcut file contains a space (mine's in My Documents), Poderosa refuses to open it. You need to change how explorer passes .gts files to Poderosa. Go into Folder Options in any explorer window and locate the .gts file extension in the File Types tab; click "Advanced" then "Edit", and change this:
C:\Program Files\Poderosa\Poderosa.exe -open %1to:
"C:\Program Files\Poderosa\Poderosa.exe" -open "%1"Looks like you're right about
Looks like you're right about the Poderosa devs; I couldn't even find an email address for their project (and I couldn't really be bothered to try to go sign up for their mailing list just to point them to this post). That's a shame.
Poderosa mailing list
The mailing list is on Gmane here:
So you can post to it without needing to subscribe
(though a moderator might need to approve your message before
it gets to the list).
Poderosa mailing list
Blarg, the comment form ate anything between angle brackets.
How unfortunate. Anyway, the URI is
http://dir.gmane.org/gmane.comp.terminal-emulators.poderosa.general
rxvt
I'm wedded to the rxvt that comes with Cygwin (contra infestation, Windows without Cygwin is unusable IMHO) - it's compiled not as an X application, but with a minimal wrapper DLL that emulates just enough of X to let rxvt work without an X server.
For copy, just select text. Works like a charm.
Right-click terminates a selection range started with left-click; I don't see why I'd want a context menu, though. Rxvt doesn't have any menus. Middle-click pastes, but is infrequently used.
It does need some tweaks in your ~/.Xdefaults to look nice, though.
I also use rxvt on Unixes, seems to run faster and suck up less (a *lot* less) memory than Gnome/KDE alternatives, even with 10K line buffer.
No tabs though.
To each their own. I think
To each their own. I think Cygwin exemplifies most of the bad parts of Unix (modularity for modularity's sake, our-way-or-the-highway, command line process-wank), but if it works for you, awesome. :-)
It may work, but I would strongly contest that it "works like a charm." The Windows desktop operates on highlight-and-copy. There are some applications (most terminal emulators, mIRC) that do otherwise and they are wrong. Conform to the platform you're working on unless you have a good reason otherwise (and no, "this is how we do it on Linux" is not a good reason--I'm looking at you, Pidgin and the GIMP and all the rest), otherwise you fail at understanding the needs of your users.
Why would you want a context menu? Well, let's take a look at Poderosa's:
I started using Poderosa today and I've already used all of these. It's ridiculously helpful, and doesn't try to force upon me silly little Unixisms that don't make sense on Windows. :)
there are other windows ssh client
I've already try poderosa but some matters 'as not auto loading of config) came.
I like this putty port...
http://kitty.9bis.com/
This looks interesting
This looks interesting so I will give it a shot.
Copy/paste behaviour isn't as nonstandard as you think
Before you berate PuTTY and other terminal emulators for not
using Ctrl-C / Ctrl-V for copy and paste, fire up Windows's
own cmd.exe and see how selection works there. You will need
to turn on 'QuickEdit mode' in the preferences to select
text directly with the mouse. But whether or not that option
is turned on, the selection and copy/paste behaviour is quite
different to other Windows programs, and fairly similar to
PuTTY's.
I'm all for consistent user interfaces, but when even Windows
itself uses different conventions for command windows and GUI
applications, it's reasonable (consistent, even) for third-
party command windows to do the same.
As for bringing up a context menu on right-click, see
Window -> Selection in PuTTY's configuration dialogue box.
(BTW, this captcha is almost impossible - it took me more
than ten attempts.)
That CAPTCHA is obnoxious -
That CAPTCHA is obnoxious - as soon as I write this I'll go change it to the math one. If I were feeling ambitious I might try ReCAPTCHA, but, man, that takes work. :-)
But to be honest, I wouldn't try to defend PuTTY based on the Windows command line. The Windows command line sucks. It is a great example of what to never, ever, ever do when it comes to software development. That's a bit unimportant though, as PuTTY doesn't act like the Windows command line. If you were going to act identically to it I'd suggest a lobotomy, but at least you'd have a defensible position--you'd be consistent with the rest of the OS. But since they choose not to be consistent with anything...well, that's a problem. :)
Plink/Pageant?!
> Saved authentication data!
It seems to me the problem is using passwords then. Use Putty agent. Plink and Pagent have been happily wed for years (at least a century, in your timezone) and there should be no need for _any_ authentication past the initial passphrase for Pageant once you start it.
RSA auth is the way to go. Remembering passwords is always a low stoop.
... IMHO :)
Seth
Farking 'ell, the other
Farking 'ell, the other commenter was right about the captcha, or apparently, I'm not human!
Yeah, that sucked. Fixed now.
Yeah, that sucked. Fixed now.
That may be a workable way of
That may be a workable way of doing things. But I often don't have the ability to set that up on servers I access. Some are clients' servers. Others are shared web hosts. Some are local virtual machines that I can't be assed to bother with fiddling with beyond installing the LAMP stack so I can just get to work. It's easier for me to go install a new terminal emulator once, to get over the hurdle of things-I-don't-like-in-the-old-one, than set up every server I ever touch to deal with keys. :)
Putty Works Just Fine...
I use Putty with Putty Connection Manager (http://puttycm.free.fr), that way all my Putty windows are in one interface and in tabs and not spread around my taskbar.
Why do you even need to hit Ctrl-C? The second you highlight something in Putty it is AUTOMATICALLY copied to the clipboard. All you have to do is Ctrl-V in what ever application you are pasting it in...or if back into Putty just Right-Click. There is no issue here.
There is no need to emulate the old-style UNIX 3-button mouse, it's not needed. Not even when using Linux/UNIX on the desktop.
Why do you even need to hit
The issue here is that this behavior is wholly unlike every other Windows application I've ever used with the exception of mIRC, and frankly, being in the same user-interface category as mIRC is never a good thing.
There's no good reason for PuTTY to not behave in accordance with other Windows software, so it shouldn't.
As for PuTTY Connection Manager - looks better, but for the moment I'm happy with Poderosa. When this starts to annoy me I'll probably take a look. :)
I agree with your disgreement with your delusion of the UNIX way
> Yes, I know I could use screen. I don't want to; not all of
> them are on the same server, and even if they were I still
> want tabs. No, I do not care that it is not the UNIX way.
> The UNIX way is programmer-oriented process wank rather than user-oriented software.
I think your perception of the UNIX way is flawed in some way. You realize that essentially all terminal apps on Linux have been tabbed for approx. the last 10 years, right?
Stepping into windows feels ultra-awkward b/c of the lack of basic tabbed terminal access in the base os, imo (though console2 is pretty good when it works).
"Delusion"? How cute. Unix
"Delusion"? How cute. If you're going to be a twit, I can go install the Troll module just for you.
Anyway, no, I don't think I'm all that far off. Unix desktops have been moving away from the "Unix way" for about as long as they've been making a concerted effort to be worth using for more people. This is a not inconsiderable factor in them getting closer to being better.
OK, so while I love Linux as
OK, so while I love Linux as a server environment, it gives me the creeping horrors on the desktop and I stick to Windows there.
Oh man. I'm just the opposite. I've slowly become more frustrated with Windows over the past year; the awful security settings on my Windows XP netbook finally prompted me to install Ubuntu on it... so now the Linux-based computers in this house outnumber the lonely Windows-based laptop by 3 to 1 now.
Poderosa: looks hot. Wish I could get Tunnelier to use it, though.
Hey, if it works for you,
Hey, if it works for you, awesome. :) I don't have a netbook, and run Vista (which I think has an unfair rap, though I never used it pre-SP1) for my only full-use computer (a Dell Studio 15).
All my VMs and remote server machines are Linux-based, though.
My two cents
I'm not going to argue that you should not hold your opinion, but I would like to present mine.
Having ^C be mapped to a copy operation would, IMO, be an incredibly dense choice. I need to send SIGINT to the running process on the other end of the session far more often than I need to copy text. Now, I will say that the copy/paste behavior should be more obvious, but I honestly prefer it to the Windows way.
One option, as you suggest, would be to have ^C copy when text is selected and send a literal ^C to the other end when text is not selected. I think this would be far worse than any other option. It would be horribly confusing -- ^C now has two behaviors, and unless you have actually read the documentation on copy/paste (which, let's face it, nobody who uses PuTTY ever does) it is going to take you far longer to understand what is going on than even the current default behavior.
To boil it down to a simple statement: when I am using *any* terminal to a UNIX box, regardless of the platform the terminal is running on, I expect ^C to kill the thing on the other end. Period. Substituting in Windows behaviors for *expected* UNIX behaviors in a *UNIX shell* would be a stupid choice.
Again, IMO.
(As a footnote... If it doesn't just work, it doesn't work well enough. This is the primary reason I do not use Windows. :) )
Hmm, the blog software
Hmm, the blog software stripped my "i" tag in my footnote. Mentally put quotes around "If it doesn't just work, it doesn't work well enough."
Whoops. I had it set to allow
Whoops. I had it set to allow EM but filter I. My bad. :)
Linux Mint
If you're coming from a Windows background, then you might want to try out Linux Mint. I switched over to Linux desktops about four years ago from a life in Windows and have personally found that Linux Mint is the most user-friendly distro I've used.
Seriously, give Linux desktops a chance. It seems like a huge hurtle at first, but it most definitely is worth it.
I respect your opinion, but
I respect your opinion, but it in no way matches my experience.
I used Linux on the desktop for approximately two years, from Kubuntu 5.10 to 7.04--I dislike GNOME almost as much as I dislike the new KDE 4, but KDE 3 was the best desktop I ever found on a Unix. To be entirely honest: it sucked. Things that were trivial in Windows (like, say, making sound work without invoking three pagan deities and shaking the corpse of a dead chicken over my computer) were hard or tedious or just plain bad under Linux. I told myself it was just a learning curve, that it got better over time. It didn't. Things that were broken stayed broken over multiple releases. Things that worked got broken in new releases, and didn't get fixed. Programs chock full of bad usability problems kept those bad usability problems and found new ones to boot. It wasn't productive and it wasn't fun.
I ended up using VMware more and more to access programs I consider basic and necessary: Photoshop (no, WINE is not an answer, and the stupidly-named GIMP is doubly so), Illustrator (ditto), Visual Studio (if Linux had a development environment that could have competed this may have been different--NetBeans is getting there but is not there, same with MonoDevelop), and games. Finally I asked myself, "why am I bothering to do this? Windows has all the applications I need and want, and doesn't make me jump through hoops. Am I really this much of an idiot?" I decided I wasn't that much of an idiot, and switched back.
As I see it, desktops are for using, not fiddling with. I have no interest in editing an X.org configuration file, yet Ubuntu 9.04 still made me do that because the ATI restricted drivers in the restricted repository shat themselves. No--stop--do not post "but that's because they're closed source," I don't care, it's not my problem, and the not-my-problem turned into about five hours of my time to solve. If there was a compelling reason to use Linux on the desktop this might not have been a game-changer, but there isn't and it was.
Maybe Linux has gotten better on the desktop. I wouldn't know: I won't go back to it. I wasted too much time fighting with it and have precisely zero interest. If I ever have a burning sensation in my loins for a Unix desktop, first I'll see a doctor. Then I'll buy a Mac.
I have the same experience
Hey Ed,
I agree with you.
I have the same experience as you. I have been going at Linux specifically Ubuntu for the last 4 year. Though I love Unix/Linux as a server environment I really dislike it as a desktop. Ubunth 9.10 goes a long way over what it was but it still has a lot of catchig up to do. Things just don't work and sometimes I fix them but still each update brings a new problem or I run into hardware problems with new releases.
The UI experience out of the box is now far behind Windows 7 and the Mac OS.
As soon as Apple releases a 12" laptop and hopefully with a trackpoint I am switching to Max OS.