That’s my blog… Life and Linux

Introducing Locally Integrated Menus to Unity 7

Hey Ubuntu folks¹!

This is the Unity desktop team and during the last months we focused, as always, in polishing and improving the user experience of our default window manager for the next upcoming LTS!
In fact, while in the last months most of the Canonical commitment to Ubuntu has been directed to the Touch form factors, the “classic” desktop has not been forgotten at all and, we’re still working hard on it, to give our users the best experience and to approach smoothly to the convergence vision that we’ll get with Unity 8.

Part of this work have been the spread improvements, the HighDPI support, the new decorations and tons of various bugs fixed; however with this important milestone coming we also wanted to finally propose a solution to fix the main UX bug we have in Unity since its very first release: the menus being hard to find or too far from their parent window.

In fact, having the applications menus in the top panel really worked very well in small screens but now, especially with HiDPI monitors getting more and more popular, the top panel could be really too far from the actual window location… The solution, that the UX designer JohnLea has defined are the Locally Integrated Menus (LIM).

Ubuntu Unity Integrated Menus

People might recall that also at 12.04 times we implemented a first prototype of LIM, however due to some very-hard-to-fix issues we had with core applications, we decided not to try to propose an half-working solution for an LTS.

So, almost 2 years have passed, but our intent to get this feature done was still strong, although this time we wanted to implement LIMs in the proper way, as Ubuntu quality standards deserve. In addition designers defined a new and improved revision of their work, proposing to show the menus inside the decorations themselves in horizontal mode (until we’ve room for them); so, continuing to save the precious vertical space and keeping the nice look of menu-less windows unchanged.

To be honest, we’d loved to land this way before, but the amount of technical work needed has not to be underestimated.
Being more precise, one of the blockers we had in 12.04 was our dependency on the legacy compiz decor plugin + gtk-window-decorator, that has worked “OK” in the last years but – a part from using deprecated technologies (gtk2 in primis) – it really would have made this concept impossible to realize.

So, the first step has been moving away from the old gtk2-based decorations and writing brand new decorations supporting Gtk3 CSS theming² inside Unity itself; this has been an huge work (including writing a brand-new widget system for handling compiz textures in a more natural way), but it gave us great benefits in the end such as much faster windows resizing , improved look, support for dynamic scaling (for both HighDPI and accessibility reasons).

Once we had this new layout where to place any widget quite easily, all took shape in few lines, we only had to handle the fact that now menus opens on mouse button release and only if the user doesn’t keep it pressed for too long³, while a slightly trickier part was to handle the case where we had a too small window to show menus in horizontal mode, and where we had to fallback to a dropdown menu.

LIM’s dropdown, shown if we have not enough space

As this is an LTS release, before setting this menu mode as the default we wanted to have some community feedback. For now, you have to enable it using the Unity Control Center Appearance panel, and let us know what you think!

Unity Control Center with Application Menu settings

Tweakers might be happy to know that there are also other settings you can use to adjust your LIM experience under the com.canonical.Unity.IntegratedMenus gsettings schema, that allows to define the pressure and movements thresholds, and to also enable double-click over the menus (to maximize the window, if you’re fast enough); However, while you can adjust the settings for now, we encourage to use the defaults as they are based on wide user testing and are coherent with our design guidelines.

After some words, I guess it’s time to see them in action, and upgrade your Ubuntu Trusty machine to enjoy them!


Youtube Video

[1] Hello Planet, I should also probably say! 😉
[2] We really encourage and support anyone who wants to update its theme to support Unity
[3] Maximum press time is configurable, but default values are based on design user testing

Welcome back on blog.3v1n0.net….

Me, behind UbuntuSalve gente! Oh, no ora si parla “inglese” via….

Hi there!
This is the first blog post here after soooo many years… Something like almost 7 years, really?!?

Oh, yes… You all thought that I was dead as a blogger I guess, and well mostly I am as my time for writing really went below 0 during this time, and then… Well as always I wanted to keep this thing updated following “my rules” of keeping the timeline in sync with actual events, but this failed everytime… And so, yeah here we are after so much time!

The main reason why I become unresponsive during these years was that instead of writing text, I moved to write code (for real) and I found it much more fun and useful for the people around me.

More importantly during this period my commitment with the Free Software  increased and I  joined or submitted patches to various projects such as Compiz, Openmoko, EFL (Enlightment Foundation Libraries), GNOME, and… Well how you might think from the pic, Ubuntu.

Ubuntu took a very important role in my life since about the last months of 2010, when Unity, was proposed as the new default desktop environment, I liked a lot the idea, but it was still a new baby with many missing features and bugs and so I decided to jump on the boat to give my help to make Unity the best desktop.
This involvement lead me to join to my first, beloved, UDS in Budapest where I met for the first time a lot of “ubuntu-dev-heroes”. Once back I continued contributing a lot, as I enjoyed so much that experience that I wanted to make it something more than just an hobby…
And well, long story short, I’m now working at Canonical for more than 2 years as a Software Engineer for the Unity Shell! I love this job and I think we’re doing great things, trying to make the Ubuntu vision happen in every form factor.

You might be able to read more about this experience on my Google+ page or looking at my opensource contributions at ohloh.

PS: But… Is still anyone reading? 🙂

Beryl 0.1 out! È uscito il nuovo “gioiellino”!

Beryl and EmeraldEccoci finalmente!
A pochi giorni dalla notizia della divisione di Compiz in un branch “ufficiale” (figlio dello splendido lavoro di David Reveman presso Novell) e nel suo fork Beryl (letteralmente, pietra preziosa) e dopo alcuni giorni di attesa in cui si sono susseguiti dissensi ed assensi (come nel mio caso) di vario genere, siamo finalmente pronti a vedere in una prima release di testing di questo «nuovo» Composite Manager figlio della comunità!

È vero che era già possibile testare Beryl compilandoci il tutto dai sorgenti presenti nell’svn, ma questa si tratta della prima redistribuzione in pacchetti (per “noi” .deb) di beryl! Una comodità non da poco, sempre dovuta sopratutto al mitico QuinnStorm.
Notate che questa pre-release è nata soprattutto con lo scopo di testing e bug-fixing, quindi per eventuali problemi vi prego di consultare il forum di Beryl e magari di riportare dei nuovi ticket nel Bug Trac (in entrambi i casi non serve neanche la regisrazione!). Dalle mie prime prove, mi pare però una suite già abbastanza solida!

Riguardo le novità rispetto all’ultima versione di Compiz-quinn, al di là del cambio di nome e di branding, non è stato fornito ancora un vero e proprio changelog; tuttavia dal primo numero della nuova “rubrica” settimanale «This Week In Beryl» del Beryl Blog, è possibile evincere alcune modifiche principali:

  • Sono stati aggiunti nuovi plugin quali blurfx (al posto di blur e reflections) e splash (mostra uno splash all’avvio di Beryl).
  • Aggiunte nuove funzionalità a plug-in esistenti quali animation, move, bench e blurfx.
  • Risolti molti memory leak, con conseguente migioramento di prestazioni.
  • Forte bug-fixing di revisione.
  • Aggiunto il supporto alla localizzazione dei software di gestione (tradotti in parte)

 
Ma passiamo al dunque, per installare beryl in Ubuntu Dapper (ed Edgy), è necessario avere i seguenti repository nel vostro /etc/apt/sources.list (non sono cambiati):

deb http://www.beerorkid.com/compiz dapper main
deb-src http://www.beerorkid.com/compiz dapper main
## edgy repository
#deb http://www.beerorkid.com/compiz edgy main
#deb-src http://www.beerorkid.com/compiz edgy main

Per le altre distribuzioni, controllate questo wiki

Quindi devono essere installati alcuni nuovi pacchetti che eventualmente sostituiranno i vecchi, quindi:

sudo apt-get install xserver-xgl libgl1-mesa libglitz-glx1 beryl beryl-core beryl-manager beryl-plugins beryl-plugins-data beryl-settings emerald emerald-themes

Come detto, col cambio di nominativi sono cambiati anche i software della suite con cui eravamo abituati a gestiore compiz… Ed ecco quindi una sorta di “tavola di conversione”:

Strumento Nome in Compiz Nome in Beryl
Gestore Finestre
compiz beryl
Decoratore di Finestre cgwd
gnome-window-decorator
emerald
Centro Impostazioni Gestore Finestre
csm
beryl-settings
Gestore/Editor di temi delle decorazioni
gcompizthemer
emerald-theme-manager
Strumento di Management e Controllo compiz-manager beryl-manager
Script di avvio compiz-start start-beryl-manager
Dump delle impostazioni N/D beryl-settings-dump

Una volta installato il tutto, sotto ambiente XGL (o AiGLX per i più “fortunati”), provvediamo al primo lancio di beryl, per farlo basta un semplice comando:

killall compiz-manager & beryl-manager& 

Così facendo, verrà chiuso il vecchio compiz-manager (se in esecuzione), e quindi verrà avviato il nuovo manager che provvederà all’eventuale chiusura di compiz e all’avvio di beryl. Niente di più facile! 🙂

Beryl 0.1 Splash Screen
(Lo splash screen di beryl al primo avvio)

Il nuovo beryl è configurato inizialmente in modo piuttosto sobrio a differenza dello “sborone” compiz, potrete comunque usare il beryl-settings per reimpostarvelo a piacimento.
Considerando però che le impostazioni del vecchio csm sono praticamente le solite del beryl-settings, è possibile ripristinare la vostra “vecchia” configurazione con un semplice «colpo di bash»:

cp ~/.beryl/settings ~/.beryl/settings.bak & cp ~/.compiz/csm_settings ~/.beryl/settings

L'immagine “http://static.flickr.com/93/256041923_c4a39a996e_o.png” non può essere visualizzata poiché contiene degli errori.Quindi, riavviate beryl facendo tasto destro sul "diamantino" rosso nella vostra traybar e quindi su "Ricarica Gestore di Finestre". Dovrebbe funzionare alla perfezione, iniziate quindi a divertirvi con beryl-settings, qualora però questo piccolo tip non funzionasse potete ripristinare il file ~/.beryl/settings.bak (o cancellate direttamente ~/.beryl/settings.bak).

Detto questo, non resta che aggiornare i vostri script di avvio automatico di “compiz” (sostituendo qualsiasi cosa con beryl-manager) e mettere lo sticker a lato nel vostro PC! 😆

CIAO! ^_^

Ballando “sopra” le… XGL!

Le XGL (con Compiz) alla prova con TVAnts (wine) ed i Mondiali di CalcioOrmai da tempo sto usando a tempo pieno le favolose XGL con il composite manager Compiz sul mio portatile (a lato potete vedere come lo usavo ai tempi dei mondiali per vedere le partite con TV-Ants + mplayer =D) e ne sono veramente felice… Magari nei prossimi giorni [appena uscito dalla morsa degli esami] farò anche un HowTo per spiegare come ho fatto, anche se se ne trovano davvero tanti, comunque attualmente il progetto si sta evolvendo davvero tanto e di giorno in giorno nella comunità che fa capo a Compiz.net, si trovano sempre molte novità che vanno da nuove feature a miglioramenti per il look & feel a nuove opzioni che permettono di personabilizzare al massimo il vostro PC…
Consiglio veramente a tutti quelli che sappiano almeno un po’ l’inglese di partecipare perché facendo parte di un gruppo simile sentirete la vera e propria “forza dell’open-source” che si muove… In cui da un giorno all’altro per una semplice proposta o intuizione nata per caso vedete venir fuori una nuova feature che magari contribuite a migliorare insieme ad altre centinaia di persone che “lavorano” solo per piacere di farlo… Insomma, provate per credere! ^_^

Ma andiamo al dunque, che come al solito ho speso anche troppo tempo nell’introdurmi… 🙂
Il titolo parla di "Ballare “sopra” le XGL" :o?! Beh, sì… Seppur sia leggermente improprio perché XGL di fatto è solo il server grafico, mentre è Compiz che gestisce tutti gli effetti penso che quanto avrò da dirvi renderà l’idea. Qualche giorno fa, infatti, nel sopracitato Compiz.net, qualcuno ha tirato fuori un idea che anche io avevo personalmente tentato di realizzare (ma senza grosso successo) precedentemente, ossia [attenzione questa è una cosa per soli pazzi informatici, ndr :lol:]: usare XGL+Compiz per far «ballare» letteralmente il nostro desktop a ritmo di musica! 😀
Al di là del fatto che sarebbe possibile farlo per lo meno parzialmente anche programmando (grazie al supporto per dbus è possibile chiamare un effetto con un comando specifico ;)), qui l’intenzione era quello di farlo manualmente con mouse e tastiera… 😛

Eh, beh… Ieri sera un ragazzo americano (USA) con nick Kroneage ci ha stupito tutti con un primo video con le XGL “ballerine”! Ha tenuto a sottolinare che l’ha fatto senza "finezze", ma come primo risultato non è per niente male… Che altro dire, se non lasciarvi al filmato?!?! Divertitevi!


(Eventualmente, potete scaricare una versione in .wmv -_- da qui)

Per ulteriori nuovi video [in cui ci ha promesso una maggiore qualità audio-video], controllate la pagina di YouTube di Kroneage! 😉

CIAO! :bye:

PS: La musica usata nel video è solo strumentale prodotta da un gruppo europeo chiamato Machinae Supremacy e presa dal gioco Last Ninja per C64; Il tutto è stato realizzato con un PC di quasi 4 anni fa che monta un P4 a 2.4GHz con 512Mb di RAM e scheda video Nvidia 6600 GT con qualche leggera modifica più recente. Qui, trovate il post originale.


If you’ve loved this video, please Digg it Digg post!!

Se ti è piaciuto questo video, per favore, Digg it Digg post!!

Server Ubuntu sotto attacco (?). Un Tip per avere indietro i Repository

DDosDa alcune ore alcuni server di ubuntu hanno subito un “down” risultando per tanto inaccessibili.
La causa di ciò non è del tutto nota ad ora e non si può stabilire ancora il tempo necessario per ripristinare la situazione, è stato comunque smentito un attacco DDOS (Denial of Service). Potrete trovare aggiornamenti sulla situazione su Digg, e PythonTech.
La lista dei siti attualmente indisponibili include i seguenti domini:

http://*.ubuntu.com
http://ubuntuforums.org
http://www.canonical.com/
http://blackcatnetworks.co.uk/

La cosa sicuramente più noiosa per l’utente Ubuntu è il fatto che i principali repository sono irraggiungibili, e risulta quindi difficile aggiornare o installare del software sulla propria macchina. Ad ogni modo, per fortuna esite una soluzione a questo; basta infatti modificare il famoso sources.list inserendo dei mirror validi ai repository ufficiali. Per farlo velocemente, sfruttando la bash incollate il seguente codice nel vostro terminale e date l’ok.

sudo cp "/etc/apt/sources.list" "/etc/apt/sources.list.down-bak"; cat "/etc/apt/sources.list.down-bak" | sed "s/http:\/\/.*\.ubuntu\.com/http:\/\/de\.archive\.ubuntu\.com/g" > "/tmp/downsources.list"; sudo mv "/tmp/downsources.list" "/etc/apt/sources.list"

I vostri mirror saranno aggiornati con dei mirror tedeschi funzionanti, e a detta di molto, più performanti.

Per ripristinare la vecchia lista, quando tornerà tutto a posto, basta fare

sudo mv "/etc/apt/sources.list.down-bak" "/etc/apt/sources.list"

Che dire… Speriamo che reggano! 😀

 


EDIT (24/07/2006 – ore 00:20):
Sono appena tornato a casa, ed i server di ubuntu sono tornati “su” :), ad ogni modo visto che i server tedeschi mi paiono più performanti potete tenere anche quelli, altrimenti usate pure il comando di ripristino!
Non sono riuscito ancora a trovare una vera e propria spiegazione ufficiale, comunque se ne sta parlando, e un amminstratore di UbuntuForums, ha riferito che si è trattato di una “semplice” interruzione di corrente ai server londinesi di Canonical. Evidentemente gli UPS non sono bastati… 🙁

Treviño’s Ubuntu / Kubuntu Dapper Repository List

Repository UbuntuAll’uscita della versione di k-ubuntu Dapper Drake, il 1° giugno, da buon utente sono corso ad aggiornare… Fulcro dell’aggiornamento è stato la modifica/aggiornamento della lista dei repository di software (sources.list), in cui i "packagers" indicizzano e archiviano tutti i programmi belli e compilati per la nostra distro preferita.

Come avrete visto, in questo blog era presente da tempo una lista di indirizzi dei repository piuttosto nutrita contenente numerosi “depositi” di terze parti contenenti software extra altrimenti non fornito dagli sviluppatori di ubuntu, kubuntu, edubuntu e xubuntu (tanto per non lasciarne nessuna fuori :D) per la versione 5.10 aka Breezy…
Ecco, come era da aspettarsi :P, ho aggiornato la sources.list dei repository con una piuttosto completa per la nuova versione 6.06 – Dapper Drake.

Il link è sempre lo stesso: Lista Repository (sources.list) per Ubuntu / Kubuntu Dapper; fatene buon uso e ricapitate ogni tanto che cercherò di aggiornare la lista non appena trovo qualcosa di nuovo!

Per gli utenti che sono ancora rimasti a breezy, ho trasferito la vecchia lista in un post con vecchia data; non manterrò più aggiorata quella lista, comunque se ci saranno segnalazioni postate pure nel suddetto post.

CIAO! ^_^


EDIT (19/06/2006): Un altro successo per questo blog…!
La DistroWatch Weekly di oggi (noto articolo settimanale per raccontare che succede nel mondo delle distribuzioni), infatti, ha dedicato la parte relativa ad Ubuntu alla suddetta lista di repository!!

Ubuntu DistroWatch Weekly
(click per ingrandire | vai all’articolo)

EDIT (22/06/2006): I’ve been dugg!
L’articolo su Digg dedicato a questa lista sorgenti è stato messo in homepage…! Ancora visibilità per il blog; grazie a tutti ancora! ^_^

Lista Repository (sources.list) per Ubuntu / Kubuntu Dapper [Archivio]

Questa è la mia lista dei repository per i pacchetti debian usati da Ubuntu e Kubuntu Dapper Drake (6.06). Vi consiglio di utilizzarla o quantomeno di controllare che anche la vostra contenga i medesimi indirizzi.
Qualora vogliate ancora, ho mantenuto la vecchia versione per [k]ubuntu Breezy.

Per mettere tale lista ci sono vari modi, il più semplice è quello di aprire Adept Manager o Synaptic e da lì (menù file) aggiungere una per una le righe qui indicate, altrimenti, basta editare il file /etc/apt/sources.list con il vostro editor preferito, dovrete però avere permessi da root.

Su KDE basta dare il comando kdesu -c kate /etc/apt/sources.list (o da konsole sudo kate /etc/apt/sources.list).
Su Gnome, invece, dovrete dare da shell il comando sudo gedit /etc/apt/sources.list

Read the rest of this entry »

I mondiali su Linux: Germany 2006, il taccuino dell’era digitale

Germany 2006 - manageriale dei mondiali di calcioRieccomi a parlare dei mondiali, anche se adesso siamo a “bocce ferme” per quanto riguarda la nostra nazionale, noi informatici-sportivi non possiamo certo restare in attesa… 🙂
Durante il periodo pre-mondiale sono nati infatti moltissimi strumenti che permettono di seguire l’evento anche con i PC per avere un controllo totale di quanto avviene oltr’alpe…

Tra i vari strumenti che sono usciti, oltre alla simpatica estensione per Firefox, FootieFox (che mostra nel nostro browser preferito il risultato delle partite in corso) tra più interessanti devo segnalare l’italianissimo, tranne nel nome, Germany 2006 un piccolo tool scritto da Pier Luigi Covarelli e disponibile per tutte le piattaforme più usate (Linux, Mac, Mac OS X e Windows), che ci consente di seguire totalmente i mondiali dalle fasi iniziali fino alla finale visualizzando giorno dopo giorno gironi ed eliminatorie permettendoci di aggiornare i risultati dalla rete (se non vogliamo inserirli a mano), e generando statistiche che possono essere esportate sotto forma di testo o html.

Ma siccome uno screenshot è sempre meglio di 100 parole, eccovi qualche immagine 😛

germany-2006.groups.png germany-2006.table.png germany-2006.stats.png
(click sulle immagini per ingrandire)

Per l’installazione in Linux viene distribuito un archivio che contiene direttamente il binario per architetture x86 che basta essere scompattato e avviato (sempre che abbiate le librerie necessarie) in qualunque distro linux.

Per gli utenti Ubuntu, spero conosciate già la mia “passione” per i pacchetti…. Quindi ho preparato per voi un bel pacchetto deb che contiene tutto il necessario per eseguire questo software, togliendovi così i problemi per eventuali dipendenze:

Una volta installati i pacchetti, basterà avviare il comando germany-2006 oppure il menù corrispondente (dovrebbe venire sotto Utility – Accessori). Per la disinstallazione completa è necessario fare il "purge" visto che altrimenti viene mantenuta la configurazione.

Per gli altri sistemi operativi, fate riferimento alla home page di Germany2006.

Ciao alla prossima, che ho ancora qualcosa da dirvi sui campionati del mondo ^_^

PS: Il post di ieri sulla partita Italia – Ghana è stato scelto dalla redazione di LiberoBlog, ed è stato aggiunto in home page come articolo sulla partita della nazionale…! Potete leggere l’articolo ed i centinaia di commenti su libero blog, facendo click su questo link. Grazie a tutti!

PPS: Avete visto che ho messo le XGL + compiz?!? 😛

Un’aMule tira l’altro. Eccoci alla 2.1.3!

aMule logoPare che agli sviluppatori di aMule, sia venuta voglia di rilasciare versioni stabili a raffica, infatti è stata appena resa pubblica la nuova versione di aMule, la 2.1.3.
Anche quiesta, come le due precedenti della serie 2.1.x, è solo una release di bugfix, non vi sono pertanto nuove caratteristiche. Le correzioni (piuttosto poche in termini numerici) si sono orientate più che altro sul lato della localizzazione. È stato inoltre creato (ma non aggiunto alla release) uno script (in perl) per importare i files temporanei di MlDonkey. Se siete interessati ai vari fix, vi rimando al changelog completo.

Per la compilazione tramite sorgenti fate riferimento al post sulla versione 2.1.0, mentre per gli utenti ubuntu-dapper (e ovviamente Kubuntu :)), ho preparato due nuovi pacchetti, uno “standard”, mentre l’altro compilato con ottimizzazioni per i processori «686». Li potete scaricare dai link sottostante:

Le stringhe di compilazione che ho usato (al di là delle ottimizzazioni) abilitano le seguenti feature:

./configure –prefix=/usr –mandir=\${prefix}/share/man –infodir=\${prefix}/share/info –enable-optimize –enable-amule-daemon –enable-amulecmd –enable-webserver –enable-amule-gui –enable-wxcas –enable-alc

Ho inoltre cambiato, anche in questa versione, l’icona di aMule usata nei menù e nel desktop perché, quella originale ha una risoluzione bassa e, almeno a me, appare come "deforme" 🙂

Siccome, dal 1° giugno sono passato a Dapper, non so se questo pacchetto possa funzionare sulla distribuzione «breezy», provate e fatemi sapere…! Se servisse posso modificare il pacchetto.

Bye! :bye:

Rilasciato aMule 2.1.2!

aMule logoPiccola news stasera: è uscita la nuova versione di aMule, la 2.1.2.
Anche quiesta, come dicono gli sviluppatori, è solo una release di bugfix, non è stato aggiunto il supporto per i files più grandi di 4GB (che invece è presente nelle «versioni CVS» che però ho testato e che risultano *molto* instabili), ma adesso si può definire una versione «STABILE» seppur devo ammettere che già la 2.1.1 era al top come stabilità. Se siete interessati ai vari fix, vi rimando al changelog completo.

Per la compilazione tramite sorgenti fate riferimento al post sulla versione 2.1.0, mentre per gli utenti ubuntu-breezy (e ovviamente Kubuntu :)), ho preparato due nuovi pacchetti, uno “standard”, mentre l’altro compilato con ottimizzazioni per i processori «686». Li potete scaricare dai link sottostante:

Le stringhe di compilazione che ho usato (al di là delle ottimizzazioni) abilitano le seguenti feature:

./configure –prefix=/usr –mandir=\${prefix}/share/man –infodir=\${prefix}/share/info –enable-optimize –enable-amule-daemon –enable-amulecmd –enable-webserver –enable-amule-gui –enable-wxcas –enable-alc

Ho inoltre cambiato l’icona di aMule usata nei menù e nel desktop perché, quella originale ha una risoluzione bassa e, almeno a me, appare come "deforme" 🙂

Voglio sottolineare, che nonostante sia ormai consigliato passare alla versione «Dapper» di ubuntu, ormai attendo la data fatidica del 1° giugno prima di avviare il mio apt-get dist-upgrade :P.
Se comunque usate questa versione, fate riferimento a questo thread del forum ufficiale.

CIAO! 😛 

« Previous Entries