Mi servirebbe una specie di wrapper per alcune app e servizi #web che già ci sono (maggior parte che hosto io), ma ai quali voglio accesso più organizzato (e magari più ottimizzato per l'uso a tastiera) delle tremila schede fissate su Firefox desktop, che ormai sono talmente tante da coprire tutta la barra... 😱️
Purtroppo, ho scoperto di essere così tanto al mio limite di star rivalutando pure Android!!! Lì, nonostante le rogne, è tanto facile fare una app nativa che mostra una banale #webview e funziona e basta... Ma su Linux #desktop....AIUTO!!!!! È da letteralmente 3 o 4 giorni che sto girando mia testa attorno a 'sta storia, ma nulla! 😖️
Il problema è che voglio un eseguibile 100% statico e autocontenuto, di cui ho la certezza possa fungere su qualunque sistema abbia il kernel #Linux e un server X11/Wayland, senza pensare ad altro; come un EXE su Windows, o qualunque cavolo di APK su Android... voglio che la app funzioni ovunque e per sempre senza ricompilare, e senza dipendere dalla distro. 🙄️
Ho provato quasi tutte le opzioni webview consigliate su https://github.com/sudhakar3697/awesome-electron-alternatives, ed è così tragico... una buona manciata sono esplicitamente abbandonate, altre non sono mantenute e quindi comunque non installano/compilano, ma comunque tutte si basano solo su: CEF (Chromium Embedded), QtWebView (che è CEF), Electron (che è CEF), e WebKit2GTK. 👯️
Questa roba dell'eseguibile autocontenuto (con libc statica) l'avevo fatta per una app PyGame (FrameNX), ma pare sia letteralmente impossibile far funzionare qualsiasi di questi motori web in questo modo qua. Il problema è che hanno così tante dipendenze, così fragili, che è un attimo che fai questa pacchettizzazione forzata statica strana, e subito non girano più. 🚱️
Ho provato sia cefpython3, (che comunque è abbandonato alla versione 66 di Chromium, preistoria), che pywebview (che si appoggia a Qt o GTK), ma PyInstaller li spacca; manco il tempo del passaggio con staticx
. Ho provato poi a compilare un programma C++ per QtWebView, ma staticx non gestisce un sacco di file di runtime di Qt che non sono librerie native. E usando direttamente la roba CEF, senza Qt di mezzo, fa comunque errori irrisolvibili. È la fin. 😩️
Credevo quasi di aver fatto grazie a WebKit2GTK (ad esempio tramite "webview"), con una procedura hackerina (copiando libwebkit2gtk-4.0.so.37
nella cartella di lavoro da /lib/x86_64-linux-gnu/
, e con un hex editor sostituendo poi le occorrenze di questo percorso con ./
al suo interno, poi copiando dalla stessa cartella i file WebKitNetworkProcess
e WebKitWebProcess
, e applicando staticx
sia a questi due che al mio programma C dopo aver settato LD_LIBRARY_PATH=.
)... però il programma, su un altro sistema, apre solo una finestra bianca e dice "Could not create default EGL display: EGL_BAD_PARAMETER. Aborting…
" 😭️
Un disastro!!! Forse si può buildare #WebKit2GTK da sorgente per disattivare proprio tutta la roba di OpenGL che da errore, visto che non freca, ma mancano un sacco di dipendenze, non compila un cazzo... Mi sa che faccio la cringiata, e pacchettizzo un intero file system + binario chroot/proot in un solo eseguibile, alla faccia delle #librerie... ☠️