Command Line Gui For Newbies


Esn

(:";
Joined
Mar 5, 2003
Messages
3,239
Location
Toronto, Canada
Website
esn.newgrounds.com
I doubt I'm the first to have this idea... but let's see. :) Basically, I wonder if there's a way to keep all the power of the Linux command line, while making it easier for new users to know what they can do.

I imagine it looking like this:

A series of columns. A bit like how text adventures looked when they were making the transition to graphic adventures. See "Eric the Unready" or "Gateway" for an example. The leftmost column would have a list of discrete "words" or "terms" (or whatever they're called) that you could start a line with. For example, "d" or "su". Once you choose one, the next column over to the right fills up with the list of "words" you could type next, based on the first "word" you chose. After you choose one, you choose from the next column over, and so on. When you mouse over any "word" from the ones you can select in the columns, you'll be able to read a definition of what it does.

Once you've selected enough terms, you click "ok", and Linux executes the command you've built. If you haven't crafted a coherent command yet, the button "ok" is greyed out and cannot be clicked.
 
interesting idea... me thinks it would be a bit heavy on the coding side of things... nifty, to say the least, but complicated to program...


disclaimer: simply my opinion... I am not yet a coder, so I can't honestly say one way or another... :p
 
There is CLI Companion:

http://okiebuntu.homelinux.com/okwiki/clicompanion
https://launchpad.net/clicompanion

No idea how easy it would to get it working on the pandora but the source is available so..... meh
 
I think this would be fairly easy to program, using perhaps xlm configuration file. The difficult part would be building up the configuration data for each command. Hhhmmm, thinking about it adding in the logic for what makes a command 'coherent' would be tricky (but fun to try and figure out!)....
 
In a normal terminal. If you type the first letter(s) of a command and then press TAB twice it will display a list of commands that start with that letter(s), or if there is only one match it will complete the command for you. While this doesn't tell you what the command does it does give you some ideas based on other commands that share the same beginning. Typing "usb [TAB] [TAB]" will display a handful of commands dealing with usb.

Also typing the name of just about any command followed by "--help" will display the basic syntax and usage of just about any command you can think of. This is really all a body needs to get a baseline knowledge of command line going. Additionally for some commands pressing [TAB] will also auto-complete options for that command too.
 
I will admit, I do see space for a more "user friendly" CLI option... maybe something ncurses-based would work for this sort of project... hmm...
 
Maybe I'm old school but ..

If you don't know how to 'su' to root, theres a good chance you shouldn't be doing it ;) I know a little about internal combustion engines, but I should not take my cars engine apart :)

That said .. if someone wants to learn, they should get in there and hack; I'm all about people screwing around .. rolling up their sleeves and diving in.

But I dont' think a CLi 'companion buddy' is good for either of these use cases:
1) learning -- if its helping you out, to do thigns for you, you're not learning.
2) total newbies doing stuff -- use the GUI, don't try the command line at all, it'll just piss you off.

Is there another use case being address hered? Thats the real question.. what is the goal here. The GUI shoudl lert you fuddle around, explore directories, copy files, edit stuff, even manage su on occasion, so generally you dont' need to go command line as a newbie.

If the use case is somethign like .. "we want to apply various tweaks, that are not provided for in the GUI", then the _real_ question is not "wheres a command line helper" but is instead "where in the GUI can o I do _xx_" or "can we write a twerak GUI, like so many other OSes have?", that is a library of wteaks that can be applied/removed on demand.

Thats a whole other question?

jeff
 
In my mind... I see it as a happy medium between gui-only and standard CLI... with the way ESN is suggesting, it would be "doing the work for you" while explaining the work to you, essentially... so imagine a pillar in the middle of a chasm you are trying to cross... makes crossing that chasm a little easier since you don't have to leap the full distance across, but half the distance twice... just my assumption of it all though...
 
skeezix said:
Maybe I'm old school but ..

Or maybe you are just sensible. ;)

The only reason I can think of to have a GUI for CLI commands is a device like the iPhone where it has no keyboard and it makes input easier. Anyone that thinks differently should open up a terminal window right now and type "rm -rf /", and if they don't understand why it is a bad idea before they should do after.


Custom Processing Unlimite said:
In my mind... I see it as a happy medium between gui-only and standard CLI... with the way ESN is suggesting, it would be "doing the work for you" while explaining the work to you

I think I've seen these things that show you how to do something and explain how they work, books or something I think they are called?

If you want to browse your file system in a terminal window you use cd/ls, if you want to do it in a GUI you use a file manager. It makes no sense to make a GUI to type cd/ls for you in a terminal window, unless you don't have a keyboard.
 
Last edited by a moderator:
skeezix said:
2) total newbies doing stuff -- use the GUI, don't try the command line at all, it'll just piss you off.
If the use case is somethign like .. "we want to apply various tweaks, that are not provided for in the GUI", then the _real_ question is not "wheres a command line helper" but is instead "where in the GUI can o I do _xx_" or "can we write a twerak GUI, like so many other OSes have?", that is a library of wteaks that can be applied/removed on demand.

All I'm trying to do is to find the most painless solution to a problem.

The problem is this: Many useful things on the Pandora can only be done by command line.

Sure, in an ideal world, there would be a GUI to cover all of those things.

But we've already seen, such as for example when I proposed a GUI for changing Pandora's input assignments (which would have with one stroke fixed the situation with the many PNDs that have badly-mapped keys), that devs are busy, and any proposals we make must be balanced against the reality that devs do not have infinite time to do what is ideal. The Pandora is mostly a volunteer project, and making comprehensive, intuitive GUIs takes a lot of thought and time. Plus, Linux devs have little use for GUIs themselves, because they prefer the command line, so they don't have much motivation to work on them.

And for good reason - the command line is powerful and perhaps more logically laid out than many GUIs. Unfortunately, it also has a high entrance barrier, a bit like how in the Middle Ages anyone who wanted to read the Bible had to learn to read Latin first.

Okay, maybe I'm stretching a little, but let me run with this analogy a bit. A select few know the special language, and based on their knowledge, ask the common folk to carry out instructions that the common folk do not understand. If you ask for help with the Pandora, the answer will pretty often be "type this into the terminal". For example, when I asked how to get the information that is provided in Microsoft Windows by the Task Manager, chris_c told me of several terminal commands. When I had trouble getting a USB device recognized, slaeshjag asked me "Does dmesg identify it?" - so I had to Google for what dmesg was and what exact command would work for what I wanted to know. You cannot even SEARCH FOR A FILE in the file manager, but you can do it in the terminal.

Clearly, unless devs enjoy being the gatekeepers, it is better for everyone if the Pandora's users become more self-reliant so they can do what they want themselves and not ask devs to do it for them. Anything that will make the transition smoother is a positive thing. My proposal is a bit like a translation project, translating the special language to the common language that people will understand. And it will do it on-the-go, like Babelfish, only I imagine it will be more precise because programming languages cannot afford to be as vague and fuzzy as human languages.

Judging from what mindlord has said, much of the raw material needed for this program already exists. If pressing TAB twice allows one to see a list of commands that start with a letter, then obviously Linux keeps a full listing of all the words in this terminal language somewhere. If typing "--help" will bring up an explanation of the command, this means that Linux also has dictionary definitions for all these terms already.

The main "innovation" in my GUI proposal, then, is simply to speed up the process significantly by allowing a user to quickly mouse-over all the possible definitions at once, then go back and try another "branch" that a command could take.

OF COURSE any prudent user will first Google the command he's trying to build to see if it's dangerous. The point is that by laying out all the options, it makes it easy to see what CAN be done, and you don't have to study a new language all at once but can learn it gradually, as you slowly try more and more complex things.

Skeezix, your argument AGAINST making knowledge accessible is frankly a bit strange to me. It is the same as the one the Catholic church was making for not translating the Bible to local languages.
I know a little about internal combustion engines, but I should not take my cars engine apart
What if while you were doing that, for every part you considered removing or adding, a definition popped up telling you what would happen if you did that? I bet you'd be a lot less likely to make a mistake.

The only reason I can think of to have a GUI for CLI commands is a device like the iPhone where it has no keyboard and it makes input easier. Anyone that thinks differently should open up a terminal window right now and type "rm -rf /", and if they don't understand why it is a bad idea before they should do after.
What's your point? Anybody can open a terminal and type that ALREADY, no?

The difference with my proposal is that by being able to see the definition of each term by mousing over it, the user will be able to to AVOID doing dangerous things.

It makes no sense to make a GUI to type cd/ls for you in a terminal window, unless you don't have a keyboard.
As I said, if mindlord is correct, all of this is already possible by pressing double-tab and --help in the terminal itself. My only innovation is making it quicker to go forward and back between possible branches of a sentence.

In my mind... I see it as a happy medium between gui-only and standard CLI... with the way ESN is suggesting, it would be "doing the work for you" while explaining the work to you, essentially... so imagine a pillar in the middle of a chasm you are trying to cross... makes crossing that chasm a little easier since you don't have to leap the full distance across, but half the distance twice... just my assumption of it all though...
Yes, exactly.
 
Last edited by a moderator:
Esn said:
Judging from what mindlord has said, much of the raw material needed for this program already exists. If pressing TAB twice allows one to see a list of commands that start with a letter, then obviously Linux keeps a full listing of all the words in this terminal language somewhere. If typing "--help" will bring up an explanation of the command, this means that Linux also has dictionary definitions for all these terms already.
I think this highlights the difficulty in making this happen. Open a terminal and, without typing anything, hit tab twice. You should see "Display all XXX possibilities? (y or n)", where XXX is a three- or four-digit number. That is the number of programs that can be executed on the command line. Finding the one you want in a list that size is not much more practical in a GUI than it is on the command line. The "--help" flag has a different problem in that each program implements it independently. Many programs don't use it at all, and those that do aren't guaranteed to use it consistently.

What I'm trying to say is that a console helper is not going to be as easy as you think. But I do agree that it could be useful in lowering the barrier to entry. To make it work, you'll need to think very carefully about how to expose functionality that was never designed to be used this way. Unfortunately, I don't have any easy answers there.
 
Last edited by a moderator:
I think the barrier of entry is purely psychological. If you as an end user have a desire to actually learn to use the tools the command line has to offer. Skip the crutches and hop on the bicycle. Futz around. That's how you learn. I am not lying it really is easier than it looks.
 
I gotta say this really is a none problem, with Linux you basically get out what you put in... (more you effort you put into learning the easier it is)

Its really very easy to use a terminal, in fact you could argue using a gui is harder you can only start an application *without* parameters and worse still you can't chain the output to the input of the next program and then the output of that to the next input and so on...

further more these complicated gui applications frequently need to be run from the command line, just to get some feedback when something goes wrong...

...and there really is an awful lot you can do with the supplied gui apps on the Pandora, if you've spotted something you can't do with a gui configurer - why not write your own, with a very easy to use language like python and pygtk its very simple to drive a command line program...
 
not everyone wants to get their hands that dirty, chris... I hear where you're coming from, but how many people here would attempt to fix their own cars when they break down? The global society is not yet in a DIY mentality, so there will be plenty of people who want simplified and dumbed down with little to no learning curve. I am not one of those people, but I do acknowledge their existance... The best answer that could possibly be had is the holy grail of computing/programming, that being a significantly powerful CLI program with a truly intuitive (and configurable) GUI that accesses ALL of the commandline functions... at the risk of upsetting a couple of people, I'd have to say it's the stereotypical "Blonde with a PhD" concept... best of both worlds combined into something that just works.

But I can see where the idea came from... wanting to make it easier for people who are not tech-savvy to have yet another semi-simple way to be introduced (or introduce themselves) to Linux. It has been said that when one wants to learn, it's generally easy and they pick up what they need without much effort, because they wanna learn... but it's also true that given the right tools, some people learn better with one method vs another. Visual vs tactile vs text and so on. There is no one perfect method for everybody to learn everything... So I agree with ESNs efforts and think some sort of interactive method similar to what he's suggesting would work for certain types... this discussion may be better suited for LinuxQuestions, but having the discussion in itself, no matter the audience, is a good thing, IMHO. It does bug me when people have a "let the special ed kids stay in special ed" type of mentality toward efforts like this, but to each his own.

(Disclaimer: that is my generalization of statements against making tools for easier entry into areas where people wish to go but don't have the natural facilities to accomplish such goals... I mean no intentional offense to anybody with said statements. If you still choose to be offended, that is your choice, so please acknowledge and accept that.)
 
buy an ixxxx then...

yer choice is - have a system that you can make work the way you want to.... or if you don't want the effort get something like an itouch where you get little choice - but you need very little effort, don't like simplified products? don't like products that decide how you should work? then put some effort in...
 
your logic is flawed, because Linux is Open and can be anything you want it to be... you CAN have the best of both worlds... but this will be the last I choose to say in this line of the discussion, so as to not allow this to turn into a hostile conversation. You don't seem like the type that believes anybody can do anything given the right tools... and I am such a person.... so I shall agree to disagree...
 
ah you said you weren't going to say any more, quite why you thought this would turn hostile is beyond me, so I did you the disservice so as not to upset you...
 
Just use TAB. If you remember part of the command, hit tab. Or use help.
 
Back
Top