TGUI – кроссплатформенная библиотека виджетов и простой дизайнер GUI, написанные на языке C++ (стандарт C++14) и распространяемые по лицензии Zlib.
Библиотека поддерживает несколько бэкендов ввода-вывода: SFML, SDL2, SDL3, OpenGL 3, OpenGL ES 2 и raylib.
Немного раскрою эту сложную тему на конкретном и реальном примере. В этот раз рассказ будет про современный С++ и сетевой фреймворк Pistache, а портировать будем с Linux на FreeBSD.
Понимаю что надоело, но портирование Linux -> FreeBSD это самый простой вариант из возможных, масштаб других вариантов (например с Windows на Linux) таков что просто не влезет в формат одной статьи.
На скриншоте работающий вебсервис на C++ на веб-фреймворке, портированном с Linux. И все это с поддержкой Swagger!
Для модераторов: если снова не понравится картинка на фоне (я ее называю скромно «Welcome to FreeBSD!») - сообщите комментом и я заменю, не надо сносить в Talks как в прошлый раз.
P.S. Это мой последний материал на ЛОРе, больше не будет. Политика таки вмешалась.
Год назад я начал разработку окружения рабочего стола на C++/Qt. Пока есть только панель и control center.
Целью разработки было легковесное окружение рабочего стола, которое в тоже время имеет широкие возможности кастомизации. Нужна была середина между легковесностью (как у того же LXDE) и кастомизацией, потому что в наиболее распространенных окружениях рабочего стола эти два понятия не сочетаются. В таких случаях обычно используется i3, но для его конфигурации нужно много времени, поэтому важным фактором также было user-friendly UI.
Среди доступных на текущий момент апплетов:
меню приложений;
список окон;
launcher’ы (иконки приложений на панели);
индикатор батареи;
переключатель рабочих столов;
управление воспроизведением (MPRIS);
регулятор громкости;
индикатор раскладки клавиатуры (флаг или ISO-код);
Панелей пока максимально может быть 2 (1 сверху и 1 снизу). Их можно делать нерастянутыми на всю ширину экрана и сдвигать. Из возможностей кастомизации внешнего вида: смена иконок, шрифта, акцента (любой из RGB), темы (их можно писать самому, лежат по пути /usr/share/plainDE/styles) и т.д. Список того, что можно изменить будет непрерывно пополняться. Для упрощения создания тем оформления можно будет их создавать из GUI.
Разработка активно ведется, поэтому есть много планов на будущее: вертикальные панели, написание своего оконного менеджера, поддержка Wayland, файловый менеджер, переход на QML, взаимодействие с сообществом (локализация, апплеты, artwork, …).
Потребление ресурсов в основном зависит от оконного менеджера. Сама панель потребляет не более 20-30 МБ ОЗУ. Дефолтный конфиг (Openbox + plainPanel) без композитного менеджера и pcmanfm –desktop потребляет в среднем 150-160 МБ ОЗУ на виртуальной машине. На нетбуке с 1 ГБ ОЗУ на дистрибутиве Arch Linux 32 результат ~120 МБ ОЗУ.
Обычно ничего не выкладываю в галерею, т.к. в ней есть и интереснее картинки чем могу предложить. Впрочем одна тёплая и ламповая на моём счету уже имеется
Прокоментить тут особо нечего, двумониторная среда, слева обычно открыт браузер с документаций, справа код (изучаю Си++ сам по себе, так и делая некоторые вставки в один достотчно хороший проект, в который попал благодаря «Лору» (темка была для тех кто хочет попрактиковаться языку, не думал что такие темки работают, а работают))
а так обычно со скрипом ssd (из-за иногда бывающей нехватки физической памяти и необходимости поработать с pagefile.sys), система стабильно держит Фряху для бложика в котором конспектирую изученное, и для дебиана.
Обоим виртуалкам выделены все 6 ядер CPU, под фряху выделено 640 мегабайт памяти, это более чем хватает для скоромного сервера, который никто, кроме гуглабота и меня не посещает), под дебиан ровно 2000 мегабайт - остальные выделены венде. В винде может работать DC++ и Firefox и все это дело живет на 4 гигибайтах, иногда даже игрушки идут как в дебиане так и хосте.
В дебиане на 2000 мегабайтах даже работает Clion (правда выжирает почти все что угодно, но мне он очень нравится, особенно тем что он хорошо понимает шаблоны, хотя жаль что его разработчики выбрали путь быстрой разработки (работает на джаве), выбрали бы они что другое, возможно в моей виртуалке это IDE чувствовало себя намного уютнее)
А да почему винда. Были времена что на моём компьютере вообще не стояло ничего от MS, но однажды я крепко увлекся фотографией, а нативных аналогов продуктам Adobe для Linux не существует. Только не пишите здесь про the Gimp или Wine :)
Вдохновляюсь цитатками и медленно продвигаюсь по пути linux kernel developer.
Давно не мог привести рабочее место в порядок, что-то не нравилось, но сейчас вроде как все устоялось и я решился выложить.
Поставил недавно себе FreeBSD 10.1 в качестве десктопа.
Систему запускаю так:
1) login in tty
2) sudo kldload nvidia
3) startx Благодаря xaoc решил проблему с модулем ядра nvidia.
Логин-менеджер xdm, т.к. slim почему-то не желает грузить сессию.
Очень порадовал новый пакетный менеджер. Примерно 80% софта доступно из бинарников.
Скорость установки пакетов просто бешеная.
Корневой раздел и хомяк в UFS.
Удивительно, но русский язык уже был сразу после установки базовой системы, так что мне не пришлось ничего
настраивать.
Просто перенес конфиги openbox'а.
Сразу поставил блоб на нвидию 400й серии, встало без проблем, правда
каждый раз приходится грузить модуль ядра, хотя прописал его в /boot/loader.conf
- подскажите, может кто-нибудь сталкивался?
Параллельно с этим изучаю С++ и clang - компилятор намного функциональнее gcc,
в случае ошибок выводит больше полезной информации.
Также есть фронтенд gtkmm для C++
Glade в связке с Gtk::Builder очень хорошо экономит время и строчки кода, не нужно описывать все виджеты на языке С++.
Просто создается файл Glade, а потом загружается с помощью Gtk::Builder. Удобно.
В качестве оболочки стоит мой любимый Openbox.
Есть весь необходимый мне набор программ - к примеру deadbeef, virtualbox.
В качестве развлечений люблю поиграть в OpenArena, supertux, Everlasting summer.
Steam завелся без проблем.
Из замеченных минусов
1)Флеш в браузере работает не на всех сайтах.
2)Нужно вручную грузить модуль nvidia.
3) ручное монтирование носителей
Пишу вот редактор уровней, Tiled мне оказалось мало, решил сделать что-то более сложное, чтобы можно было расставлять объекты как угодно, возможность создавать тайловые карты, менять топологию объектов (например чтобы сделать красивый блоб), назначать классы, менять ограничивающие полигоны, настраивать анимацию, ну и базовые деформации (хотя возможно их и не будет), так же хотелось сделать обрезание объектов, если слишком большой, чтобы не рисовать 2 разные текстуры, можно просто обрезать топологию.
Да дизайн похож на блендеровский, и не с проста, я ориентировался на бледеровский интерфейс, иконки тоже от туда взяты, со временем конечно придется их перерисовать. Так же позаимствовал панельку сверху тоже из идею нового UI для блендера. К сожалению толком своего ничего придумать не могу, а программа нужна, ну и интересно было ее поделать и реализовать интерфейс полностью на OpenGL.
Сейчас программа активно используется мною, для создани игры на Haxe, написал простой фреймворк для загрузки карт созданных в этом редакторе для него, в будущем будет еще и C++. Для меня программа оказалась очень даже полезной )
Добрый вечер, ЛОР. У меня для вас тот же KDE4, тот же Gentoo. Все же постарался сделать получше, чем предыдущий мой скриншот. Чем я на данный момент занимаюсь? Потихоньку учу С++ по книге Г. Шилдта, в то же время переписываясь в Jabber и слушая приятную музыку.
Итак, что же я сделал с прошлого своего скриншота:
Перенес панель влево, аки Unity. Просто потому что так удобнее и места меньше занимает. Трей и часы переехали в правый угол и появляются по наведению мыши.
Jabber-клиент заменил на Psi+, так как мультипротокольность мне не нужна. Оказался шустрее и удобнее.
Одна крылатая единорожка заменена на другую. (Haters gonna hate!) К сожалению, более высшего разрешения не нашлось, приходится смотреть на растянутый JPEG.
Поменял скин у Steam подходящий под цветовую гамму.
Clementine пришел на смену DeaDBeeF. Только потому что нужен был быстрый поиск. На деле же еще пригодилась функция музыкальной коллекции, добавлять в общий плейлист стало удобнее.
Использую Kate в качестве редактора. Да, никаких заумных vim и прочее, просто очень лень запоминать клавиатурные аккорды, привыкать.
PT Sans Caption в качестве основного шрифта.
Два остальных скриншота:
Steam, Clementine. И PNG оригинальной для любителей.
И все это работает под KDE 4.10.0 и Linux 3.10.9-geek. А послезавтра мне уже в школу, 10-ый класс. =)
Пишу ненужно в ненужно под ненужно онтопик. Попалась както на хабропомойке статья про кубик Рубика на WebGL, решил написать сам под обычный OpenGL. ООП головного мозга заставило для такой простой вещи родить 25 классов, что меня малек раздражает.
Лет 10 назад в качестве самообразования написал я велосипед - менеджер иконок xtdesktop. Иконок было 3 типа - program, mountpoint, plugin, к каждой иконке про правому клику было меню с доп.командами, иконки были таскательны и использовали XShape для красоты.
Несмотря на массу недостатков, проект зажил. Сам я его использовал очень немного, но был пакет для него в Debian и Sisyphus; DSL и Buffalo использовали его по-умолчанию. В Buffalo даже вносили свои изменения. но не делились исходниками. В галерее на LOR есть скрин и несколько упоминаний про xtdesktop, на distrowatch есть пара скриншотов. Постепенно интерес и необходимость пропали, и про программу я забыл.
И на днях через третьи руки доходит до меня письмо - паренек пишет, мол такое дело, использую регулярно, в т.ч. вместо коньков, но с последними иксами перестало работать. Оказывается, кто-то где-то это еще использует :) Скриншот с ноута.
Сансевьера - многолетнее корневищное вечнозеленое травянистое растение с прямостоячими суккулентными ланцетовидными листьями. Цветет обычно весной, в апреле - мае, маленькими белыми цветками, собранными в кистевидные соцветия. По ночам от них исходит достаточно сильный аромат ванили.
Оно живёт у меня на столе уже много лет, любит читать, в основном словари и техническую литературу, хотя чаще ленится; хорошо уживается с ноутом и основным компом, любит слушать и играть классическую музыку, хотя кроме Бетховена и Вагнера, больше ничего не умеет.
На скрине будущая ITE(?) - оболочка для организации/создания/поиска/прогона тестов для кода на С и С++, с дополнительной «фишкой» в виде документирования кода навроде doxygen. Сейчас прикручиваю поддержку googletest, если кто что использует другое - просьба написать название, т.к. «движок» тестов будет опциональным.
П.С. пишется на моем же нескучном тулките, который никакого отношения к FX не имеет, он просто открыт в качестве примера
Нудная предыстория: понадобилась мне библиотека для отрисовки SVG для cairo, на что сразу нагуглилась librsvg, но она тянула «всего-лишь» libxml2, glib и т.п. за собой, что означало не только таскание массы «груза» со собой, но и трах со сборкой всего этого на разных платформах, нагугленные далее QSvg и wxSVG также оптимизма не внушали. В результате за вечер была написана большая часть кода для отрисовки этого самого SVG, который:
а) вместился в 5 относительно небольших файлов( самый большой - «кастрированный» rapid_xml.hpp );
б) не требует ничего абсолютно, кроме стандартного STL и cairo( что логично );
в) на удивление работает быстрее хрома даже в дебажном «виде» ( видимо из-за быстрого rapid_xml ), хотя может у меня неправильный хром - FF большие файлы отрисовывает очень быстро;
г) умеет показывать большие файлы, которые отказывается понимать гномовский eog, который вообще плохо работает со сложными изображениями.
д) более-менее( не полностью ) понимает css.
Собс-но на скриншоте:
- AWN;
- XFWM;
- NetBeans;
- результат работы велосипеда.
П.С. сам код выложу через несколько дней как public domain, после приведения его в порядок и дописывания недостающего.
Недавно спрашивал «Что посоветуете для изучения C/C++ » http://www.linux.org.ru/forum/development/4859754/
Из всего предложенного выбрал «Липпман СPP для начинающих», сейчас активно изучаю.
Про скрин: ибо изучение идёт в основном ночью, решил подобрать подходящею тему, готовой не нашел, и решил пилить сам.
Рамки окон:Tactile; Значки G-Flat. Цвета затачивал сам.
P.S. Ещё раз спасибо тем, кто указал мне правильную дорогу в изучении C++))))
Gnome-terminal, в нем screen, а в нем vim, учу malloc/realloc
Пока вроде удобно, планирую еще допилить немного и будет совсем оно.
З.Ы. Удивило отсутствие проблем при установке/работе ubuntu на моем ноуте - hp pavillion dv6-1330er, на http://Corebug.Net (мой блог) описаны некоторые траблы, которые были при попытке установить другие дистры.