Allright, în seara asta în sfârșit am reușit să închei un task care mi l-am propus acum mai mult timp, și de care am reușit să mă ocup doar printre picături. O să scriu repede ce am făcut, și mai jos o să dau și detaliile plicticoase.
Nu știu dacă am mai scris despre Gnome Do pe aici. Gnome Do este un progrămel (el își spune launcher) prin care poți realiza o serie de acțiuni din doar câteva taste. Este destul de general, așa că să vă dau un exemplu: scrii Run, apoi apești <Tab>, apoi scrii numele unui program, și apeși <Enter> și programul este rulat. Asta e cea mai basic și intuitivă chestie. Poți să scrii însă și Reboot, Power Off, cu rezultatul pe care îl presupuneți.
Și de aici, lucrurile devin interesante: poți să scrii numele unei formații (evident, ale cărei cântece le ai pe calculator :P), și îți arată albumele, și de acolo poți ajunge la cântecele efective, și le poți da play. Poți să scrii un ID de messenger, și îți deschide o fereastră de messenger cu persoana respectivă. Poți scrie o adresă de stradă și îți deschide Google Maps. Mai mult decât atât, învață care opțiuni le selectezi mai frecvent pentru care obiecte, în așa fel încât opțiunile relevante să iasă întotdeauna în față :).
Toate acțiunile astea pot fi definite de oricine, atâta vreme cât înțelege un pic de programare. Gnome Do e scris în Mono, și, evident, există doar pentru Linux (și presupun că doar pentru … Gnome ;). Acum ceva vreme, am reușit să scriu un mic plugin care se folosea (țărănește) de un script python pentru a trimtie un SMS la un număr dat. Următorul obiectiv a fost să nu mai dau numărul de mână (că unde mai era utilitatea dacă trebuia să introduc numărul), ci să-l iau din baza de date cu contacte a Evolution (aka Outlook pentru Linux). Well, aici am întâmpinat o problemă, pentru că evolution-sharp, pachetul care permite accesul din mono la datele din Evolution era stricat, și nici acum, dupa 4 luni, nu s-a ocupat nimeni de el.
Așa că am scris un mic server în Python, care se conectează la evolution cu python-evolution și citește contactele. Apoi, am modificat pluginul oficial de Evolution și i-am schimbat doar modalitatea prin care își ia datele de la sursa de date (metoda UpdateItems), pentru a le lua, pe DBus, de la serverul Python. A mai trebuit să forțez o interfață pe obiectul de tip telefon, pentru a potrivi tipurile de date, și în final am reușit :D
Acum pot scrie numele unui contact, apoi să aleg telefonul lui mobil din listă, și apoi să aleg SMS din lista de acțiuni și să introduc SMS-ul. Un Enter și whooosh, Gnome-Do apelează scriptul, scriptul deschide conexiunea Bluetooth la telefon (prin gammu), și trimite SMS-ul. Complicat? Nu prea, check this out:
Pentru un update, mă gândesc să nu trebuiască să mai trebuiască să alegi mobilul, ci acțiunea cu SMS să fie valabilă doar pentru contactele cu telefonul mobil completat. But this also works ;)
Dacă este cineva interesat de povestea asta, mă găsiți pe email sau pe messenger. Sau pe SMS :P