>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C

Jak uruchomić GUI w HTML w pięć minut bez Electrona i cierpienia

Wyobraź sobie sytuację: napisałeś świetne narzędzie w C++, Go lub Pythonie. Działa szybko, oblicza dokładnie, ale korzystanie z niego przez terminal jest wygodne tylko dla ciebie. Klient lub koledzy proszą o „normalny interfejs”. I wtedy zaczyna się ból głowy. Zainstalować Qt? Zbyt ciężkie i długie do nauczenia. Pisać w Electronie? Będziesz musiał ciągać setki megabajtów Chromiuma i Node.js dla kilku przycisków.

Ostatnio natknąłem się na WebUI. To mała biblioteka C, która elegancko rozwiązuje ten problem: zamienia dowolną zainstalowaną w systemie przeglądarkę w twój interfejs graficzny. Bez zbędnych zależności i ogromnych plików binarnych.

Logo

Na czym polega sztuczka

Główna idea WebUI polega na tym, że przeglądarka jest już gotowym, idealnie zoptymalizowanym silnikiem GUI. Każdy użytkownik już ją ma. Po co pakować kolejną instancję Chrome do swojej aplikacji, skoro możesz po prostu połączyć się z tą, która jest już zainstalowana?

W przeciwieństwie do Tauri, WebUI nie zmusza cię do grzebania w komponentach systemowego WebView (chociaż taka opcja też istnieje). Biblioteka po prostu uruchamia sesję przeglądarki w trybie aplikacji i organizuje szybki kanał komunikacji przez WebSocket.

Diagram

Co pod maską

Biblioteka waży tylko kilka kilobajtów. To pojedynczy plik nagłówkowy, który łatwo zintegrować z istniejącym projektem. Oto co zwróciło moją uwagę:

  • Wieloplatformowość. Działa na Windows, Linuksie i macOS równie przewidywalnie.
  • Wsparcie dla wszystkich popularnych przeglądarek. Chrome, Firefox, Edge, a nawet Yandex.Browser są wykrywane „w locie”.
  • Prywatne profile. Program nie zmiesza ciasteczek twojej aplikacji z osobistymi danymi użytkownika w przeglądarce.
  • Przenośność. Nie potrzebujesz ciężkich SDK do zbudowania projektu.

Jak to wygląda w kodzie

Spójrzmy na klasyczny „Hello World”. W C wygląda prawie jak skrypt, bez żadnej magii i zrzutów kodu:

#include "webui.h"

int main() {
    size_t window = webui_new_window();
    webui_show(window, "<html><script src=\"webui.js\"></script> Hello World! </html>");
    webui_wait();
    return 0;
}

A oto przykład w C++, gdzie wszystko jest opakowane w wygodne obiekty:

#include "webui.hpp"

int main() {
    webui::window my_window;
    my_window.show("<html><script src=\"webui.js\"></script> Привет из C++! </html>");
    webui::wait();
    return 0;
}

Zaledwie kilka linijek — a masz pełnowartościowe okno z zawartością HTML/CSS. Przy tym backend pozostaje w twoim ulubionym języku, czy to Python, Rust, Go, a nawet Pascal.

Porównanie kategorii wagowych

Twórcy podali świetną tabelę na GitHubie i jasno pokazuje ona, dlaczego WebUI to minimalizm. Jeśli Electron wymaga Chromiuma i Node.js w pakiecie, WebUI wymaga tylko samej przeglądarki w systemie. To oszczędza RAM i miejsce na dysku. Nawet nowoczesne rozwiązania WebView jak Tauri ciągną zależności jak GTK czy WebKitGTK na Linuksie, podczas gdy WebUI po prostu otwiera okno przeglądarki.

Komu i kiedy to się przyda

Oczywiście WebUI nie zastąpi złożonych profesjonalnych narzędzi tam, gdzie liczy się mikrosekundowa responsywność. Ale jest mnóstwo sytuacji, gdzie będzie ratunkiem.

Jeśli tworzysz małą wewnętrzną utilitkę dla firmy, WebUI pomoże ci rzucić interfejs w Bootstrapie lub Tailwindzie w jeden wieczór. Do prototypowania to praktycznie idealna opcja: skupiasz się na logice backendu, a frontend rysujesz jak zwykłą stronę.

Ciekawe — wsparcie SSL/TLS. Jeśli twoja aplikacja potrzebuje bezpieczeństwa, WebUI pozwala włączyć wsparcie OpenSSL prostą flagą podczas budowania.

Podsumowanie

WebUI to oddech świeżego powietrza dla zmęczonych ciężkimi frameworkami GUI. Projekt aktywnie się rozwija, ma już ponad 4000 gwiazdek na GitHubie i mnóstwo wrapperów do różnych języków programowania.

Warto wypróbować, jeśli:

  • Potrzebujesz szybkiego i ładnego GUI, ale nie masz czasu na naukę Qt.
  • Nie chcesz rozdymać rozmiaru pliku binarnego do setek megabajtów.
  • Twój frontend developer zna HTML/JS, a ty znasz programowanie systemowe.

Nie polecałbym tego do gier obciążających system, ale dla narzędzi systemowych, dashboardów i narzędzi konfiguracyjnych — to praktycznie idealny wybór. Możesz zacząć od oficjalnej dokumentacji na webui.me, wszystko jest tam ładnie wyłożone.

Powiązane projekty