Как го определяме? Всичко, което не е текстов интерфейс Дори wikipedia не успява да даде много по - добро определение
Първо малко не-GUI И преди графичните интерфейси сме комуникирали с компютрите Обикновенно с някакви текстови интерфейси Преди тях с перфокарти
Защо ги ползваме още? Изключително лесно се правят Сравнително стандартни Позволяват композиция lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | sort -n -u | tail
Защо ни е туй GUI? Все пак ние сме умни програмисти и командния ред дава повече свобода, нали? Не. Много задачи са много по - лесни с графичен интерфейс "Нормалните" хора по някаква причина не харесват командния ред Не ме питайте, и аз не знам защо
Как създаваме GUI-та? Все пак няма да се разминем да четем и пишем байтове от стандарните вход и изход Ще трябва нещо да ни помага
Прозорци, мишка, мениджъри на прозорци Имаме window manager-и, които управляват прозорците Предават им входа от външните устройства (мишки, клавиатури) Имат "widgets" за стандартни контроли - бутони, полета за текст, падащи менюта Пишем програмата си така, че да използва контролите на window manager-а
Като казахме window manager-и... ... всъщност искахме да кажем desktop manager-и но не винаги зависи кого питате и какъв os/device ползвате каша
Видове window manager-и explorer.exe, KDE, Gnome, xfce, Enlightenment, Metro, браузърите, Android... Още стотици
Ох, ама те са много!? Ако направя програмата си да работи с един, ще работи ли и с другите? Не Не се отчайвайте, има решение
Библитеки за графични интерфейси Използваме библиотека Тя се грижи за подробностите на всяко устройство и window manager
Има променлив успех Все още не сме се разбрали да използваме точно една библитека Има толкова, колкото и window manager-и Всички имат предимства и недостатъци
Windows Presentation Foundation Не знам какви предимства има, но работи само на Windows Дори не работи на windows phone, XBox
GTK C Широко разпространена (OS-wise) Колкото си искате widget-и Кода не е особено разделен от view-то
tk TCL, макар че всъщност C Стара и изпитана Доста дървена Някак не успява да изглежда идентично с останалите прозорци Макар, че обещават
go-qml github.com/go-qml/qml Побутват я от Ubuntu Работи и на телефони Кода е сравнително разделен от презентацията (MVC!)
glfw3 през go-gl github.com/go-gl/glfw3 Не е точно за това, но може да правите GUI-та с OpenGL Ако много искате да са хардуерно ускорени Някои им казват "игри" Библиотеката е изключително завършена