Forum: PC-Programmierung Linux Mint 19/Mate: Wie kann man gtk Warnunge los werden?


von Taucher (Gast)


Lesenswert?

Ich habe ein kleines GUI mit yad geschrieben – funktioniert problemlos, 
aber gtk wirft jedesmal eine Warnung aus, wenn yad gestartet wird und 
zerfetzt die Skriptausgabe im Terminal:

  gtk_box_gadget_distribute: assertion 'size >= 0' failed in 
GtkScrollbar

stderr von yad auf eine Datei umleiten bringt leider nichts – die 
Meldung kommt nicht von yad, sondern von gtk.

Wie kann man diesen Unsinn abstellen?

von Andreas B. (bitverdreher)


Lesenswert?

Versuche mal mit den Parameter -DNOT_X_WINDOWS zu compilieren.

von Taucher (Gast)


Lesenswert?

Meinst Du gtk compilieren?

von Andreas B. (bitverdreher)


Lesenswert?

Taucher schrieb:
> Meinst Du gtk compilieren?

Nein, das was Du mit den gtk libs compilierst.

von Taucher (Gast)


Lesenswert?

Ich compiliere nichts. yad ist ein fork von zenity und im Mint-Repo 
vorhanden. Ich habe lediglich ein Shellscript gebaut, das yad aufruft.

von Andreas B. (bitverdreher)


Lesenswert?

Dann halt yad neu compilieren, das ja scheinbar gtk verwendet.

von buntkuh (Gast)


Lesenswert?

Taucher schrieb:

> aber gtk wirft jedesmal eine Warnung aus, wenn yad gestartet wird und
> zerfetzt die Skriptausgabe im Terminal:

std. error umleiten ~ $yad-skript 2>/dev/null


https://askubuntu.com/questions/1144080

von Taucher (Gast)


Lesenswert?

buntkuh schrieb:
> std. error umleiten ~ $yad-skript 2>/dev/null

OK, das tut es… Da wird es wohl das Einfachste sein, entweder ein 
Wrapper-Skript darum zu bauen, oder das Skript sich selbst mit dem 
Redirect aufrufen zu lassen.

yad zu compilieren, ist mir nicht gelungen – das scheitert auf Mint 19 
schon beim configure daran, dass es keine passende gtk-Version findet. 
Wie sich das beheben lässt, habe ich leider nicht herausgefunden.

von Andreas B. (bitverdreher)


Lesenswert?

Taucher schrieb:
> yad zu compilieren, ist mir nicht gelungen –

Wenn das mit der error Umleitung funktioniert, brauchst Du das ja auch 
nicht mehr.

Taucher schrieb:
> Wie sich das beheben lässt, habe ich leider nicht herausgefunden

Vermutlich fehlen die sources für yad bzw. gtk.

: Bearbeitet durch User
von buntkuh (Gast)


Lesenswert?

Taucher schrieb:
> buntkuh schrieb:
>> std. error umleiten ~ $yad-skript 2>/dev/null
>
> OK, das tut es… Da wird es wohl das Einfachste sein, entweder ein
> Wrapper-Skript darum zu bauen, oder das Skript sich selbst mit dem
> Redirect aufrufen zu lassen.
>

oder im skript, probiere mal so


#!/bin/bash
...
exec 2>/dev/null
yad --text ...


---
man bash:

Note that the exec builtin command can make redirections take effect in
the current shell.

von Taucher (Gast)


Lesenswert?

buntkuh schrieb:
> exec 2>/dev/null

Das funktioniert – vielen Dank für den Tipp.

Ich hatte den Ehrgeiz, diese Skripte rein mit den Möglichkeiten der bash 
zu schreiben. Das war keine gute Idee: das Zeug ist schier unlesbar, 
weil die Syntax ziemlich unstrukturiert ist. Pearl ist schon kein 
Vergnügen, aber die bash toppt das noch um mindestens eine 
Größenordnung…

Auf die Idee mit dem exec muss man erst mal kommen – wie bekommt man das 
hin, ohne sich tief in die bash-Quellen einzugraben?

von Gerhard Z. (germel)


Lesenswert?

Taucher schrieb:
> wie bekommt man das
> hin, ohne sich tief in die bash-Quellen einzugraben?

man bash
Bis Abschnitt REDIRECTION runter scrollen (oder suchen).
Dort gibt es eine "Randnotiz":

Note that the exec builtin command can make redirections take effect in
       the current shell.

Dann nach "exec " suchen (einschließlich Blank). Dort ist es dann 
beschrieben.

Hab es aber selber nicht gewusst; auch von mir: danke für den Tipp!

Ach ja, nochwas, Warnhinweis auf der ubuntuusers Seite gefunden:
https://wiki.ubuntuusers.de/yad/#Stoerende-Warnmeldung

: Bearbeitet durch User
von Taucher (Gast)


Lesenswert?

Gerhard Z. schrieb:
> Note that the exec builtin command can make redirections take effect in
>        the current shell.
>
> Dann nach "exec " suchen (einschließlich Blank). Dort ist es dann
> beschrieben.
> Hab es aber selber nicht gewusst;

Kann es sein, dass du mich für ein bisschen doof hälst?

> Ach ja, nochwas, Warnhinweis auf der ubuntuusers Seite gefunden:
> https://wiki.ubuntuusers.de/yad/#Stoerende-Warnmeldung

Das habe ich ausprobiert – funktioniert nicht, wenn man die 
Parameterliste für yad dynamisch aufbaut. Als String klappt das nicht, 
nur wenn man die Parameter in einem Array zusammenbaut und anschließend 
mit $(array[@]) ausführt, warum? Keine Ahnung, das sind das die 
Mysterien der Bash…

von Gerhard Z. (germel)


Lesenswert?

Taucher schrieb:
> Kann es sein, dass du mich für ein bisschen doof hälst?

Macht es den Eindruck, war nicht gewollt. Aber stell dir jemanden vor, 
der den Thread hilfreich findet, aber das erste Mal die man-pages 
aufruft. Der hat sicher Schwierigkeiten, in der überaus langen man-page 
die entsprechenden Infos zu finden.

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.