|
|
Log in / Subscribe / Register

Lea: The Unity design process (and how you can play a part in it)

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 2:04 UTC (Sat) by tshow (subscriber, #6411)
In reply to: Lea: The Unity design process (and how you can play a part in it) by dlang
Parent article: Lea: The Unity design process (and how you can play a part in it)

I agree with that, but I think we've got complacent. We can do better than bash, and when I say that I don't just mean some other direct descendent of sh. There have been some tentative steps in the right direction, but the command line has been largely stagnant for decades.

I've got a boil-the-ocean project to fix this, but I haven't had the time to get it to the point where it's worth putting out there.

To give you a sense of the sort of thing I'm thinking of, consider a standard terminal session. You type a command, it executes, produces some output, you get control back. Standard REP loop stuff.

Now, imagine each cycle of the REP loop is in a bubble. A bubble you can tear off and put somewhere else on the screen. Or name, and pipe things to/from. Imagine if when you launch a command, it "backgrounds" immediately, but to its bubble, so it can keep outputting to the bubble without messing up the current command, or intermixing destructively with other commands.

Imagine if you could hook up DBus services trivially as pipeline stages.

And the terminal has a richer vocabulary, so it's capable of generating (and later updating) things like progress bars, or other simple widgets. Or can say "make this mouse-active and launch this program with that as an argument" so filenames and urls and the like can be mouse-active. Or "this bit is block text, so typeset it nicely in a proportional serif font", while having monospace text for all the interactive stuff. Or nesting levels, so you can navigate program output hierarchically.

If programs using the shell had some standard calling convention (like, say, --describe-args) that would output a machine parseable argument tree, so the shell autocomplete would know that -f expects the name of an existing file. And which would provide data the shell could typeset into proper, modern manual pages.

Imagine a robust scripting language and support for interactive function editing, so you can build up a library of useful functions and tweak them as you need. Being able to type simple math on the command line and have it evaluate without having to jump through syntactic hoops.

Imagine being able to highlight something and run a command on it which substitutes the result for the highlighted area; like interactive backquotes.

And have the shell backed by a daemon, so you can attach/detach as with screen, even if the session is on a different system.

That's just a fraction of the plan, really. The whole idea takes pages. The idea isn't to replace the existing desktop, it's to provide a powerful tool for controlling whatever desktop you choose to use.

Ultimately, if I can build it, it replaces bash, man, info, xterm, screen, emacs and a whole host of other stuff. So it's a boil-the-ocean project in every sense. But I think it's worth building.


to post comments

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 3:44 UTC (Sat) by ovitters (guest, #27950) [Link] (2 responses)

Sounds like PowerShell.

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 5:58 UTC (Sat) by raven667 (subscriber, #5198) [Link] (1 responses)

As far as the mouse interactivity, sounds like a LISP machine

http://www.cliki.net/Lisp%20Machine%20Videos

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 20:31 UTC (Sat) by tshow (subscriber, #6411) [Link]

I admit to being one of those people who wishes lisp was more prominent than it is. It's a good language family.

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 5:54 UTC (Sat) by Cyberax (✭ supporter ✭, #52523) [Link] (3 responses)

Congratulations, you've just described PowerShell. Oh, there are differences from you description, but the end result is mostly the same.

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 20:42 UTC (Sat) by tshow (subscriber, #6411) [Link] (2 responses)

Not really. There are some similarities with PowerShell, but (to me, at least) PowerShell doesn't go nearly far enough. From what I can see, it's just a REP loop front-end for the .Net framework, with some shell functionality worked in.

Which is better than cmd.exe was, but it's not nearly enough.

I should write the whole thing up properly and put it on a web page.

As an example, I don't believe you can use PowerShell to create widgets that sit inline in the terminal. It's .Net, so you can presumably create windows with things in them, but you can't (for example) create a scrollable list or a progress bar inline in the terminal text.

I don't believe PowerShell has screen-like functionality, though I could be wrong.

As far as I know, PowerShell has no equivalent to the named buffers scheme I'm proposing, beyond possibly being able to hamfist it through global variables.

As far as I've seen, PowerShell is still expecting to run on a terminal running a monospaced font, and has no way of breaking out of that mode.

I could go on. And I'm not saying PowerShell isn't a step forward in some ways. But I think we can do way better.

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 18, 2012 21:40 UTC (Sat) by Cyberax (✭ supporter ✭, #52523) [Link]

>Not really. There are some similarities with PowerShell, but (to me, at least) PowerShell doesn't go nearly far enough. From what I can see, it's just a REP loop front-end for the .Net framework, with some shell functionality worked in.

And very powerful introspection capabilities.

>As an example, I don't believe you can use PowerShell to create widgets that sit inline in the terminal. It's .Net, so you can presumably create windows with things in them, but you can't (for example) create a scrollable list or a progress bar inline in the terminal text.

You can, by working with the terminal directly. But it'll be more like ncurses programs.

>I don't believe PowerShell has screen-like functionality, though I could be wrong.

I've seen utility which allows to detach and attach to a running PowerShell server. Essentially, the 'screen' utility but with some missing functionality.

>As far as I know, PowerShell has no equivalent to the named buffers scheme I'm proposing, beyond possibly being able to hamfist it through global variables.
?

>As far as I've seen, PowerShell is still expecting to run on a terminal running a monospaced font, and has no way of breaking out of that mode.
Not really, posh can be run just fine in complex GUI. It's mostly output-agnostic.

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 20, 2012 6:15 UTC (Mon) by alecs1 (guest, #46699) [Link]

Please do create that page. I would expect that companies that try to make money out of Linux should pay for the kind of work that could advance Linux to new grounds. Ubuntu has finally come up with something very interesting, HUD; but I'm expecting more from them :) (maybe something like you describe).

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 23, 2012 5:21 UTC (Thu) by blujay (guest, #39961) [Link]

That sounds neat. Reminds me of TermKit (google it if you haven't seen it--maybe you guys should collaborate).

Lea: The Unity design process (and how you can play a part in it)

Posted Feb 24, 2012 16:45 UTC (Fri) by pspinler (subscriber, #2922) [Link]

This inspired me to start checking out what one can do with dbus from the command line. Kinda interesting. Thanks for the clue!

For anyone else interested, the tool 'qdbus' seems like a nifty and useful tool. It introspects objects by default, but also allows you to send messages via method calls and reports results.

-- Pat


Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds