LINUX.ORG.RU
ФорумTalks

Почему почти весь линукс десктоп на Gtk?

 , , ,


2

2

В свете недавно проведенного опроса оказалось распределении десктопов по тулкитам где-то такое

  • Qt - 25.9%
  • Gtk+ - 62.7%

Почему Qt так сливает через столько лет? Ведь аргумент о лицензии уже давно устарел. Почему не переделали все на Qt и компании, такие как Canonical, Red Hat, Mozilla, Google, Sun/Oracle пишут свой софт на Gtk+?

Прошу прояснить ситуацию

★★★★★

Последнее исправление: vertexua (всего исправлений: 4)
Ответ на: комментарий от AF

1)Пребилд несвежий

насколько несвежий? ты используешь какие-то фичи gtk 2.24? можно линковать свое приложение с либами gtk 2.16, например, а работать будет на 2.24 без проблем. никаких важных изменений для программиста в gtk2.24 относительно 2.16 нет.

В винде глиба из коробки нет, вот и приходится собирать.

glib входит в gtk runtime (и devel) сборки.

И да, если бы оно все собиралось, то что удобне - собрать десяток другой связанных библиотек или собрать один фреймворк?

под вендой удобнее всего использовать вижуалы и нативный тулкит. для внутренних тулзов замечательно подходит .net (c#). еще для интерфейсов есть WTL. тоже замечательно работает, и прочно занимает свою нишу. если вам надо что-то компилять, и оно не компиляется, или это вызывает какие-то серьезные проблемы — вы явно что-то делаете не так. например гтк+винда -> очевидное ненужно, и разработчиков которые так «портируют» свои приложения — надо по рукам бить.

waker ★★★★★
()
Ответ на: комментарий от AF

Ну и что для пользвателя изменилось, если бы винамп где-то у себя внутри использовал «не нативный» тулкит для отрисовки своего гламура?

запусти qmmp на винде, да посмотри - как раз наглядное пособие. правда, сравнить получится только с winamp classic skin. не забудь, что кроме «фронтальной морды» есть еще всякие окна настроек, менюшки, и т.п.

Про нативность он ничего не знает.

угу, зато результат ее отсутствия замечательно видит и чувствует. я, к примеру, на глаз отличаю ненативные приложения под вендой. иногда даже тулкит могу угадать (qt, delphi, gtk — легко).

waker ★★★★★
()
Ответ на: комментарий от fenris

GIMP уже упоминался. Firefox, Pidgin, Thunderbird как типичные примеры. Графических аналогов не на GTK у них нет. От себя могу добавить, например, GVim, Gajim, Zim, клиенты к MPD. Пристойный аналог на Qt есть только у Gajim — Psi.

Homura_Akemi
()
Ответ на: комментарий от Homura_Akemi

Возможности настройки примерно одинаковые

когда я последний раз пробовал gajim (около полутора лет назад) — возможностей настроек, по сравнению с psi+, в нем просто не было. даже цвета и размеры шрифтов в окне чатика настроить не смог.

waker ★★★★★
()
Ответ на: комментарий от waker

насколько несвежий? ты используешь какие-то фичи gtk 2.24?

Да я gtk как таковой уже лет 8 не использую. Чего там в версиях не знаю. Гстример ковырял вроде как в позапрошлом году. Хотелось что-то высокоуровневое, как директХ + кросплатформенное. При этом сработал стереотип, что брать глиб одной сборки и подсовывать его в гстример из другой - это не есть хорошо. Может в Линухе бинарная совместимость и на уровне, а в винде както стремно.

гтк+винда -> очевидное ненужно

Ну так согласен, но есть же пипл, который это утверждение не разделяет.

под вендой удобнее всего использовать вижуалы и нативный тулкит.

Мне пока Qt под виндами хватет, хотя да, надо бдеть, чтобы не влететь ту область, где без попоболи только С#, только виндовые библиотеки.

AF ★★★
()
Ответ на: комментарий от Homura_Akemi

Почему-то этим всем я не пользуюсь. Просто не нравится, а отнюдь не из-за тулкитофобии. К примеру Pidgin ещё в бытность Gaim навсегда отвратил меня своим меню в ростере. Какое к чёрту может быть меню в ростере?

fenris ★★★★★
()
Ответ на: комментарий от AF

Хотелось что-то высокоуровневое, как директХ + кросплатформенное

и нашелся gstreamer? чето я не прослеживаю параллелей. что между ними общего?

пипл, который это утверждение не разделяет.

программами этого пипла под вендой практически никто не пользуется.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от waker

около полутора лет назад

даже цвета и размеры шрифтов в окне чатика настроить не смог.

Как?! Как вы ухитрились не заметить вкладку «Style» в настройках? :) А там ещё и редактор параметров есть, для всего того, что не поместилось в GUI.

Homura_Akemi
()
Ответ на: комментарий от Homura_Akemi

Как?! Как вы ухитрились не заметить вкладку «Style» в настройках? :) А там ещё и редактор параметров есть, для всего того, что не поместилось в GUI.

я уже точно и не помню, что там за вкладки, но текст, который «лог предыдущей переписки», рисуется эдаким мелким шрифтом, светло-серым цветом на белом фоне, и поменять это я не смог. а так да, вкладка наверное была, и некоторые цвета поменять удавалось. просто не те что нужно.

waker ★★★★★
()
Ответ на: комментарий от vertexua

Да, в Opera не так давно нашли решето с размером отверстия больше собственного диаметра. На рутрекере пару недель висела предупреждающая плашка и время жизни печенек было сильно уменьшено.

Homura_Akemi
()
Ответ на: комментарий от waker

и нашелся gstreamer? чето я не прослеживаю параллелей. что между ними общего?

Зарапортавался, конечно DirectShow!

угу, зато результат ее отсутствия замечательно видит и чувствует. я, к примеру, на глаз отличаю ненативные приложения под вендой. иногда даже тулкит могу угадать (qt, delphi, gtk — легко).

Одно дело видеть разницу, а другое дело испытывать проблемы связанные с вырвиглазностью или проблемы с удобством.

AF ★★★
()
Ответ на: комментарий от waker

текст, который «лог предыдущей переписки», рисуется эдаким мелким шрифтом, светло-серым цветом на белом фоне, и поменять это я не смог

А, это только в местном «твикере». Можно и цвет сменить, и размер сделать обычным.

Homura_Akemi
()
Ответ на: комментарий от vertexua

Нет, не опера и не хром. Чтобы облегчить вам задачу исключу ещё несколько вариантов: w3m, links2, curl, wget, IE, Safari, FireFox.

fenris ★★★★★
()
Ответ на: комментарий от AF

Одно дело видеть разницу, а другое дело испытывать проблемы связанные с вырвиглазностью или проблемы с удобством.

единственное ненативное приложение, которое я постоянно/регулярно использую под виндой, это psi+, и таки да, я иногда испытываю в нем некоторые неудобства связанные с его ненативностью. но не парюсь, в силу привычки.

waker ★★★★★
()
Ответ на: комментарий от waker

кстати, советую libvlc, в таком случае.

Спасибо, посмотрю

единственное ненативное приложение, которое я постоянно/регулярно использую под виндой, это psi+, и таки да, я иногда испытываю в нем некоторые неудобства связанные с его ненативностью.

Имхо, это больше от приложения зависит. Я когда еще студией пользовался, то мучался от того, что дилоги маленькие и фиксед-сайз. И меня совершенно, не успокаивало, что они нативные.

AF ★★★
()
Последнее исправление: AF (всего исправлений: 1)
Ответ на: комментарий от fenris

Ну теперь все на своих местах, ок

vertexua ★★★★★
() автор топика
Ответ на: комментарий от waker

можно линковать свое приложение с либами gtk 2.16, например, а работать будет на 2.24 без проблем. никаких важных изменений для программиста в gtk2.24 относительно 2.16 нет.

Это без проблем называется?

kamre ★★★
()
Ответ на: комментарий от AF

Я когда еще студией пользовался то мучался от того, что дилоги маленькие и фиксед-сайз. И меня совершенно, не успокаивало, что они нативные.

нативный виндовый тулкит очень простой и примитивный, его ключевая фича - неизменность и обратная совместимость. в его задачи просто не входит делать резиновые layouts, и прочие фишки. это все делается дополнительными приблудами.

waker ★★★★★
()
Ответ на: комментарий от waker

все делается дополнительными приблудами

Да только дополнительные приблуды появились намного позже + сначала эти приблуды были не нативные. Так нафига такая «нативность», при которой тупо неудобно?

AF ★★★
()
Ответ на: комментарий от waker

В update 2.18 (который как раз был между 2.16 и 2.24, между которыми «никаких важных изменений для программиста» не было) было изменение:

GDK has been rewritten to use 'client-side windows'. This means that GDK maintains its own window hierarchy and only uses X windows where it is necessary or explicitly requested.

что привело к куче не работающих приложений.

kamre ★★★
()
Ответ на: комментарий от AF

Так нафига такая «нативность», при которой тупо неудобно?

ты еще под андроид, видимо, не пробовал разрабатывать гуй. вот это где неудобно. а виндовый тулкит удобен. просто мало что умеет. но его очень просто научить чему угодно. гораздо проще, чем добавить новый gtk или qt виджет.

waker ★★★★★
()
Ответ на: комментарий от kamre

что привело к куче не работающих приложений.

ну и что? это не поломка обратной совместимости. это случайный баг. починили же все уже. это постоянно во всех программах, библиотеках и тулкитах происходит.

waker ★★★★★
()
Ответ на: комментарий от waker

а виндовый тулкит удобен. просто мало что умеет.

Спасибо, плавали, знаем. ТОлько больше не хочеться.

его очень просто научить чему угодно.

Сомневаюсь, так как мало кто на нем диалоги с ресайзом осилил.

гораздо проще, чем добавить новый gtk или qt виджет.

Пробовал и то и другое и третье. На Qt таки быстрее.

ТОлько ты в сторону ушёл. Мы же начинали про пользователей и нативность гуя. Вот я и привел пример из жизни, когда гуй в доску нативен, но пользователь недоволен.

AF ★★★
()
Ответ на: комментарий от AF

Сомневаюсь, так как мало кто на нем диалоги с ресайзом осилил.

видимо, те кто не осилил — даже не пытались, т.к. не нужно было.

ТОлько ты в сторону ушёл. Мы же начинали про пользователей и нативность гуя. Вот я и привел пример из жизни, когда гуй в доску нативен, но пользователь недоволен.

ты привел пример когда не доволен разработчик, а не юзер.

waker ★★★★★
()
Ответ на: комментарий от AF

Если кто ленится писать биндинги, то почему это проблема Qt, а не биндингописателей?

Потому что у юникс шаред обджектс - C-интерфейс. C++ делает нейм манглинг (каждый конпелятор делает, как может), и деманглинг вот просто так взять, да сделать - нельзя. Соответственно, чтобы для C++ сделать портянку, нужно или вокруг каждого вызова API писать С-обёртку, либо сооружать лабуду для деманглинга.

mv ★★★★★
()
Ответ на: комментарий от waker

ты привел пример когда не доволен разработчик, а не юзер.

По отношению к студии я не разработчик, а юзер. Вот если бы я саму студию компилил, то другое дело.

AF ★★★
()
Ответ на: комментарий от mv

Соответственно, чтобы для C++ сделать портянку, нужно или вокруг каждого вызова API писать С-обёртку, либо сооружать лабуду для деманглинга.

Это проблемы биндингописателей, а не биндингопользователей.

AF ★★★
()
Ответ на: комментарий от AF

По отношению к студии я не разработчик, а юзер. Вот если бы я саму студию компилил, то другое дело.

я видимо тебя как-то неправильно понял. думал, ты ведешь речь о том, что в студии неудобно создавать диалоги для своих программ. а так да, в студии есть ряд неудобств. но это не мешает ей быть лучшей IDE в мире, т.к. в остальных все намноого хуже.

waker ★★★★★
()
Ответ на: комментарий от waker

я использую нативные тулкиты на каждой платформе, и избегаю кроссплатформенных. под виндой использую winapi, под линуксом gtk

Тебе удаётся для этого разделить код по канонам MVC? Или ты над нативными тулкитами написал некую промежуточную прослойку?

нативного тулкита под линукс не существует

Ну если winapi рассматривать в этом качестве, то и xlib вполне себе сойдёт за тулкит (немного утрирую, да).

порт для андроида сделал, т.к. на андроиде вообще с плеерами тухло.

О, наконец, я сообразил, какой программы мне не хватает на моей Мотороле. Скачаю, заценю.

hobbit ★★★★★
()
Ответ на: комментарий от fenris

Любитель развешивать ярлычки, навесь ещё парочку.

Как будто это твой оппонент, а не ты, начал гнать про «любителей обмазываться» вместо того, чтобы просто назвать свой дистрибутив и DE/WM (тут уже, правда, предполагали, что ты суровый консольщик, но это опять-таки всего лишь гипотеза).

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от waker

я видимо тебя как-то неправильно понял.

Походу да! В моем примере вместо студии можно было бы взять практически любое другое нативное приложение. Смысл в том, что нативный != удобный. Я бы с радостью поменял «нативность» на удобные для меня фичи.

AF ★★★
()
Ответ на: комментарий от hobbit

Тебе удаётся для этого разделить код по канонам MVC? Или ты над нативными тулкитами написал некую промежуточную прослойку?

ни то, ни другое (хотя, наверное, это как-то можно увязать с MVC, но я не фанат паттернов, и ими не руководствовался при дизайне). у движка есть API, в котором есть все необходимое, чтобы реализовать к нему гуй в виде плагина. все привязки к системным сервисам — тоже в плагинах. плагины могут в рантайме связываться друг с другом, и взаимодействовать. в движке нет привязки ни к каким тулкитам - он завязан только на libc по сути. поэтому гуй - хоть curses, хоть командная строка, хоть gtk, хоть андроидная жаба, хоть несколько одновременно на выбор (таким образом, можно выбирать между gtk2 и gtk3 без перекомпиляции) - было бы время и желание их все реализовать.

а вообще исходный пост я не писал применительно к 1 проекту. просто я под венду и линух разные вещи делаю. но в deadbeef вот так, да.

Ну если winapi рассматривать в этом качестве, то и xlib вполне себе сойдёт за тулкит (немного утрирую, да).

не сойдет. на виндовом тулките есть более-менее полный набор виджетов, темы оформления, и т.п.

xlib - это маааленький кусочек всего этого.

waker ★★★★★
()
Ответ на: комментарий от AF

Я бы с радостью поменял «нативность» на удобные для меня фичи.

ну я и не утверждаю, что нативность - это признак идеальности. есть дохрена и больше кривых нативных приложений. речь скорее об идеальном случае, типа как гугл хром — когда приложение очень качественное, оно от нативности может очень много выиграть.

waker ★★★★★
()
Ответ на: комментарий от mv

Соответственно, чтобы для C++ сделать портянку, нужно или вокруг каждого вызова API писать С-обёртку, либо сооружать лабуду для деманглинга.

разве в gtk интроспекция так работает? я чето думал, у них как раз лабуда в коде, из которой биндинги генерятся. особенно если учесть, что там gobject.

waker ★★★★★
()
Ответ на: комментарий от waker

речь скорее об идеальном случае, типа как гугл хром.

Идеальный - это ключевое слов! А что делать мне, программеру с небольшой компании, когда приходит менеджер и говорит - хочу программу, чтобы делала фичи А, В и работала в Винде и на маке. Я конечно могу ему расписать, сколько это займет времени, если писать гуй отдельно для winapi и cocoa. Но если делать 1 гуй на Qt, то времени я потрачу меньше. И менеджер таки выбирает второй вариант, без нативного гуя.

AF ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.