За день до выхода GNOME 3.10 доступен (https://mail.gnome.org/archives/gtk-list/2013-September/msg0...) стабильный релиз новой ветки многоплатформенного тулкита для создания графического интерфейса пользователя - GTK+ 3.10.0 (http://www.gtk.org/). Ветка GTK+ 3.10 полностью обратно совместима с прошлыми выпусками GTK+ серии 3.x.
В состав тулкита входит полный набор виджетов, позволяющих использовать GTK+ для проектов различного уровня и размера. Код GTK+ развивается в рамках проекта GNU и распространяется под лицензией LGPL, что позволяет использовать GTK+ не только для разработки свободного ПО, но и для создания проприетарных приложений, не требуя от производителей закрытых программ выплаты роялти или покупки специальной лицензии. С тех пор, как GTK+ был разработан в рамках проекта GIMP, тулкит используется в различных проектах, например, GTK+ лежит в основе десктоп-окружений GNOME и Xfce или используется в таких продуктах, как Firefox и OpenOffice/LibreOffice.GTK+ спроектирован для поддержки не только C/C++, но и других языков программирования, таких как Perl и Python, что в сочетании с использованием визуального построителя интерфейса Glade (http://glade.gnome.org/) позволяет существенно упростить разработку и сократить время написания графических интерфейсов. Организация вывода в GTK+ абстрагирована от типа оконных систем, например, поставляется бэкенд, обеспечивающий возможность работы поверх дисплейного сервера Wayland, а также бэкенд, позволяющий отрисовывать вывод библиотеки GTK+ в окне web-браузера (запустив Gtk-приложение на одной машине, можно открыть web-браузер на другой машине и получить доступ к интерфейсу данной программы).
Из добавленных в GTK+ 3.10.0 улучшений (https://developer.gnome.org/gtk3/3.10/) можно отметить:
- В бэкенде (https://live.gnome.org/Wayland/GTK+), обеспечивающем возможность работы поверх дисплейного сервера Wayland, добавлена поддержка протокола Wayland 1.2 (http://www.opennet.me/opennews/art.shtml?num=37414). Код Wayland-бакеда отмечен как практически завершённый и готовый к реальному применению. В частности, добавлена поддержка максимизации окон, анимированных курсоров, многомониторных конофигураций, настроек и использования собственных поверхностей (custom surfaces). Также реализована поддержка протокола синхронизации кадров, позволяющего учитывать готовность вывода при отрисовке композитным менеджером;
- Расширены возможности бэкенда Broadway (http://git.gnome.org/browse/gtk+/log/?qt=grep&q=broadway), позволяющего отрисовывать вывод библиотеки GTK3+ в окне web-браузера. В новом выпуске улучшена обработка размера окна, добавлена поддержка синхронизации кадров, реализована аутентификация входа по паролю, обеспечена возможность сборки на платформе Windows;- В бэкенд для операционной системы OS X добавлена поддержка нативных методов ввода;
- Поддержка дочерних обработчиков композитинга (composite children) в GtkWidget, что позволяет создавать сложные виджеты на основе ui-файлов, созданных в GtkBuilder. Существующие сложные виджеты переведены на использованием новой схемы;
- Поддержка декорации на стороне клиента, что позволило придать окнам с приложениями на GTK+ привычный вид, а также обеспечить такие возможности как скруглённые углы, скрытые рамки и оформление области заголовка на стороне приложения.
- Поддержка масштабирования вывода для экранов свервысокого разрешения;
- Режим тонкой регулировки скроллинга, делающий прокрутку более предсказуемой и отзывчивой, а также позволяющий создавать такие функции как автоматическая прокрутка;
- Новый виджет GtkHeaderBar (https://developer.gnome.org/gtk3/3.10/GtkHeaderBar.html), похожий на GtkBox, но отличающийся дополнительными возможностями по центрированию дочерних элементов (обычно заголовка), независимо от другого контента;
<center><a href="https://developer.gnome.org/gtk3/3.10/headerbar.png">... src="http://www.opennet.me/opennews/pics_base/0_1380008455.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>- Новый виджет GtkPlacesSidebar (https://developer.gnome.org/gtk3/3.10/GtkPlacesSidebar.html) с реализацией боковой панели для диалогов выбора файлов. Виджет может быть использован совместно с Nautilus;
<center><a href="https://developer.gnome.org/gtk3/3.10/placessidebar.png"... src="http://www.opennet.me/opennews/pics_base/0_1380008608.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>
- Новый виджет GtkStack, предоставляющий альтернативный к GtkNotebook метод для отображения одного из набора дочерних виджетов. При переключении между виджетами используется анимированный переход. Для использования вкладок можно использовать дополнительный виджет GtkStackSwitcher;
<center><a href="https://developer.gnome.org/gtk3/3.10/stack.png"><... src="http://www.opennet.me/opennews/pics_base/0_1380008642.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>- Новый виджет GtkRevealer (https://developer.gnome.org/gtk3/3.10/GtkRevealer.html) для скрытия и показа дочерних виджетов с использованием анимационного эффекта;
- Новый виджет GtkSearchBar (https://developer.gnome.org/gtk3/3.10/GtkSearchBar.html) с реализацией всплывающей панели поиска;
- Новый виджет GtkListBox (https://developer.gnome.org/gtk3/3.10/GtkListBox.html) предоставляющий контейнер для отсортированного и отфильтрованного вывода списков;
<center><a href="https://developer.gnome.org/gtk3/3.10/list-box.png">... src="http://www.opennet.me/opennews/pics_base/0_1380009017.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>
- Управление геометрией: Добавлена поддержка механизма базового распределения размеров, позволяющего виджетам экспортировать содержимое текстовых данных и адаптировать для их размещения обрамляющие их контейнеры, которые будут выровнены в соответствии с общей компоновкой элементов. Для объектов GtkEventBox и GtkCheckButton добавлена поддержка адаптации высоты к ширине;- Прекращение поддержки протокола Motif DND, использование нескольких экранов на один дисплей, функций gdk_window_get_display и gtk_widget_push_composite_child, отделяемых элементов меню, некоторых настроек GTK+. Кроме того, объявлены устаревшими элементы API GtkIconFactory,
GtkIconSet, GtkIconSource, GtkImageMenuItem, GtkAction и
GtkUIManager, поддержка которых будет прекращена в GTK+ 4.
URL: https://mail.gnome.org/archives/gtk-list/2013-September/msg0...
Новость: http://www.opennet.me/opennews/art.shtml?num=37982
>Код Wayland-бакеда отмечен как практически завершённый и готовый к реальному применениюура. всего 5 лет и оно почти готово. Всплывающие окна тоже готовы?
Вот, кстати, вопрос - а можно-ли как-то изменить в настойках, что-бы намертво прибитое всплывающее окно, например, проверка орфографии в Thunderbird, могло двигаться отдельно от родительского? А то непонятно, в каком месте ошибка. В КДЕ такое-же всплывающее окно Thunderbird хоть сдвинуть можно.
эм, а с альтом двигать не пробовали?
или это те окна, которые исчезают при любом движении курсором?
С альтом не пробовал, спасибо, недогадался. Это окно, которое не имеет никаких элементов оконного инерфейса - просто вылезает из верхнего края письма и прибито к нему (само письмо серое и неактивно).
> Вот, кстати, вопрос - а можно-ли как-то изменить в настойках, что-бы намертво
> прибитое всплывающее окно, например, проверка орфографии в Thunderbird, могло
> двигаться отдельно от родительского? А то непонятно, в каком месте ошибка. В КДЕ
> такое-же всплывающее окно Thunderbird хоть сдвинуть можно.Это зависит как написано. Может и никак.
Причем от того, как написано в оконном менеджере Mutter.
> Причем от того, как написано в оконном менеджере Mutter.Необязательно. Там, конечно, есть ещё слой абстракции, но не обязательно именно так.
Просто прибитые гвоздями диалоги — его фича.
Так эти "прибитые гвоздями диалоги" это не свойство GTK, а просто "недоделанный" компонент Gnom-a (Mutter)? Значит надежда еще есть, что что-то изменится в лучшую сторону?
> Так эти "прибитые гвоздями диалоги" это не свойство GTK, а просто "недоделанный"
> компонент Gnom-a (Mutter)? Значит надежда еще есть, что что-то изменится в
> лучшую сторону?Не "недоделанный компонент", а фича. Ну что для разработчиков GNOME фича, то для остальных...
В общем, фича того же рода, что отсутствие кнопок сворачивания и разворачивания.
> В общем, фича того же рода, что отсутствие кнопок сворачивания и разворачивания.В некоторых дистрибутивах их определенно нужно убрать, чтобы интеллектуально одаренные "разработчики" и "дизайнеры" не начали их гонять вправо-влево.
в этих дистрибутивах нет Mutter и полно нужных патчей, запиливающих выпиленное гномосеками
> Так эти "прибитые гвоздями диалоги" это не свойство GTK, а просто "недоделанный"
> компонент Gnom-a (Mutter)? Значит надежда еще есть, что что-то изменится в
> лучшую сторону?Это тонкость реализации Thunderbird.
Учитывая отношение мазилы к линуксу, сильно надеяться я бы не стал.
В Evolution та-же хрень, а это родное гномовское. Повторюсь: запускаешь то-же самое в КДЕ и всплывающее окно можно отодвинуть, а в родительском даже рзмер изменить.
>> Так эти "прибитые гвоздями диалоги" это не свойство GTK, а просто "недоделанный"
>> компонент Gnom-a (Mutter)? Значит надежда еще есть, что что-то изменится в
>> лучшую сторону?
> Это тонкость реализации Thunderbird.
> Учитывая отношение мазилы к линуксу, сильно надеяться я бы не стал.Специально запустил Thunderbird вместо SeaMonkey.
Окно создания сообщения, адресная книга, "О Thunderbird", свойства папки, создание фильтра, настройки.
Ни один не прибит. MATE 1.6, Compiz 0.8.8. ЧЯДНТ?
До этого долго использовал Громоптицу на Unity с, соответственно, Compiz 0.9.x. Тоже ничего прибитого не помню. А вот в Mutter не видел ни одного неприбитого диалога. Еще раз, ЧЯДНТ?
У меня openSUSE 12.3 (13.1 Beta1) Thunderbird 23, Gnome 3.9.4 c Gnome-Shell - я-ж и просил подсказать, где можно это прибитие убрать. Вы попробуйте у себя в Thunderbird создать новое письмо а потом запустить проверку орфографии - окно с проверкой встанет по-середине окна и сдвинуть его относитльно письма будет невозможно - отпишитесь пожалуйста.
>c Gnome-ShellА вот и разгадка. Шелл намертво прибит к Mutter, если что.
Проверил, окно проверки спокойно сдвигается. Что в Thunderbird, что в SeaMonkey. Как уже говорил, у меня Compiz.
С шеллом это скорее всего не отключить никак. Может есть какое расширение, попробуйте поискать.
А нафига они столько странных контролов прямо в core пихают а потом постоянно их потом объявляют deprecatedами?
Ибо чтобы что-то выпилить, надо сначала это запилить.
Потому, что libgtk с выходом третьего гнома нужно было переименовать в libgnome. На эту их особенность уже более чем дофига разработчиков жалуются. Они его пилят практически с учётом только Gnome Shell и прочего софта из стандартного набора GNOME.
> А нафига они столько странных контролов прямо в core пихаютВаша кутя с QML и прочими яваскриптами не сильно лучше.
>> А нафига они столько странных контролов прямо в core пихают
>Ваша кутя с QML и прочими яваскриптами не сильно лучше.Qt можно собрать без QML. И без QDBus. И вообще без гуйни. Попробуй gtk3 без dbus собери, давай.
GTK# 3.x - где??? Единственное что могло бы оправдать этот фреймворк на фоне Qt это актуальная его версия для Mono.
Да еще год назад почти сделали (даже banshee на него портировали), но потом забили. Для Mono есть WinForms, еще есть Vala с C#-подобным синтаксисом и нативным gtk3. В общем, видимо, gtk# 3 не нужен.
>GTK# 3.x - где???
> это актуальная его версия для Mono.Зачем вам эта микрософтовская буита с MZ exe, 100500 библ и без стандартного тулкита графики? На винде то winforms и wtf-wpf используется, так что кроссплатформенности не выйдет.
Если уж хочется чего-то типа C#, юзайте Vala. Там намного умнее сделали - транслируют потом в си и компилят обычным компилером. Так что не надо ни 100500 добавочных библ, ни демонов генерации кода в системе, ни кастомных форматов исполняемых файлов, ни какого там еще местечкового велосипедизма от MS. Программы на Vala выглядят нативно, не тормозят по ...цать секунд при старте, не требуют скачать для запуска полинтернета. Вот это правильный подход, я понимаю.
+ много.
Wayland пилят, а вот на XCB не переходят, хоть тот и по скорости лучше чем Xlib, и асинхронный... http://xcb.freedesktop.org/TODO/
Это чтобы костылей в системе побольше было. Повелось исорицски.
давно уже на xcb все, с разморозкой.
Такое ощущение, что им иже и GIMP стал до одного места.
Почему?
Почему-что сначала новая версия для Win появляется?
Они еще не успели прочитать проповеди интела о том, что линукс самое крутое решение для конечного пользователя.
> Ветка GTK+ 3.10 полностью обратно совместима...
> Прекращение поддержкиОбнаружены взаимоисключающие параграфы.
Просто здорово:
> Прекращение поддержки ... использования нескольких экранов на один дисплей, функций gdk_window_get_displayПричём в оригинале даже сказано почему:
> Support for multiple screens per display has been removed. This was only ever supported on X11, and is an exceedingly rare setup nowadays. The display-screen relation is now 1:1Просто здорово! Похоже, вменяемых тулкитов не остаётся в Linux.
Их сто лет как нет. Примерно с того момента, когда в тулкиты стали пихать то, что невозможно эффективно вывести средствами иксов, но не озаботились иксовой поддержкой, а тупо стали генерить битмапы.
А что подразумевается под "multiple screens per display"? Несколько мониторов, объединённых в единый десктоп?
> А что подразумевается под "multiple screens per display"? Несколько мониторов, объединённых
> в единый десктоп?Несколько мониторов на 1 X-сервер, скорее всего.
Это как раз обычная штука, совершенно не специальная для X-ов. В MacOSX/Windows то же самое.
Да. А они ее удалили.
У меня мысль закралась: а на самом ли деле Х11 так плох и сложен?