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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.