Forum: Mikrocontroller und Digitale Elektronik wxWidgets Program ohne installiertem Desktop


von Max M. (maxi123456)


Lesenswert?

Besteht die Möglichkeit auf einem raspberry pi ohne installiertem 
Desktop ein wxWidgets Programm im Volldbildmodus zu starten?

Der Desktop frisst mir zu viel Ressourcen und ich möchte eine einfache 
Anwendung im Vollbildmodus starten als Bedieneinheit für eine Maschine.

Ich befürchte nein, da ohne Desktop eben auch keine vordefinierten 
Buttons etc. laufen/installiert sind. Liege ich da falsch oder korrekt?

Danke

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Max M. schrieb:
> Der Desktop frisst mir zu viel Ressourcen

Ich glaub da nicht dran.

Max M. schrieb:
> Ich befürchte nein, da ohne Desktop eben auch keine vordefinierten
> Buttons etc. laufen/installiert sind.

Hä? Wenn Deine Anwendung ihre Bedienelemente anzeigt, dann sind sie auch 
da.

Was aber auch immer Du vorhast, Du optimierst definitiv am falschen 
Ende.

von Jens B. (dasjens)


Lesenswert?

Dann nimm keinen Desktop sondern ein Windowmanager.
ion, wmaker, und weitere zigtausend

von Max M. (maxi123456)


Lesenswert?

Harald K. schrieb:
> Ich glaub da nicht dran.

Wieso nicht? Der ist immerhin immer aktiv und auf diesen Overhead würde 
ich gerne verzichten.

Harald K. schrieb:
> Was aber auch immer Du vorhast, Du optimierst definitiv am falschen
> Ende.

Ok, also sagst du der Desktop auf meinem pi zero frisst keine Ressourcen 
und macht diesen nicht wesentlich langsamer?

von Harald K. (kirnbichler)


Lesenswert?

Max M. schrieb:
> Ok, also sagst du der Desktop auf meinem pi zero frisst keine Ressourcen
> und macht diesen nicht wesentlich langsamer?

Sofern der Desktop nicht ein dynamisches Hintergrundbild (oder gar ein 
ständig laufendes Video) darstellt, nein. Er verbraucht etwas Speicher, 
aber mehr macht der nicht.

Woher kommt die Vorstellung, es könnte anders sein?

von C-hater (c-hater)


Lesenswert?

Max M. schrieb:
> Besteht die Möglichkeit auf einem raspberry pi ohne installiertem
> Desktop ein wxWidgets Programm im Volldbildmodus zu starten?

Jain. Kommt auf das Programm an. So lange es keine Features einer 
laufenden Desktopumgebung nutzt, kann man es natürlich ohne eine solche 
laufen lassen.

> Ich befürchte nein, da ohne Desktop eben auch keine vordefinierten
> Buttons etc. laufen/installiert sind. Liege ich da falsch oder korrekt?

Da liegst du falsch. "Vordefinierte Buttons" stellt typisch nicht die 
Desktopumgebung bereit. Es ist eher so, dass diese die ebenfalls 
benutzt.

von Jens B. (dasjens)


Lesenswert?

Max M. schrieb:
> Harald K. schrieb:
>> Ich glaub da nicht dran.
>
> Wieso nicht? Der ist immerhin immer aktiv und auf diesen Overhead würde
> ich gerne verzichten.
>
> Harald K. schrieb:
>> Was aber auch immer Du vorhast, Du optimierst definitiv am falschen
>> Ende.
>
> Ok, also sagst du der Desktop auf meinem pi zero frisst keine Ressourcen
> und macht diesen nicht wesentlich langsamer?

Alles verbrauch Ressourcen. Und wenn es Dir zu lahm ist, dann nimm etwas 
schnelleres.

von Rolf M. (rmagnus)


Lesenswert?

Ob es mit wxwidgets geht, kann ich nicht sagen, aber mit Qt geht es 
zumindest. Da habe ich das schon gemacht. Das heißt, ohne X-Server, 
Windowmanager und Konsorten direkt von der Konsole gestartet.

von C-hater (c-hater)


Lesenswert?

Rolf M. schrieb:

> Ob es mit wxwidgets geht, kann ich nicht sagen, aber mit Qt geht es
> zumindest.

Geht auch mit wxwidgets. Das Prinzip ist auch genau dasselbe, wie du es 
mit qt umgesetzt hast.

Eben all das nicht benutzen, was in der gewünschten schlanken 
Zielumgebung fehlt.

von Rolf M. (rmagnus)


Lesenswert?

Wenn du sagt, dass das mit wxwidgets gleich ist wie bei Qt, hat das dann 
auch so etwas wie die Platform-Plugins von Qt?

von C-hater (c-hater)


Lesenswert?

Rolf M. schrieb:
> Wenn du sagt, dass das mit wxwidgets gleich ist wie bei Qt, hat das dann
> auch so etwas wie die Platform-Plugins von Qt?

Dir ist klar, was ein "Prinzip" ist? Und dass sich die konkrete 
Umsetzung eines solchen doch sehr stark unterscheiden kann?

von Rolf M. (rmagnus)


Lesenswert?

Nunja…

C-hater schrieb:
> Das Prinzip ist auch genau dasselbe, wie du es mit qt umgesetzt hast.

Bei Qt habe ich das "umgesetzt", indem ich dem Programm beim Start 
einfach die Kommandozeilenparameter "-platform eglfs" angegeben habe, 
damit es das entsprechende Platform-Plugin lädt. Daher die Frage, wie 
dieses Prinzip der Platform-Plugins denn bei wxwidgets funktioniert.
Wie wäre es denn, wenn du einfach mal ganz konkret sagst, was man bei 
wxwidgets denn tun muss, damit es ohne X-Server genutzt werden kann, 
statt nur nebulös vom "selben Prinzip" zu reden?

von Stefan F. (Gast)


Lesenswert?

Erster Schritt:
Einen X-Server starten: /usr/bin/X

Zweiter Schritt:
Die Umgebungsvariable DISPLAY setzen: export DISPLAY=:0

Dritter Schritt: das grafische Programm starten.

https://www.x.org/archive/X11R6.8.0/doc/Xserver.1.html
https://linux.die.net/man/7/x
https://datacadamia.com/ssh/x11/display

von Harald K. (kirnbichler)


Lesenswert?

Oder man lässt den X-Server weg und arbeitet direkt mit dem Framebuffer 
des Rechners. Das ist ressourcensparender.

von Stefan F. (Gast)


Lesenswert?

Harald K. schrieb:
> Oder man lässt den X-Server weg und arbeitet direkt mit dem Framebuffer
> des Rechners. Das ist ressourcensparender.

Das erfordert aber spezielle Unterstützung durch das jeweilige Programm. 
Da muss man dann in der Doku des Programms schauen, ob und wie es geht.

von Rolf M. (rmagnus)


Lesenswert?

Harald K. schrieb:
> Oder man lässt den X-Server weg und arbeitet direkt mit dem Framebuffer
> des Rechners. Das ist ressourcensparender.

Genau davon rede ich ja die ganze Zeit. Ich dachte, das sei hier auch 
der Wunsch? Der Raspi bietet per egl auf dem Framebuffer auch volle 
Hardware-Beschleunigung inklusive 3D.

Stefan F. schrieb:
> Das erfordert aber spezielle Unterstützung durch das jeweilige Programm.
> Da muss man dann in der Doku des Programms schauen, ob und wie es geht.

Wie oben schon geschrieben: Bei Qt muss das Programm das nicht explizit 
unterstützen, da das dort bereits durch das Platform-Plugin erledigt 
wird. Die Frage war jetzt, ob wxwidgets sowas auch kann.

: Bearbeitet durch User
von Wendels B. (wendelsberg)


Lesenswert?

Harald K. schrieb:
> Woher kommt die Vorstellung, es könnte anders sein?

Aus leidigen Erfahrungen mit einem anderen Betriebssystem?

von Stefan F. (Gast)


Lesenswert?

"a version of wxWidgets/wxPython compiled against EGL cannot be made to 
use GLX, and vice versa... There have been requests to make the GLCanvas 
backend selectable at runtime, but unfortunately, that's a rather 
complicated change"

Das war 2021.
https://github.com/wxWidgets/Phoenix/issues/1923

von Dominik (koelner)


Lesenswert?

Ohne wirklich Ahnung vom Raspberry und wxwidgets zu haben: Auf meinem PC 
nutze ich einen zweiten, sehr einfachen virtuellen X-Server für eine 
spezielle, grafische Anwendung, welche exklusiv dort läuft ohne 
Windowmanager.
Auf diesen greife ich nur via vnc zu.
Er nennt sich Xvfb: https://de.wikipedia.org/wiki/Xvfb

Den wird es vermutlich auch in Raspian geben. Ob und wieviel weniger 
ressourcenhungrig das ist, weiß ich auch nicht. Vielleicht ist es aber 
ein Versuch wert. Ich starte ihn zudem als gewöhnlichen User direkt von 
der Konsole mit:
"Xvfb :1 &"

Die Anwendung wird dann gestartet mit:
"DISPLAY=:1 ./grafisches_programm &"

Um darauf bei Bedarf zuzugreifen, starte ich temporär einen vnc-server:
"x11vnc -display :1"

Mit einen beliebigen VNC-Client kann ich die Software dann nutzen. Wenn 
gar kein weiterer X-Server läuft, kann man sich sicher noch die ganzen 
DISPLAY=:1 Parameter sparen. Müsste also noch einfacher sein. Ich nutze 
Xvfb früher auch oft über SSH, wobei ich den x11vnc-Port dann noch 
tunnele mit "ssh server -luser -L5901:localhost:5901"

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.