Use a more user friendly default shell

Registered by chawsum

The terminal is daunting, and most users should keep away from it. Still, there might be people who decide they want to use the terminal for some reason - we should investigate if there is a more usable shell than bash available.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Low
Drafter:
None
Direction:
Approved
Assignee:
None
Definition:
Discussion
Series goal:
Accepted for future
Implementation:
Not started
Milestone target:
None

Related branches

Sprints

Whiteboard

See the full specification for ideas and discussion.

The terminal is a power tool. Making it "friendly" would be counter-intuitive to its function (IMHO, but what do I know, I'm not a hardcore dev xD). ~cassidyjames

l think that if the user is forced to use a terminal, like me when I was a newby to Linux, he/she will try to execute the commands that appear in posts of forums, and guides on the Internet. Almost all of these instructions are for bash. By this reason I think bash should stay there. --gandreoliva

There is ZSH out, if you mean that. But I like BASH. --gotwig

bash is already pretty friendly for those who need to use a shell. Don't think this is an area worth spending time on. --ttosttos

I agree with shnatsel's direction -- simply install `fish` and make pantheon-terminal use it by default. It's an extremely minimal and unobtrusive effort.

--------------------------------------------------------------------------------------------------------------------------
-- Josh Ring

I agree with fish in the short term, but as a long term idea I think a simplified shell for inexperienced users which blends gui elements with the console and simplifies the appearance could be valuable for the platform. This guided shell acts like an interactive tutorial and helps them get their work done at the same time, while having an advanced shell alongside caters for more advanced users.
I made some mockups of my vision of it:

by default the shell loads and tells the user what is in their home directory, from the point of view of someone who has never seen a console before, it immediately becomes more obvious it is a way of interacting with files and the computer.

here the user has selected going to another directory and since the ls runs by default its more intuitive and autocompletion options can be seen appearing as they type, they can be selected with a mouse too. It might also be nice if the folder buttons were clickable by the mouse.
http://dl.dropbox.com/u/7244043/console_concepts/cd.png

another example of making things more intuitive is with the chmod command where they can select a the permissions they want for the file they want. simple.
http://dl.dropbox.com/u/7244043/console_concepts/chmod.png

running applications from the terminal by default will give local options but if it is not found in the local directory it will show the executables in the system path
http://dl.dropbox.com/u/7244043/console_concepts/run_app.png

someone who doesn't know linux may want to edit a text file so have it automatically call gedit and prioritise the list of files with text files first like this script.sh for example
http://dl.dropbox.com/u/7244043/console_concepts/gedit.png

if the new user wishes to change user, entering the su command for them and presenting them with a list of available users which auto-completes makes life easier, also note the tab which informs on which user is currently at the terminal has changed on the top right.
http://dl.dropbox.com/u/7244043/console_concepts/su.png

--------------------------------------------------------------------------------------------------------------------------

In the long run we would like to investigate including TermKit: http://acko.net/blog/on-termkit --shnatsel

OK, I made FISH the default shell for now. Let's see how that works. --shnatsel

FISH causes problems with auto tools. There isn't enough time left in the cycle to fully test the implications of a new shell. But nevertheless, FISH is not a good choice. ~DanRabbit.

I like Termkit and fish but i suggest taking a look on final term it has useful features.
http://iloveubuntu.net/meet-final-term-fancy-full-features-terminal-work-progress -- swizzle

I don't think it is useful to explain users how to use terminal (they don't need to, and when they do, they copy-paste commands from google). We can instead enhance power-users experience using something like final term. It is even written in Vala, if that matters. --sal-merone

To clarify: This blueprint is about the shell (bash, zsh, fish etc.). It is not about the terminal emulator (TermKit, FinalTerm). eOS already includes a new terminal emulator. --nvasilakis

The big question is for the "interactive" shell, since scripts can still use bash/zsh. But users can use the Python or Ruby shell (and I know people that do), or we can even write a vala shell, that would have the same syntax as Vala (and support objects). --nvasilakis

On the other side of the coin are users who have used shells before and want or only know commands from them over the decades. Imagine you are coming from DOS,2K,XP, etc and type cd.. , del, or copy. Typing tree for example tells you how to install the tree package. Using small bash,ash,dash etc scripts you could take arguments and not mess with aliases.
usererror

--------------------------------------------------------------------------------------------------------------------------

I would say it would probably be best to stick with bash. bash is the default for most linux distros, most experienced users probably expect bash and most new users probably have little to no command line experience so it would most likely to be best to stick to the most commonly used shell so that if they have questions they aren't asking a niche community that uses some obscure shell. Also bash is the default shell on OSX which would make migrating apple users more comfortable. all in all I'd say sticking with bash would probably be the best option for most users, but that's just my two cents. --VoxCannon

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.