Universallösung(TM): Xdialog, kdialog, oder was?

Sebastian Lisken Sebastian.Lisken at gmx.net
Tue Nov 25 12:38:59 CET 2008


Hallo. Nachdem Ralf mir die Antwort von Jan weitergeleitet hat, habe ich
mich vorübergehend auf eurer Liste angemeldet.

Das Projekt, um das es geht, ist die nächste Version des PrivacyDongle
des FoeBuD (http://www.foebud.org/privacydongle). Der Dongle soll auf
Windows, Mac OS X und Linux laufen. Das habe ich auch erreicht. Zu
meinem Hintergrund: Ich entwickele schon lange Software und habe nach
Anfängen in der Schule mit C unter Unix viele Erfahrungen gesammelt,
aber nie GUIs programmiert. Seit mehreren Jahren arbeite ich meistens in
Java und mit Web-Programmierung, also wieder ohne "von Grund auf"
entwickelte GUIs.

Das fragliche Programm ist nur das Startprogramm, gestartet wird ein
Firefox mit einem bestimmten Profil, das u.a. Tor enthält. Das
Startprogramm soll in der Lage sein, den Firefox und das Tor-Binary zu
aktualisieren. Dafür sind die Dialogboxen da. Ich brauche nur zwei ganz
grundlegende, das Äquivalent zu alert und confirm in JavaScript - also
eine mit Text und OK-Knopf und eine mit zusätzlich einem Cancel-Knopf
und der Rückmeldung, welcher Knopf gedrückt wurde. Und das Ganze richtet
sich an "unbedarfte" User und soll deshalb Dialoge benutzen, d.h. die
xterm-Lösung wäre sehr unschön (obwohl ich auch schon selbst daran
gedacht hatte).

Deshalb trifft die folgende Bemerkung ...

> Nein, im Ernst:
> Entweder das Projekt macht Bunt&Grafik, dann nimm das Toolkit welches das
> Projekt benutzt, oder lass es. Punkt.

... nicht ganz auf meine Situation zu, würde ich sagen. Ich habe per se
kein Toolkit.

> Aber da das ja nicht hip ist:
> http://www.math.msu.su/~vvb/2course/Borisenko/CppProjects/GWindow/xintro.html

Würde das mir zu einigermaßen "hübschen" Boxen verhelfen? Ich stelle mir
vor, daß das Programm auf einem Linux läuft, auf dem auch ein
graphischer Web-Browser eingesetzt wird. Aber ich weiß natürlich nicht,
was für eine Fensteroberfläche auf dem System installiert ist.

> Irgendwas auf den Bildschirm kleistern sollte in 200 Zeilen abgefruehstuckt sein.
> 
> Oder du must mal genauer beschreiben, was dieses Projekt machen soll.

Es geht wirklich nur um diese beiden Typen von Dialogen. Zu realisieren
als C++-Funktionen void alert(char*) und int confirm(char*).

> Ja, er wollte eine Dialogbox. Was erwartest er denn? Windows und OSX
> schummeln, da ist das ja auch schon alles gestartet.

Laßt uns bitte nicht in eine OS-Diskussion und eine Verteidigungshaltung
in Bezug auf die Komplexität der Situation gehen. Ich bin mit Windows
und Linux grundsätzlich recht gut vertraut. Es geht nur um die
Schwierigkeiten eines Programmierers, diese Dialogboxen herzustellen,
ohne Wertung. Ich habe mir für Windows mingw32 installiert und ein
bißchen Code aus dem Netz genommen und war sehr zufrieden, daß ich damit
recht "normal" aussehende Boxen mit sehr wenig Aufwand bekam. Mir ist
durchaus klar, daß unter Windows soviel einfacher ist. Aber ich kann den
Overhead von mehreren gestarteten KDE-Prozessen oder beispielsweise
einer zu startenden kompletten Java-VM nicht für dieses kleine
Startprogramm vertreten. Aus Sicht eines Programmierers ist es
wesentlich günstiger, daß das OS auch das Bauen von Dialogen und
Fenstern mitdefiniert, das seht ihr hoffentlich auch. Ich kenne aber
auch die Geschichte von Unix und Linux - als ich unter Unix anfing, gab
es noch kein X - und verstehe, warum die GUI unter Linux nicht zum
eigentlichen OS gehört. Wie gesagt, lassen wir bitte die Wertung raus
und konzentrieren uns auf Problemlösungen.

> Kein statisch gelinktes Binary. Vieleicht ein eigenes, das sich mit dem X-Server
> verbindet fuer ein bischen Fenster anzeigen, aber kein statisch gelinktes.

Das ist für mich immer noch der zentrale Teil dieser Diskussion. Deshalb
bitte ich hier um Gründe. Andre Landwehr schreibt "klassischer Fall von
nicht verstanden" und hat natürlich recht, denn das ist für mich
Neuland. Aber ich habe gesehen, daß Qt4 von vielen Cross-OS-Projekten
als Grundlage genommen wird und bei einer kurzen Recherche gelesen, daß
man damit auch statische Binaries herstellen kann. Auf dieser Grundlage
erscheint mir dieser Lösungsansatz zur Zeit als der interessanteste.

> Unter Unix kannst du nur von der libc&POSIX ausgehen. Alles andere ist Optional,
> ergo muss man dem Benutzer komunizieren, was da sein muss, oder eben die
> Packetverwaltung benutzen. Darum will man die ja haben/benutzen.

Wie gesagt, es geht hier um ein kleines "Anhängsel" (ein
vorgeschaltetes) für einen Start von Firefox, dafür kann ich dem Nutzer
auf keinen Fall abverlangen, daß er Dependencies überprüft und seine
Paketverwaltung anwirft.

Eine Frage zum Verständnis: wie schafft es eigentlich Firefox, daß es
als .tar.bz2 heruntergeladen, ausgepackt und gestartet werden kann? Ich
weiß, daß die Distributoren ihre eigenen Versionen anbieten, die man
über die Paketverwaltung installiert, aber die auf der Firefox-Seite
angebotenen Versionen funktionieren wahrscheinlich auch auf sehr vielen
Linux-Installationen? Ich bin auch nur an solchen Installationen
interessiert, weil ich eben so einen heruntergeladenen Firefox verwende.

Danke schonmal

Sebastian



More information about the Linux mailing list