what does startx command do?

Once upon a time(1), when the memory of the computers was measured in kilobytes and the disks in megabytes, running the graphic interface all the time was considered harmful.

Most Unix computers were used for scientific computations and simulation in multi-user environments, and the graphic interface running on them would reduce the memory and CPU power available to them.

So when you needed a graphical interface you just started it with startx (2).

startx basically runs an Xserver (the graphical "driver") and a command which run on it, which is typically a window manager. By default the commands that are run are in ~/.xinitrc file in your home directory, or some generic system file otherwise.

Modern systems are thought from the bottom up to have a graphical system running all the time, so no one has probably checked the working of startx for ages -- that explains a lot of strange behavior you can have.

If you want to experiment and the feel the good old times, the best thing is doing the following:

A) install Xnest and fvwm. Xnest is a graphic server-within-a-server, a kind of server that will open as a window in your normal system. Fvwm is a very simple window manager which was very popular back then. You will need old pixmap fonts, too.

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

B) write this file somewhere, for example in you home dir, and call it ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Run (notice: startx is normally run with first the client command, then a double dash, and then a server command. As I said, most new systems do not have sensible defaults for startx alone.).

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

...and you have a 80ies workstation screen:

enter image description here

(You can have the menu by clicking on the "Xnest" desktop).

...and if you feel really adventurous, you can start a native session on another virtual console (read the other answers) by going to one of them with Ctrl-Alt-F1, loggin in, and

startx ~/test 

which will normally open on Ctrl-Alt-F8.

Notice: modern desktop environments are not designed to run simultaneously, for the same user, in two different consoles. So do not use gnome-shell or unity or modern things when doing this experiments, or you could mess up your configuration.


Footnotes:

(1) Speaking about around 1980-90 here.

(2) For example, I had a laptop with 256k of RAM. It was painfully slow in the (B&W!) graphic interface, but snappy in the console. So I did most of my work (editing C, LaTeX and similar files) in console mode, and switched to the graphic environment only when really needed.


startx starts the xsession or the graphical interface where you see a login screen and anything more than just an ascii console (text session).

You are receiving this error because the xsession is already started and you are trying to execute the command from inside the xsession on tty7.

tty7 is the user interface that exists at ctrl + alt + f7 (default xsession).

tty1 is the user interface that exists at ctrl + alt + f1.

tty2 is the user interface that exists at ctrl + alt + f2 . . . and so on.

tty1 - tty6 are text sessions and you can login with your username and password on one of these screens. After you login, you can run the command startx and the xsession will start in tty7 if it is not already running and tty8 if tty7 is already running an xsession.


Run Levels:

run-level 0 Halt - Shuts down the system.

run-level 1 Single-user mode - Mode for administrative tasks.

run-level 2 Graphical multi-user with networking - Starts the system normally.

run-level 3-5 Unused but configured the same as runlevel 2

run-level 6 Reboot - Reboots the system.

The term runlevel refers to a mode of operation in one of the computer operating systems that implement Unix System V-style initialization. Conventionally, seven runlevels exist, numbered from zero to six; though up to ten, from zero to nine[citation needed], may be used. S is sometimes used as a synonym for one of the levels. Only one "runlevel" is executed on bootup - run levels are not executed sequentially, i.e. either runlevel 2 OR 3 OR 4 is executed, not 2 then 3 then 4. - en.wikipedia.org/wiki/Runlevel


It simply means at a different tty.

Quotying the linked question:

By default Ubuntu has 7 tty's.

1-6 are command line only, 7 runs your X session (your normal graphical desktop).

To access them, use this keyboard shortcut: Ctrl + Alt + F1

(changing F1 to F1-F6 to access the terminal that you need)

To get back to your X session (the normal desktop), use: Ctrl + Alt + F7

after logging on to a text-mode console simply means logging in to a different tty and typing the command:

startx

Tags:

Xorg