A Guided Tour of Hotwire 0.333
Hotwire has advanced quite a bit since last I mentioned it. For the most part now, I am using it to develop itself, instead of gnome-terminal. Of course I've tried this a few times in the past week, but I would run into some bug that drove me back - until I fixed it. Add a lot of those fixes together though, and it's starting to actually feel usable.
One feature I added last night that's kind of a small thing but I am fond of is the last command. What last does is pretty simple - it returns the output of the previous command. This lets you interactively refine pipelines. For example, say you type cat foo.log | grep error. Now, suppose you want to further refine that for strings that match '192.168.1.1'. In a shell, you'd likely hit the up arrow, then append to the previous command. But doing so is wasteful (and sometimes unsafe) because it re-executes the entire pipeline; if foo.log is big you have to wait for it to be refiltered (or save it to a file, grep that...ug). Using last in Hotwire feels natural (and I plan to shorten the syntax to just '|').

Hotwire executing /sbin/ifconfig

After grepping for inet6
One feature I added last night that's kind of a small thing but I am fond of is the last command. What last does is pretty simple - it returns the output of the previous command. This lets you interactively refine pipelines. For example, say you type cat foo.log | grep error. Now, suppose you want to further refine that for strings that match '192.168.1.1'. In a shell, you'd likely hit the up arrow, then append to the previous command. But doing so is wasteful (and sometimes unsafe) because it re-executes the entire pipeline; if foo.log is big you have to wait for it to be refiltered (or save it to a file, grep that...ug). Using last in Hotwire feels natural (and I plan to shorten the syntax to just '|').
Hotwire executing /sbin/ifconfig
After grepping for inet6
You may notice from the screenshot that a lot more has changed. Here's a quick sample of stuff visible there:

Hotwire executing its ps command...on Windows!
- Hotwire now auto-resolves commands you type by prefixing them with sh or term as appropriate. So for example you can just type ifconfig and Hotwire knows you mean sh /usr/sbin/ifconfig.
- There are now tabs; try pressing Ctrl-t
- The display looks a lot nicer! I'm mostly done "porting" to GTK+.
Hotwire executing its ps command...on Windows!
So the first thing to notice here is that the output of the ps command is nicely formatted into columns based on its object properties (remember, the Hotwire builtin ps command outputs Process objects, not random bits of text).
The second thing to notice is...wait a minute, that's Windows! Yes. Hotwire boots on Windows now, and I fully intend to make it a mostly-first class citizen. I am still recovering from the mental scars inflicted from trying to learn the Win32 API enough to enumerate processes, but it's there. It's a pretty rare developer in the world that doesn't ever have to use Windows, and frankly I think Hotwire blows cmd.exe out of the water already for when you need to.
Another thing to notice in the above screenshot is the status message about kill - that's what you see when you use...right click menus!

Right click on a process to get a Kill option
The second thing to notice is...wait a minute, that's Windows! Yes. Hotwire boots on Windows now, and I fully intend to make it a mostly-first class citizen. I am still recovering from the mental scars inflicted from trying to learn the Win32 API enough to enumerate processes, but it's there. It's a pretty rare developer in the world that doesn't ever have to use Windows, and frankly I think Hotwire blows cmd.exe out of the water already for when you need to.
Another thing to notice in the above screenshot is the status message about kill - that's what you see when you use...right click menus!
Right click on a process to get a Kill option
Now, I want to talk about completion. The TAB completion engine is on its third iteration, and it's starting to feel about 80% of what bash does. If you use Hotwire for a while you will miss common-prefix completion (you'll know what I mean), and some other details, but it's mostly good enough, at least for me.
One thing that is a definite improvement though is that Hotwire offers you previous-token completion. Let's say you type host example.com. Hotwire not only records this in your history (so if you type ping you can hit the up arrow to reuse the command), but also remembers example.com as a token you used previously. If you start to type it again in any context, Hotwire offers it. For example:

Remembering you typed example.com earlier
One thing that is a definite improvement though is that Hotwire offers you previous-token completion. Let's say you type host example.com. Hotwire not only records this in your history (so if you type ping you can hit the up arrow to reuse the command), but also remembers example.com as a token you used previously. If you start to type it again in any context, Hotwire offers it. For example:
Remembering you typed example.com earlier
This is all part of the Hotwire philosophy of remembering everything you type, and making sure you never type the whole thing again.
Speaking of remembering things, Hotwire now also remembers which commands you used sh for and which you used term. For example, if you type term vi /tmp/foo.txt:
From now on you can just type vi and Hotwire will remember to prefix it with term instead of sh.
Last but not least, I battled setuputils and in the end produced a FC6 RPM and a source zip file: Download page.
I'm playing around with Google Apps for hosting the user pages, so excuse the bareness.
That's it for now, going to post before LiveJournal eats this!
Speaking of remembering things, Hotwire now also remembers which commands you used sh for and which you used term. For example, if you type term vi /tmp/foo.txt:
From now on you can just type vi and Hotwire will remember to prefix it with term instead of sh.
Last but not least, I battled setuputils and in the end produced a FC6 RPM and a source zip file: Download page.
I'm playing around with Google Apps for hosting the user pages, so excuse the bareness.
That's it for now, going to post before LiveJournal eats this!

(Anonymous)
Cool thing
Thilo
(Anonymous)
Re: Cool thing
(Anonymous)
Hotwires
Hmm... the name seems to already be used for another gnome(-related) project..
Google returns this as one of the top hits for "hotwire gnome":
http://eric.extremeboredom.net/projects/H
Always sucky when you have to fight over a name with someone else packaging something different...
//fatal
Re: Hotwires
I dunno...I'm kind of attached to the name =) We'll see.
Re: Hotwires
sh?
You mentioned adding output to indicate sh or term with an example of "sh /sbin/ifconfig". If you were being literal, I think you meant "sh -c /sbin/ifconfig" since your executing ifconfig in a shell, not having the shell process ifconfig. Just a nitpick.
Good luck with the project.
Re: sh?
Remember, that entry box isn't just something that does fork/exec on /bin/sh. Hotwire implements its own commands and syntax, but allows you to easily go out to the shell for non-native commands.
This might be clearer if you note that "sh ipconfig /all" works on Windows.
(Anonymous)
Awesome idea
Off to try it ...
M.Pomme
Could I suggest one feature that I've been hoping someone would add to gnome-terminal for years now -- incremental interactive backwards-search for scrollback?
Thanks!
(Anonymous)
RPM misses dep
"Traceback (most recent call last):
File "/usr/bin/hotwire", line 5, in ?
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources"
It seems that "yum install python-setuptools" fix this.
Re: RPM misses dep
Honestly few things most developers do in daily work should be "too big" for typical systems. Possibly 'make' on a very large project could be problematic, but I notice those kinds of projects (e.g. Linux kernel) tend to put some work into reducing gcc's crazy verbosity to make it easier to find stuff.
Also keep in mind, if you want to do something like 'tcpdump' which has infinite output, just 'term tcpdump' and you get a terminal. Hotwire doesn't take away the terminal, it's always available.
I am designing Hotwire keeping in mind developers who use systems with at least 512MB of RAM, preferably 1G or more. My laptop has 2G. If one is tight on space, there's always xterm+bash.
There's always the danger that the user will accidentally invoke a command with infinite output, and leave it unattended. It's not a good idea to run out of memory and crash in those circumstances.