Interoperability Between the GUI and the CLI?
shylock0 asks: "I use AutoCAD pretty extensively, and one of the things I've always loved about it is the fact that, in addition to having a GUI, it has a really great command line -- which you access simply by starting to type, and which will actually work alongside your mouse. CAD lends itself to this duality, mainly because its nice to be able to deal with the overall work visually, but be able to specify dimensions exactly. Having to use the mouse to click on a separate dimensioning tool-box for every element you create wastes a substantial amount of time. You can even use mouse and keyboard side-by-side, without clicking yourself into a different environment -- for instance, if you have selected an element, and are using the mouse to rotate it, starting to type commands to resize the object doesn't stop the mouse from being in rotation mode. Such functionality would allow complex tasks -- beyond just opening, saving, and so forth -- using direct keyboard input, but would work in the context of the GUI. For instance, it would be great if I could copy files from an open window just by starting to type 'copy'. What other apps, both commercial and free, still have an easy-to-enter command-line style element?"
"This seems to me to be a feature that would be great to have, particularly in operating systems and productivity apps. Once you get the hang of the commands, and assuming you can type quickly, keyboard input is actually faster than using the mouse. In AutoCAD, I can design an entire house using just the keyboard. How much productivity has been lost by the decline of keyboard use beyond simple shortcuts?"
KDE has some sort of high-level messaging protocol so that one can send events, making it appear as if menu items were chosen and whatnot.
Not sure how concise the syntax is, but this allows command-line control of the app.
I can't wait until someone *finally* has a GUI, drag and point interface to setting up interapp messag sending. I mean a rapid development environment where I can choose a menu item, drag a little line to a button in another window, and have that button trigger said menu item.
Cocoa is fairly similar, but there's no free equivalent, and Cocoa, AFAIK, does not have a lot of work put into making it interact with the command line well, which would also be important.
May we never see th
I've always loved the fact that hitting the tilde (~) key would bring a semi-transparent console down over the top half of the screen when playing Quake engine games. I think this is one of the smartest features of the product.
It has made me wonder why nobody has implemented this on an OS level. Mac OS X would be perfect for it for example. To just hit a key and have a console drop down from the top menu bar would rock. Frankly, if I had the programming skill, this would be the first thing I'd want to write.
I totally agree that CLI and GUI should be designed to work together. It really shouldn't be an 'either/or' consideration.
I've just played about for a minute and already found some really cool uses. I can modify my scripts that play music to do so in another session inside a konsole, and rename sessions:
dcop konsole-875 session-2 renameSession Hello
Or fancier,
dcop konsole-875 $(dcop konsole-875 konsole newSession) renameSession "Music"
hmm, not sure how you would then get a command to run in that session, but it's cool either way.
I've previously suggested exactly such a tool for linux desktop configuration -- a GUI where one could make changes in (via checkboxes or whatever), that would simultaneously display exactly what change was being made in the actual config file, AND would allow the user to edit the actual file in the usual way for text. That way newbies can still have their hands held, yet they can learn what's going on under the hood. Meanwhile, old hands might decide to type in the config file side instead.
Ideally, such a tool might have a "novice mode" that makes the raw window "read only" so a newbie can't make stupid mistakes; and an "expert mode" which allows the user to do as they please in the raw window, and banish the GUI side if they don't want it.
BTW this is exactly how an HTML editor has to behave to be useful to me -- a WYSIWYG window where I do most of the work, and a raw HTML window where I do the tweaking. I want *both* available at all times, and preferably with realtime updates in both windows.
There is nothing as good for learning something as seeing how cause and effect are directly related. Plus it's a whole lot more interesting when you can SEE what you just did.
~REZ~ #43301. Who'd fake being me anyway?
If anyone use Perforce (source code control) on Windows - the P4Win GUI client doesn't give you a command line, but it will show in a seperate pane all the "raw" commands it uses to drive the GUI, so if you want to know how to do something on the command line you simply do it in the GUI and then look at the log of how the program did it - very useful.
Similarly "Record a macro" in programs like Excel and Word will generate a (VBA) script of the function calls required to generate an action - again very useful for when you want to see how to do something programatically.
Finally, I always like the way that Emacs will intelligently use the status bar to report items like "you've been typing a long command but you've paused at this point", or some commands will display extra info (like - you could have done that with a keyboard shortcut), but these messages don't get in the way of what you're doing (like a modal message-box does). Oh, and recording actions to Lisp macros (cf Excel and VBA) is very useful too.
--
T
I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best