Consider an industrial computer (say "embedded system"),

  • equipped with a linux server OS (no desktop)
  • running just a SINGLE application process (a single non-root user)
  • attached to an high resolution screen
  • attached with a keyboard

The computer fully dedicated to a SINGLE application process/user,

  • running in background (to be defined) and started at boot
  • run some I/O logics
  • get some user inputs (keystrokes/digits) from the keyboard
  • has to display some text/images on a screen attached to the computer

BTW, for text display details see also the related question: display big texts (on a graphic mode?) without a desktop environment).

    linux server host (no desktop env)
    |                                           |
    |                                           +--------> Digital inputs
    |   +--------------+                        <--------- Digital outputs
    |   | graphic card |                        |
               |                            |
               | HDMI / VGA                 | USB
+--------------v---------------+    +-------+--------+
| Please contact the operator. |    |                |
+------------------------------+    +----------------+
      screen (TTY console?)              keyboard

How can the (background) process print text (in text-terminal mode or in graphic mode) on the attached (dedicated) screen, and get keystrokes from the keyboard?


For output, I presume that one solution is that the process prints output texts as images, directly writing on the framebuffer (by example using program fbi.

But how if I would use the screen as a stdout of the (background) process? In this case I guess I need to "uncouple" the root TTY from the attached screen (that's possible?), allowing the user process to get the full control of the screen. It make sense?


How can I take keystrokes from the keyboard? Using the stdin? Reading the keyboard device directly?

BTW, I presume to access the computer for any (root) need, over SSH.

Any suggestion?

  • 1
    Maybe you'd want to replace getty with the program you want to run (or something that relays the input to your program)? raymii.org/s/tutorials/…
    – rudib
    Nov 22, 2020 at 12:24
  • 1
    Or you use cat /dev/tty1 (but this will block whatever is running in it frim getting the input). stackoverflow.com/questions/31440833/…
    – rudib
    Nov 22, 2020 at 12:41
  • Your question is confusing, it contains contradictions: Headless (meaning no display), and a description of a display. Please edit to remove any jargon words, and just say what you want. Nov 22, 2020 at 13:45
  • Are you asking. How can I set up a system with a single graphical application, but no window-manager, start-button, task-bar, etc? Nov 22, 2020 at 13:46
  • 1
    Does this help? doc.qt.io/archives/4.6/qt-embedded-running.html You can run a single app that's its own server process as well using embedded Qt ...
    – tink
    Nov 23, 2020 at 1:32

1 Answer 1


If you are asking. How can I set up a system with a single graphical application, but no window-manager, start-button, task-bar, etc?


You just need to not run the desktop: Window manager, and panel. There are just other processes. The process that starts the X11 server, will also start these. You just need to change the configuration.

  • Yes, I'd avoid desktop, form some reasons. I don't want: windows manager multi users. No X11 server. No background related processes. What's your solution/proposal? Configuration of what? Nov 22, 2020 at 15:05
  • Is the app just text? if it is graphical, then you need an X11 server (or wayland, or ..) Nov 22, 2020 at 18:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .