Сап, анон. Посоветуй простых и проверенных вариантов собрать несложный кросс-платформенный GUI - чтобы были кнопки, инпуты, списки и в идеале работа с sqlite. Хочу себе программку для хранения прочитанной манги написать, чтобы обложки тоже хранила.
Что уже смотрел: 1. Electron, Tauri и прочее фронтовое - самая простая приложенька весит пиздец (200мб +). Не то, что я сильно дрочу на оптимизации, но просто хочется чутка поменьше. Плюс на первом делал небольшой проект раньше так меня доебали потом варнинги, что пакеты устарели, вот тут жопная уязвимость, срочно обновите 50 пакетов и т.п. 2. C\C++ и Qt - пиздец какой-то в плане сборки и логики. Какие-то виджеты, надо всё как-то дружить и собирать отдельно между собой. Для кросс-платформы надо 100500 либ разных ставить, ещё и говорят, что на си-подобных языках легко на памяти взорваться - тоже оставил эту идею. 3. Delphi лол. Кросс-платформой вроде не пахнет, но писал калькулятор на винде для пробы и программирование мышкой, где таскаешь элементы оч зашло inb4: тупой дегенерат надо было писать всё руками как тру кодер 4. Java + JavaFX - настроить сборку джавы с нуля отдельный пиздец, а потом начинается, что FX не дружит с твоей версией, ставишь другую - какой-то другой пакет с этой не дружит уже и по кругу.
Неужели нет готового и простого решения для GUI? Хоть на Go или Rust даже, они ж типа популярные пиздец. Почему есть 100500 фреймворков для веба - от джанги до ангуляров всяких, где из коробки всё что нужно есть, а для GUI только хуй?
>>3242275 (OP) > 4. Java + JavaFX - настроить сборку джавы с нуля отдельный пиздец, а потом начинается, что FX не дружит с твоей версией, ставишь другую - какой-то другой пакет с этой не дружит уже и по кругу. Так попробуй Swing.
В целом, ебля будет везде. GUI потому и заменяют на веб, что всем надоело ебаться с подобными проблемами. Особенно много её будет на Go и Rust, где из гуя только биндинги к тем же Qt и GTK.
>>3242916 Нет, в лучшем случае можно упаковать в экзешник, который при запуске будет распаковывать JVM и жарники в TEMP и сразу их запускать, так делают install4j/launch4j. А GraalVM до сих пор не умеет Swing. С таким требованием остаются C++/Go/Rust, причём Qt и GTK сразу отпадают из-за лицензии с динамической линковкой. Нужно будет возиться с малоизвестными либами с багами, хуёвой документацией и негуглящимися проблемами, придётся порой заглядывать в исзодники.
>>3242275 (OP) Если надо сделать по-настоящему хороший ГУЙ, осознанно выбрасываешь из башки всю дурь о кросс-платформенности и делаешь ГУЙ как полагается на нативном API. Всё.
>>3243264 Ну допустим я сделаю это себе на винду. А потом у меня появится богатый друг на маке или хикка-друг на линуксе - я ведь не смогу с ними своей софтиной поделиться. Да и на нативном API - это как? Один фиг же на c/c++/go/rust биндинги прокидывать как с Qt и дрочиться с написанием CmakeFile какого-нибудь?
>>3243336 >А потом у меня появится... Так я тебе о том и говорю. Ты СНАЧАЛА осознай всю дурь ванаби-кросс-платформ-ГУИ. Избавься от неё. А только потом уже берись за программирование. >c/c++/go/rust Да хоть на Фортране. >биндинги прокидывать .. CmakeFile Тебя там крестовики покусали? Какие биндинги? Укажи нужные LIBы своему линкеру.
>>3243370 >Так я тебе о том и говорю. Ты СНАЧАЛА осознай всю дурь ванаби-кросс-платформ-ГУИ. Избавься от неё. А только потом уже берись за программирование. Ну или как вариант, можно сначала избавиться от всей дури типа с/с++/go/rust и писать на джейве и как-то сразу ничего не мешает сделать простой кроссплатформенный гуй. Вот ведь загадка.
>>3242283 > Cmake > просто Ну ты выдал, со смаком столько ебли нужно, пиздец. Гайдов нихуя нет, а те что есть написаны в стиле "вот так делай и вот так, нормально будет, сам так делаю, брат жив", ещё и этот уёбищный недоязык.
>>3242275 (OP) >Неужели нет готового и простого решения для GUI? Есть, по твоим запросам - это Java + Swing >Хоть на Go или Rust даже, они ж типа популярные пиздец. Тут нет ни готового ни тем более простого - Go - это ебля с велосипедами на костылях if err != nil, а Rust - это ебля с лайфтаймами на борроучекере.
Плюс компилируемые языки не дают кроссплатформенности - под каждую платформу нужно будет компилировать опять и опять, а если это не x86 а какой-то ARM на планшете - тебе пиздец, ни у одного компилируемого языка простого решения нет
Бери авалонию и не выебывайся. Самый простой способ. Литерли, пишешь XML оно тебе рисует твои контроллы, биндишь их к моделькам, яяя реактивность. Там еще и MVVM-тулкит поддерживается, так что тылирли пишешь магическое слово - ObservableProperty - и все само реактивится.
Скулайт твой - нугетом к шарпу тянется. Можешь дальше - даппером, ефом или чем угодно работать.
Авалония, хоть и говнина, но по сравнению с пиздецом что тут советуют - единственный ок вариант.
>>3242275 (OP) >4. Java + JavaFX - настроить сборку джавы с нуля отдельный пиздец, а потом начинается, что FX не дружит с твоей версией, ставишь другую - какой-то другой пакет с этой не дружит уже и по кругу. Ты просто даун, всё легчайше собирается.
>>3242275 (OP) >1. Electron, Tauri и прочее фронтовое - самая простая приложенька весит пиздец (200мб +). Ты Electron с Tauri, Wails и прочим не путай. Первый тянет с собой хром, вторые используют дефолтный браузер системы. И вот во втором случае я не знаю чем на 200мб раскормишь свое приложение.
Собственно, я бы как раз Tauri или Wails и выбрал бы в зависимости от языка предпочтений. Лучшее из двух миров, все богатство компонентных библиотек фронта плюс низкий вес приложения.
>>3243370 > осознай всю дурь ванаби-кросс-платформ-ГУИ. Избавься от неё Нет, хочу с ней. На работе задачу поставят - сделать кнопку другого цвета - тоже скажешь, что невозможно, у кнопки должен быть один цвет, один id, один класс? Если бы я хотел забить хер на кросс-платформу - я бы не тратил время анонов лол. Взял бы последний дельфи, накидал мышкой элементов и собрал exe-шник на 1-2мб, который идеально бы на любой винде работал. Срезать ключевое требование слишком изи.
>>3243437 Да ты угораешь что ли? И месяц-два только инпут реализовывать с нуля по-чёрточно и по-пиксельно?
>>3244164 Хм. А нугеты и шарпы это не про исключительно винду разве? На линухах, наверное, можно через всякие моно запустить или вайны, но выглядит как овердроч.
>>3245161 Это только кажется. По факту - непонятно с чего начать, как собирать, нет условного <code>qt init my-new-2ch</code> Вот этот анон >>3244581 правильно суть понял. Я не спорю, что есть аноны, которые могут и километровый конфиг make/cmake написать и запилить крутое GUI-шное приложение на чистом C распихав кросс-платформенные куски под if-ы, но мне нужно решение прям для совсем аутистов, чтобы просто накидать программку и она работала. На хлеб элитных программариев и какие-то корп. решения я тут не претендую лол.
>>3245584 О, спасибо за Wails. exe-шник базового примера 8мб весит и жрёт 5мб оперы. Более чем круто, явно не электрон. И собирается просто. Tauri смотрел, но там какой-то дроч был то ли со сборкой, то ли ещё с чем-то (он ещё и выкачивал несколько гигов чего-то, node_modules отдыхает), да и у раста стрёмный синтаксис - не так просто поправить "бэковскую" часть будет если что.
>>3243868 С симейком ебля ровно один раз, когда разбираешься что такое таргеты в какой очередности линковщик либ добавление хейдеров, что кажется крайне неинтуитивным на первый взгляд. Непонимание вызвано тем что симейк по привычке воспринимается этаким сборочным скриптом тогда как он автогенератор сборочных скриптов. Рекомендую создать простой qt проект с симейком, и копипастить то что он сгенерировал.
Вторая и третья вещи которые стоит в нем освоить это как работают субдинектории и как добавлять проект если он не симейк или симейк но написаный криворуким обмудком. Либо можно воспользоваться альтернативой в виде meason build, для больших проектов он даже предпочтительнее так как умеет генерировать в ninja вместо make.
>>3243452 Fltk это линуксовое DE. Тулкит называется tcl/tk и он вроде как раз на собственных скриптах, на плюсах сама библиотека только. Ну и это только гуй.
>>3243930 Так и джаваскрипт соснет с армпланшетом, надо адаптивный дизайн хуевертить под малый экран, порой это очень заебывает, но зато неплохо прокачивает, я теперь могу хоть на сишке с sdl2 эти жесты ебучие воспроизвести
>>3242275 (OP) >Electron, Tauri и прочее фронтовое - самая простая приложенька весит пиздец (200мб +) >Tauri Так таури не тащит хромиум с собой вроде как... что это ты там такое сделал что у тебя таури 200 мб весит?
>>3242275 (OP) Глупый вопрос, а почему бы не взять функции графической системы ОС и не поместить их в обёртки? Поясню. Мы же знаем, что нам точно нужно. Нам нужно: 1)Окно 2)Способность закрасить в окне пиксель 3)Клики мышью Собственно, мы можем сокрыть реализацию этих функций, отделив их в отдельный модуль. Мы можем сделать два варианта реализации этих функций: одну через XCB/Xlib: XCreateSimpleWindow(), например, с другой с помощью Winapi. И в том и в другом варианте, функция будет называться CrWindw(), и принимать одинаковые параметры, но реализация функций будет при помощи разных библиотек. Главная программа знать не знает, как реализована "CrWindw", она не использует никаких функций api конкретной системы, только функции стандартной библиотеки. И тогда можно будет сделать отдельный модуль, который будет отрисовывать кнопки, функциями draw pixel, например. И получается что программа будет кросплатформенной. Для е её портирования будет достаточно переписать только базовые функции, а всё остальное будет работать вне зависимости от их реализации. Хорошая идея, или глупость?
>>3242275 (OP) Java + Swing. Ничего лучше для кроссплатформенности в истинном ее понимании это обоссаное человечество не смогло сделать. Берешь джаву, ставишь NetBeans и с ходу можешь кидать мышкой списочки, формочки и все такое. Намазываешь сверху FlatLaf чтобы не выглядило как пиздец из 90-х.
>>3265230 Ты просто не понял его дзена. Это еще не боль, поверь.
>>3265199 Похоже ты либо студент вуза либо вкатун, в любом случае -- так работает любая кроссплатформенная библиотека для натива (гугли sdl2, raylib и иже с ними)
Прикол в том что в создании гуя то что ты описал необходимо, но не достаточно, нужно ещё управление графическими примитивами (что выливается в собственную модель), взаимодействие с разными системными эвентами (которые на разных системах разные), темы/рескейлы/перевод и много другого второстепенного важного говна. На то фреймворки и есть
>>3265626 Но на фреймворках много чего есть. И при использовании фреймворка получается зависимость от него. Неприятно когда программа тащит за собой +500 пакетов. Особенно когда это какая-то мелкая программа, которая и вовсе могла бы из командной строки работать, а она требует gtk, qt, motif, fltk, xwidgets, FOX toolkit и прочего. Всегда хочется чтобы программы были поменьше, и по-проще. Вот как dwm, ничего кроме xlib не требует. Но да, я ничего графического сам не делал. Просто спросить хотел.
>>3265731 Написано что "java". Оп знает жаву? Я нет.
>>3267916 Не разбираюсь, но я правильно понял что 2d графика никак напрямую с gui не связана? OpelGL ведь не содержит интерфейса для работы с видеопамятью и мышкой, он тупо нужен чтобы линии расчитывать всякие, а само окошко всегда либа твоего api. То есть все эти fltk, gtk работают под xorg, и все игорьи работают под xorg. Разница лишь в том, что gtk может линию вычислять на цпу, или вообще средствами xorg, а игра будет линию вычислять библиотеками opengl, где разрабы заморочились над наибольшей скоростью вычислений. Но все равно обе программы выводят все через xorg?
>>3268123 У библиотек работающих через xorg серверный рендеринг на GPU, у библиотек работающих через вайланд клиентский рендеринг на GPU. В любом случае все рендерится на видеоустройстве.
>>3268123 > Не разбираюсь, но я правильно понял что 2d графика никак напрямую с gui не связана? Одно построено поверх другого, но слои абстракции совершенно разные. Никто же не будет в JS-треде на вопрос о фреймворках рассказывать о C++ и Rust, на которых написаны браузеры. А здесь аноны почему-то не могут сложить 2 и 2.
>>3268134 Ну gpu же может и "вычислять" что нибудь. Типо как FPU вычисляет числа с плавающей точкой, также видюха может наверное линии всякие, буферы там быстро считать. То есть чтобы вычислять не обязательно видеопамять задействовать. Так xorg получается имеет доступ к видеопамяти, а opengl к вычислениям. Может быть opengl тоже имеет доступ к видеопамяти... но тут несостыковка. Window Manager работает то на голом xorg (у меня dwm конкретно). А игори работают под opengl. Если бы opengl сам что-то в видеопамять писал, то это бы нарушало работу x-servera наверное. При этом, ни что не мешает "просчитать" кадр и отправить его на отрисовку x-server'у.
>>3268137 >Одно построено поверх другого Нет, я то имел ввиду что буквально никак не связано. Что вот чтобы вычислить линию - не обязательно её рисовать. А чтобы что-то рисовать - не обязательно это вычислять (можно иметь заготовку например). Получается что гуи может вообще не содержать 2д графики, если все кнопки заранее нарисованы. Ведь если у тебя есть картинка кнопки, тебе нужно просто её в видеопамять запихнуть, и не нужно ничего "вычислять". А если у тебя 3d объект, то тебе нужно "вычислить" для начала проекии всех его составляющих и потом отрисовать. Или я не прав?
>>3265317 >>3253330 Видел одного такого долбоеба, который сделал приложение типа стартует локальный вебсервер + открывается страница в браузере. Залез к нему в гидхаб что бы написать какой он молодец, но разраб, либо его гомопартнер на багрепортах просто все потер и удалил с обоснованием что это не багрепорт.
Коротко, почему идея говно: потому что браузер заточен на работу в сети он кэширует страницы предполагая что они статичные, что бы этого не происходило веб-разработчики из темплейтов генерируют базовый скелет станицы на сервере (как обычно), позволяя браузеру их закешировать со всеми подключенными стилями и прочим, а функциональную/динамичную часть формируют скриптами на стороне клиента. Питоно/сишарпо-манька же думающая что она сейчас как нагенерирует html страниц на сервере в стиле офис360, только без вот этих ваших жс -ов или с минимальным их использованием. Начинает подключать всякие бутстрап/js библиотеки/стили со сторонних сайтов шоб кнопки были симпотичные.
В итоге вместо крутой вебморды получается унылый вебсайт из нулевых с постоянными прогрузками страниц, выкачивающих пару мегабайт скриптов/стилей откуда нибудь из сингапура через клаудфаер-фильтр. И ко всему этому еще принудительно запретив кэширование, что бы страница обнавлялась в браузере при каждом обновлении контента, в итоге он вынужден парсить html/css из исходников нонстопом, что приводит к ощущению что сервер не на локалхосте запущен, а на мадагаскаре.
>>3268545 >Коротко, почему идея говно >Начинает подключать всякие бутстрап/js библиотеки/стили со сторонних сайтов.. >выкачивающих пару мегабайт скриптов/стилей откуда нибудь из сингапура через клаудфаер-фильтр.. Ну тут судя из поста получается что не идея говно, а что автор подключает стили и скрипты из сторонних источников. Но он он же может и просто их интегрировать в страницу на своей стороне. Т.е. написать стили и жиес код (или готовый чужой скопировать), потом прогнать через минификатор и разместить прямо в html странице которая и будет выдаваться браузеру, и не придется ничего подключать из Сингапура.
>>3284619 PyQt же. >>3268545 >Начинает подключать всякие бутстрап/js библиотеки/стили со сторонних сайтов Сейчас отключил комп от сети и запустил свою приложеньку на Next.js с tailwind локально, всё нормально работает. Правда это с жсом получается, но tailwind и какой-нибудь htmx можно и для джанги скачать, а не тянуть с CDN.
>>3242275 (OP) >были кнопки, инпуты, списки и в идеале работа с sqlite Изначально sqlite для tcl был написан, и до сих пор очень хорошо с ним работает. Так что у tk тут большой плюс. Плюс можно все упаковать в один экзешник через freewrap. Минус - сам tk, который не очень хорошо выглядит без тем и допиливания, да и виджетов там не очень много.