# Cinnamon (interfaccia grafica)

Cinnamon è un ambiente desktop nato come fork di GNOME Shell, cuore dell'ambiente desktop GNOME 3, con lo scopo di fornire agli utenti della distribuzione Linux Mint un'esperienza utente più simile a quella del collaudato GNOME 2 pur utilizzando la tecnologia della innovativa versione 3. Per il suo aspetto tradizionale Cinnamon è considerata come ideale ambiente desktop per i principianti.
È stato creato da Clement Lefebvre, all'interno dello sviluppo di Linux Mint, ed è diventato l'ambiente grafico predefinito della distribuzione a partire dalla versione 13 insieme a MATE, fork di GNOME 2.XX.
Con Cinnamon è proseguita la consuetudine da parte del team di sviluppatori di Linux Mint di intitolare i progetti software con nomi che si riferiscono a erbe e spezie. Dopo la menta della distribuzione derivata da Ubuntu, è stato utilizzato il nome inglese della cannella (cinnamon) per il nuovo ambiente grafico.

## Storia

Con l'introduzione della versione 3 di GNOME, dotata di una innovativa interfaccia utente basata sul componente noto come GNOME Shell, gli sviluppatori della distribuzione Ubuntu decisero di non utilizzare tale componente, ma di svilupparne uno nuovo basato sul compositing window manager Compiz. Crearono così Unity, che divenne l'interfaccia grafica predefinita di Ubuntu a partire dalla versione 11.04 (dopo essere stata sperimentata per i netbook nella versione precedente).
La distribuzione Linux Mint era nata come derivata di Ubuntu allo scopo di avere un'esperienza utente, a detta dei suoi creatori, più "elegante e confortevole" e di facile utilizzo. Con l'uscita di Ubuntu corredata da Unity, gli sviluppatori di Linux Mint decisero di non seguire la distribuzione della Canonical ma rimasero provvisoriamente ancorati al collaudato desktop environment GNOME 2. Nel novembre 2011 fu annunciata Linux Mint 12 "Lisa", basata su Ubuntu 11.10 "Oneiric Ocelot", ma che non conteneva Unity, bensì una versione pesantemente personalizzata di GNOME Shell. Per ottenere gli scopi che si era prefisso, il team di Linux Mint sviluppò un set di estensioni basato su GNOME 3 e denominato MGSE (Mint Gnome Shell Extensions) che rendevano l'aspetto grafico del sistema operativo più simile alla vecchia interfaccia di GNOME 2 e a quella più tradizionale di Windows (con un pannello inferiore, un menu simile a quello di Windows XP, ecc.). Inoltre Linux Mint 12 era stata dotata della possibilità di essere utilizzata con MATE, un fork di GNOME 2, che avrebbe permesso agli utenti di utilizzare un desktop del tutto analogo a quello delle precedenti versioni della distribuzione.
La difficoltà di mantenere aggiornate le estensioni MGSE ha portato gli sviluppatori di Linux Mint a decidere per un fork di Gnome Shell, quindi non solo sviluppando una serie di pesanti personalizzazioni, ma addirittura un progetto parallelo che si avvicinasse maggiormente all'idea alla base di Linux Mint.
Lo sviluppo di Cinnamon è iniziato subito dopo l'uscita di Linux Mint 12 e la prima versione pubblica, la 1.1.2, è stata annunciata il 23 dicembre 2011, dopo poche settimane dall'inizio dello sviluppo, e quindi annunciata alla comunità di Linux Mint il 2 gennaio 2012.
Dalla versione 1.6 il team di Cinnamon ha introdotto anche un nuovo file manager denominato Nemo, fork di Nautilus, analogo e storico programma del progetto GNOME. Nemo è derivato dalla versione 3.4 di Nautilus e il fork è stato motivato dall'insoddisfazione per le versioni successive che, seguendo i dettami del progetto GNOME, stavano subendo un restyling con l'eliminazione di alcune caratteristiche ritenute invece fondamentali dagli sviluppatori di Linux Mint. Nemo è così diventato il file manager di default di Linux Mint a partire dalla versione 14.
Con la versione 2.0, gli sviluppatori hanno deciso di eliminare gran parte delle dipendenze di Cinnamon da GNOME 3, sistema che viene aggiornato tipicamente ogni sei mesi. Cinnamon è stato quindi dotato di una propria struttura backend derivata da quella di GNOME 3.6 ma autonoma e sviluppabile separatamente. In tal modo è stata praticamente conclusa la transizione di Cinnamon da semplice interfaccia che funziona sopra GNOME a un sistema virtualmente autonomo dipendente solo dalle librerie GTK comuni ai due sistemi.

## Caratteristiche

Cinnamon utilizza Muffin come gestore di finestre, a sua volta fork del window manager di GNOME 3 Mutter. Dispone inoltre di un pannello per il lancio delle applicazioni che sostituisce quasi completamente il paradigma di GNOME Shell e di un menu per le applicazioni sul modello di quello di GNOME 2 da sempre utilizzato da Linux Mint. A partire dalla versione 2.0 può essere installato anche senza le librerie specifiche di GNOME, ma utilizzando le proprie, migliorando le sue caratteristiche di compatibilità e di portabilità.
Cinnamon è dotata di alcune caratteristiche derivate da GNOME Shell e di altre introdotte dal suo team di sviluppo:
* Effetti grafici per il desktop, incluse animazioni per le finestre e effetti di transizione.
* Un pannello spostabile contenente il menu principale, una barra delle applicazioni, l'area delle finestre attive e l'area di notifica.
* Un sistema di componenti (spieces) sviluppabili anche da terze parti basato su:
** applet, lanciatori per applicazioni posizionabili sul pannello e riconfigurabili via drag and drop
** estensioni, di norma basate su quelle di GNOME Shell, che aggiungono funzionalità (ad esempio per ottenere lo scorrimento delle finestre attive sul modello dell'effetto Cover Flow utilizzando la combinazione di tasti Alt+Tab)
** desklet, componenti fluttuanti sul desktop dedicati a specifiche funzioni (presenti dalla versione 1.8)
** temi grafici personalizzabili e installabili dagli utenti oltre a quello predefinito
* Un gestore grafico delle preferenze (Cinnamon Settings) realizzato in python sul modello di quello di GNOME Shell con il quale è possibile personalizzare e gestire:
** il pannello (sdoppiabile o posizionabile in alto o in basso)
** l'aspetto generale
** il calendario
** i temi grafici
** le icone sulla scrivania
** gli effetti grafici e le animazioni
** temi grafici, applet, desklet ed estensioni realizzate dagli utenti per personalizzare ed espandere ulteriormente l'ambiente grafico.
** i caratteri del sistema
* Un proprio file manager (Nemo, presente dalla versione 1.6).
* Un editor del menu che consente di aggiungere, rimuovere e riordinare le applicazioni avviabili dal menu principale (presente dalla versione 1.4).

## Diffusione ed utilizzo

Cinnamon è diventato l'ambiente grafico predefinito della distribuzione Linux Mint a partire dalla versione 13 insieme a MATE, fork di GNOME 2.XX.
Pacchetti di Cinnamon sono stati resi disponibili, oltreché per Linux Mint, anche per altre distribuzioni Linux, tra le quali Ubuntu (dalla versione 11.10 in alternativa a Unity), Fedora (dalla versione 16), openSUSE, Arch Linux, Gentoo, Debian e Devuan.

## Accoglienza

Cinnamon è stata accolto molto bene da parte degli utilizzatori delle principali distribuzioni Linux non soddisfatti della strada intrapresa da Ubuntu con Unity e dal progetto GNOME con GNOME Shell segnalandosi come una possibile "terza via" nella cosiddetta "guerra dei desktop" e come alternativa per chi preferisce un approccio più tradizionale simile a quello di GNOME 2.
In generale la diffusione di Cinnamon è stata favorita dal suo utilizzo come ambiente grafico predefinito di una delle due edizioni principali di Linux Mint 13 (insieme a quella con Mate).

## Versioni

| Versione | Data di pubblicazione | Modifiche |
| 1.0.0 | 10-20 dicembre 2011 | Prima versione di sviluppo |
| 1.1.2 | 23 dicembre 2011 | Prima versione pubblica. Nuova applet per lanciare le applicazioni. |
| 1.1.3 | 2 gennaio 2012 | Prima versione utilizzabile. Nuovo menù sul modello del classico mintMenu di Linux Mint. Personalizzazione dei temi. |
| 1.2 | 23 gennaio 2012 | Sostituzione di Mutter con Muffin. Introduzione degli effetti grafici per le finestre. Possibilità di modifica della posizione del pannello. Introduzione del gestore di preferenze Cinnamon Settings. Nuove applet ed estensioni. |
| 1.3 | 17 febbraio 2012 | Ogni componente del pannello è sviluppato come applet. Netta divisione tra applet e estensioni. Introdotta la possibilità di sviluppare estensioni e applet personalizzate. Introduzione di funzioni di tipo drag and drop per i componenti del pannello. Nuove preferenze selezionabili tramite Cinnamon Settings. |
| 1.3.1 | 20 febbraio 2012 | Miglioramenti al riordino dei componenti del pannello tramite drag and drop. Miglioramenti vari. |
| 1.4 | 17 marzo 2012 | Localizzazione linguistica. Un editor per il menu principale basato su Alacarte. Nuove funzioni per il pannello e la sua personalizzazione e nuovi effetti grafici ispirati a Compiz. Cinnamon diviene l'ambiente grafico predefinito di una delle edizioni di Linux Mint. |
| 1.6 | 18 settembre 2012 | Nuova sessione 2D che usa il rendering via software. Possibilità di dare un nome agli spazi di lavoro. Varie migliorie e nuove funzioni per le modalità Expo e Scale. Nuove applet (tra cui una per le notifiche in tempo reale all'utente) e scorciatoie da tastiera. Nuovo file manager Nemo. Utilizzata in una delle due edizioni di Linux Mint 14. |
| 1.8 | 5 maggio 2013 | Miglioramenti al file manager Nemo. Introduzione di un nuovo sistema di salvaschermo. Il centro di controllo di Gome (Gnome Control Center) è stato fuso con il centro di controllo di Cinnamon (Cinnamon Settings). Introduzione dei desklets, widget fluttuanti sulla scrivania destinati a specifiche funzioni. Gli oggetti programmabili da terze parti che aggiungono funzioni all'ambiente grafico, applet, estensioni e desklet, sono ora complessivamente definiti species ("spezie") e sono installabili e gestibili tramite il centro di controllo (in precedenza era possibile installarli solo manualmente scaricandoli dal sito web di Cinnamon). Versione predisposta per Linux Mint 15. |
| 2.0 | 10 ottobre 2013 | Nuovo sistema di componenti denominato Cinnamon Backend che rende indipendente Cinnamon da GNOME. Nuovo sistema di effetti sonori. Nuovo sistema per la gestione degli utenti e dei gruppi di utenti. Nuovo sistema di edge-tiling e edge-snapping per il ridimensionamento e il posizionamento dinamico delle finestre ai bordi dello schermo. Miglioramenti al file manager Nemo. Nuovo modulo di configurazione del monitor. Modifiche alla API per la realizzazione di applet e desklet. Versione predisposta per Linux Mint 16. |
| 2.2 | 14 aprile 2014 | Miglioramenti al centro di controllo, allo screensaver, alla gestione energetica, alla configurazione di data e ora e all'aspetto delle applet. Aggiunta compatibilità con lo standard MPRIS per il controllo delle applicazioni multimediali. Aggiunta compatibilità con i display HiDPI/Retina. Nuovi effetti per il windows manager. Versione predisposta per Linux Mint 17. |
| 2.4 | 1º novembre 2014 | Ottimizzazione sui consumi (risolti trenta memory leak), con conseguente miglioramento delle performance. Nuovo gestore degli sfondi, con possibilità di slide show automatico. Aggiunta anche l'animazione "zoom", presa da Gnome-Shell. Nuovo gestore dei temi che consente di cambiare più facilmente temi, icone, controlli e bordi delle finestre. Aggiunto supporto ai touchpad senza tasti. Migliorie anche per il compositing, risolvendo il tearing dei video a schermo intero. Aggiunta inoltre la possibilità di modificare il font della Scrivania. Versione rilasciata con Linux Mint 17.1 |
| 2.6 | 17 maggio 2015 | Ottimizzazione utilizzo CPU, miglioramento supporto multi-monitor, rivisto lo screen-saver, miglioramenti a pannelli e applet, ottimizzazione nemo (le operazioni sui file vengono eseguite in sequenza e non più in parallelo), miglioramenti anche per l'accessibilità |
| 2.8 | 2 novembre 2015 | Migliorato l'applet dei suoni, i controlli per la gestione della scheda audio e del gestore dell'energia. Aggiunte le miniature alla lista delle finestre. Miglioramenti nelle animazioni e nella gestione dei monitor multipli. Migliorato supporto alle applicazioni qt5. Miglioramenti vari anche nel file manager Nemo. |