Под Ubuntu 16.04 я получаю следующее сообщение
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged
когда я открываю zenity с помощью команды
zenity --text-info --filename=<filename>
Этого не произошло до 14.04. Я предполагаю, что ответ связан с этим постом, но пост не объясняет, как реализовать предложенное решение. Может кто-нибудь объяснить, к какому файлу я должен добавить предложенные строки?
Вы исправляете это предупреждение, давая GtkDialog родительский объект, который будет модальным. Соответствующими функциями являются gtk_window_set_transient_for () (которая устанавливает это окно всегда поверх или переходное для другого) и, необязательно, gtk_window_set_modal (), чтобы сделать его модальным диалоговым окном. В конечном итоге это то, что делают различные конструкторы GtkDialog.
WINDOW_ID=$(xprop -name
echo $ TITLE` | grep WM_CLIENT_LEADER | cut -d "#" -f2 | cut -c2-20) `и я попытался, zenity --attach=$WINDOW_ID --text-info --filename=<filename>
но, к сожалению, я все еще получил предупреждение. Жаль, но однажды может пригодиться узнать, как получить идентификатор окна!
NULL
. Однако я не мог установить make install
локально zenity (я не мог найти документы или что-то о том, как настроить установку), поэтому я в конце концов сдался. Придется использовать грязный 2>/dev/null
.
zenity --help-general
дает,--attach=WINDOW Set the parent window to attach to
но я не уверен, как его использовать (что такое Window?), возможно, это решит вашу проблему.