Ce ma enerveaza la Gnome – episodul 23578298
Disclaimer (?) - folosesc Gnome ca desktop environment de vreo 8-9 luni si Linux ca desktop principal de vreo 6 ani, iar chestiile de mai jos sunt niste ranturi la care sunt convins ca gresesc pe alocuri, dar nu chiar peste tot.
Cred ca de la inceputurile experientelor mele cu Linux (prin '99) Gnome era laudat ca "noul val" care o sa schimbe semnificativ in bine experienta de lucru cu desktopul Linux si a fost de nenumarate ori varful de lance a prezicerilor din seria "anul asta va fi anul Linux Desktop". Cam la fiecare versiune l-am incercat si n-am fost in stare sa-l apreciez asa ca m-am intors la alte DE-uri. In general KDE, dar am avut si un episod semnificativ cu XFCE. Intrebat de cunoscuti ce anume nu sufar la Gnome, n-am avut argumente prea solide in afara de ceva gen "au o atitudine aiurea vizavi de useri ca mine". Sunt celebre diversele flame-uri anti-Gnome si anti-HIG (imi vine in minte in special un thread Torvalds vs. Gnome team), dar nu tin sa pun paie pe focul asta.
Anul trecut cand mi-am reinstalat laptopul am zis sa fac un efort deosebit sa ma obisnuiesc cu Gnome, ca tot e DE-ul default in Debian, o fi ceva mai lustruit si integrarea intre diversele componente o fi ceva mai atenta decat in KDE (si intr-adevar asa e). Am facut un efort deosebit sa dresez gnome-terminal sa aibe aceleasi keybindings ca konsole (dar imi lipsesc 2 features: notificarea la activity/silence si asezarea "circulara" a taburilor - adica sa treci de la ultimul la primul direct), mi-am asezat panelurile intr-un mod care sa nu ma streseze asa tare ca cel implicit, m-am reobisnuit cu gaim aka. pidgin (putin fortat si de colegii care folosesc gaim-encryption, care are alte bube in cap de care nu vreau sa ma leg in postul asta), am trecut la loc pe firefox in loc de konqueror (si desi mananca mai multa memorie, randeaza ceva mai bine varii site-uri facute de ... iar intru in discutii colaterale). Nu m-am intors de la kmail la evolution, am trecut la mutt si-s mult mai fericit. Ce mai, pe scurt am reusit sa stabilesc o relatie relativ linistita cu diversele componente din Gnome. De curand, insa, am avut meciuri cu mai multe astfel de subsisteme, si imi vin in minte trei in mod special.
1. network manager . mi s-a parut ok in special cand foloseam des wirelessul din diverse locatii. Ai o iconita, click pe ea, ai dropdown cu retelele detectate, click pe una, bagi parola, la revedere, data viitoare cand o vede o prefera automat. Iti arata daca ai link sau nu, iti arata puterea semnalului, fenomenal. Apar insa niste probleme. In primul rand, nu mi se pare normal ca networkingul sa depinda de sesiunea mea. Masina mea e un server Linux, are server de mail, tunele VPN, tot felul de chestii care merg si cand nu-s logat. In al doilea rand, nu am gasit in NM cum sa fac hookuri in stilul lui ifupdown. Eu in /etc/network/interfaces am o gramada de profile de retea care seteaza pe langa ip sau netmask si domeniile resolverului, si tunelele care trebuie pornite sau oprite, si routari mai aparte, si setari de postfix, si fetchmail, ma gandesc sa pun si proxy. In hookurile lui NM aparent nici n-ai cum sa stii la ce retea s-a conectat, ca sa te poti folosi de asta. Si in al treilea rand daca retelele in care te dai n-au DHCP, esti un om mort. Dupa un numar considerabil de injuraturi la adresa cui l-a gandit, l-am oprit si m-am multumit sa pornesc wirelessul manual atunci cand e cazul. Reteaua wired se configureaza "magic" cu ifplugd si guessnet. Imi lipseste appletul de gnome care imi zicea profilul pe care sunt, dar cand l-am prins ca manca toti ciclii disponibili de procesor fara sa faca ab-so-lut ni-mic, l-am dat jos fara regrete.
2. Urmatorul la coltul rusinii e gnome-power-manager. Nu-s eu mare specialist in ACPI, dar am constatat ca in Debian am niste hookuri superdestepte de ACPI care ruleaza scriptane la diverse evenimente. Cele care ma interesau in mod special erau cele de initiere a sleep/hibernate/wakeup. Ca g-p-m era pus ca actiune la toate in cazul in care e prezent e una, ca actiunile pe care le face sunt relativ restranse vizavi de ce vreau eu e alta, iar ca e stupid e cu totul altceva. Pe langa mesaje din cand in cand la wakeup cum ca "your computer failed to suspend, it must be broken" sau conceptul pe care l-am atins ca daca nu esti logat, pierzi functionaitati de sistem, chestia care ma scoate din sarite e ca insista sa "manance" evenimentele cauzate apasarii tastei "stand by", si ca nu stie sa stea in pana mea deoparte si doar sa-mi afiseze cata baterie am. Am trecut intre timp la hibernate ca sleep/hibernate/wakeup manager si trimit computerul la culcare prin inchiderea capacului, care (inca) nu-i apartine lui Gnome.
3. Ultimul pe aceasta lista e DBus, un mecanism care nu e chiar de-al lui Gnome, dar are apucaturi similare. Pe langa utilizarea bus-ului system de catre g-p-m sau hal+udev sau alte minunatii de-astea, eu il folosesc in principal pentru notificari cu libnotify. Notificarile pe care le primesc cel mai frecvent sunt mesaje noi in gmail (listele rlug si e-mailuri personale) si highlighturi pe IRC. Pentru prima functie folosesc mail-notification (care merge decent, desi mi-as dori sa aiba anumite optiuni in plus), pentru cea de-a doua folosesc un plugin de Irssi scris in Perl care injecteaza via DBus mesajele in libnotify. Scriptul pe care il gasisem avea o abordare cam subreda, rula cu cmd() binarul notify-send, ceea ce pe langa dependinta aiurea, dadea si gherle cand mesajul continea cate un apostrof. Cu ocazia convertirii lui la Net::DBus (Desktop::Notification tuseste si la exemplul din manual, crapa pe undeva prin strafundurile lui Net::DBus si inca nu stiu suficient Perl sa fac debugging), am invatat si eu ceva mai multe de cum apelezi metode de obiecte inregistrate la DBus. Chestia care m-a calcat cel mai tare pe nervi e ca aparent nu exista o metoda universala de aflat ce metode sau parametri suporta n obiect. Exista o recomandare pentru implementarea metodei Introspect() care sa trimita un XML cu caracteristicile obiectului, dar nu e obligatorie. Evident, obiectul Notification nu implementeaza metoda asta, a trebuit sa sap prin specificatia de la galago-project.org sa aflu ce-mi trebuie.
Nu stiu, ori m-am invatat eu prost cu softuri care respecta principiul minimei surprize, ori am requesturi exagerate, ori nu ma pricep sa gasesc formulele magice care sa-mi rezolve diverse impasuri, dar sunt putin dezamagit de atitudinea mai relaxata pe care o intalnesc in conceperea aplicatiilor de desktop relativ la principii batranesti de Unix gen "fa un lucru, dar fa-l bine".
In cazul in care vreun specialist in Gnome vede aceste plangeri la zid si poate sa-mi arate lumina, il rog sa-mi dea un mail. Explicatia clasica "in Windows/OSX/KDE e mai rau" sau cea si mai clasica "utilizatorii nu vor asta" nu ma intereseaza, mi-e plin podul. EU sunt utilizatorul si daca ma deranjeaza atat de tare niste probleme relativ marunte e din cauza ca sunt suficient de acord cu restul intregului sa ma frustreze aceste mici incompatibilitati filozofice.
Flame off (for now). Raman la Gnome, ma mai lupt cu el.