Run Qt widget app on linux with no GUI



  • Hello there,
    I am using latest QT 5.7 on Debian x64. I was wondering either it is possible to somehow run the QT widget app on the system where the GUI environment is off? I remember that there was a QT embedded version with own framebuffer. But here the gui is installed it is just off (console mode). So could a Qt 5.7 widget app open on top of console instead of graphical user interface? This is needed for a PC that has only one task- to run the Qt app and nothing else, thats why I want to turn the whole system background off.
    I would appreciate all help regarding this topic.


  • Moderators

    Hi @Bremenpl
    If the X Server and the Window manager is running in the background I dont see any problem in running the application provided all the Qt application dependencies are satisfied.



  • Do you know how to keep the X server and window manager running while in console mode on Linux?


  • Qt Champions 2018

    @Bremenpl Usually you can switch to text console from X server pressing Strg-Alt-F1 (or F2-F6). To go back to the X server you then press Alt-F7.


  • Moderators

    @Bremenpl Since you said you have installed "GUI" I hope the X is already running in the background.
    Fire this at your console:

    ps ax | grep -i "/usr/bin/X"
    


  • Output:

      872 tty7     Ssl+   0:01 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
     1692 ?        S      0:00 /usr/bin/xprop -root -spy
     1722 pts/0    S+     0:00 grep -i /usr/bin/X
    
    

    Yes when I switch to text mode with ctrl alt F1 and run the app I get "aborted" in return.


  • Moderators

    @Bremenpl Tt says X server is using tty7 (it is by default) so you can run applications only on tty7 and not tty1 (which you did by pressing CTRL+ALT+F1 and launching the app)

    Now the question is what is running at tty7 ? What does it display when you press CTRL+ALT+F7 ? Since you have disabled GUI is it blank ?



  • Ok now I understand. Yes on F7 there is my regular gui and on F1 pure console. My question is- How can I qun qt application being in pure console? I havent disabled anything by hand yet, I just switched context F1-F7



  • You can try to run using minimal or offscreen platform-plugin. http://doc.qt.io/qt-5/qguiapplication.html#platformName-prop .



  • Hi,

    if the GUI app does not need user interaction you can try to run it with option --platform offscreen on the command line. Then the app will run without visible GUI. You will need to have the offscreen platform plugin in-place, of course.
    -Michael.



  • No, no thats not the case. I Need full GUI Widget functionality with user interaction. I Just want the whole operating system GUI background to be gone. So the user can only use the QT app when using a the PC. When PC starts there should be just command line without gui and after a while script would turn on my Qt application (thats graphical and needs user interaction).

    I Recall in Qt embedded I had to add -qws parameter to do this, but there was no GUI at all from the system. The app itself had GUI.


  • Moderators

    Or you can just disable the fancy items loaded by the GUI and directly boot to your application by putting it into a startup script.
    Also disable the extra unwanted tty's and keep tty7 default



  • Yes thats exacly what I need, and by disabling fancy stuff I wanted to disable whole OS gui. tty7 is default for now. So the scenario is like this:

    1. PC starts with only console mode
    2. Script turns on the QT GUI application in full screen mode.

    Would this be possible: http://doc.qt.io/qt-5/embedded-linux.html#linuxfb ?


  • Moderators

    @Bremenpl Usually for these kind of applications (can say kiosk mode) people start with a minimal OS and a minimal light weight window manager so that OS customizations become easier.



  • Thats exaclt what i mean- Kiosk mode. But my os is quite lightweight. I can make it lighter even, but the point is I dont know how to turn the app on in console mode in any OS for now :P.


  • Moderators

    @Bremenpl

    but the point is I dont know how to turn the app on in console mode in any OS

    As said earlier boot to default tty where X is running, launch the app in fullscreen mode through startup scripts.
    Or you can try the linuxfb mode so that you own the framebuffer but then you get no window manager functionalities for eg. alt-tab switch or window decorations



  • So in short words, there is no way in linux to hide the whole OS GUI but still be able to run selected apps with GUI? One has to use own frame buffer?


  • Moderators

    @Bremenpl

    So in short words, there is no way in linux to hide the whole OS GUI but still be able to run selected apps with GUI?

    Yes there is. The most easiest is to use the minimal OS so customizations becomes easy. Donot install anything else but a bare minimal window manager so that the user gets a feel that only your application is running on top.



  • @p3c0 So lets say I install Debian without any GUI and then I just install lightDM or OpenBox?


  • Moderators

    @Bremenpl Right. Or Fluxbox.



  • Ill try to do this the way you described. Thank you very much.


  • Moderators

    @Bremenpl Good Luck :)


  • Lifetime Qt Champion

    Hi,

    Depending on your needs, wayland and the QtWayland module might also be an option.

    Another possible option might be KDE's kiosk mode.



  • If you mean that you want to boot to command line, then start the graphical Qt app but not be able to use other graphical applications and don't want a desktop environment (which you probably mean by "GUI") with desktop, panel, application launcher, etc., but still accept the X (maybe X.org) server running, then yes, it's possible. See "man startx" (ftp://www.x.org/pub/X11R7.5/doc/man/man1/startx.1.html). As you can see in the given .xinitrc example, you can write there what you want to start when X is fired up. Basically you put only your application name and the wanted command line arguments there. Then, on the command line, give the command 'startx'.

    You have to accept that when your application opens a dialog or other window it looks ugly, can't be moved or resized etc. You can of course try to implement a minimal in-application window manager or at least take care that window sizes and placements are good enough and maybe draw a nice border around it. OR you can add a minimal window manager to .xinitrc file, as in the example.



  • @Eeli-K Thank you, thats most likely what I meant :)


  • Lifetime Qt Champion

    @Bremenpl
    Hi, other option is to create a custom session
    so you can have single app and also be able to start a desktop if needed.

    Most likely you will want to run a windows manager also.

    http://askubuntu.com/questions/23932/how-do-i-replace-the-desktop-by-an-application

    Im not sure if @Eeli-K solution is the same in debian version. :)


Log in to reply