Cinnamon is composed a lot of smaller interconnected projects:


Cinnamon, forked from GNOME Shell, is the "shell" of Cinnamon. It provides the user interface such as panels, hot corners, menus etc. The ui is written in JavaScript, while its core libraries are written in C.

Cinnamon Screensaver

Cinnamon Screensaver, forked from GNOME Screensaver, is the screen locker you see when you leave the session idle for the a long time. It currently supports loading xscreensaver hacks as well as webkit screensaver. You can also write your own Cinnamon Screensaver plugin without tying to either xscreensaver or webkit.

Cinnamon Desktop

Cinnamon Desktop, fork of GNOME desktop, provides certain useful resources for Cinnamon. Most importantly, it contains the schemas for most Cinnamon components, eg. org.cinnamon.desktop.screensaver. It also has a small library that provides certain functions used in, say, Cinnamon Screensaver.

Cinnamon Menus

Cinnamon Menus, fork of GNOME menus, contains the libcinnamon-menu library, the layout configuration files for the Cinnamon menu, as well as a simple menu editor.

The libcinnamon-menu library implements the "Desktop Menu Specification" from

Cinnamon Settings Daemon

Cinnamon Settings Daemon is a fork of GNOME Settings Daemon. It provides many session-wide services and functions that require a long-running process. Among the services implemented by cinnamon-settings-daemon are an XSettings manager, which provides theming, font and other settings to GTK+ applications, and a clipboard manager, which preserves clipboard contents when an application exits. Many user interface elements of cinnamon and cinnamon-settings rely on cinnamon-settings-daemon for their functionality.

The internal architecture of cinnamon-settings-daemon consists of a number of plugins, which provide functionality such as printer notifications, software update monitoring, background changing, etc. For debugging purposes, these plugins can be individually disabled by changing the gsettings key, where plugin-name is the name of the plugin. To see a list of all plugins, use the command gsettings list-children org.cinnamon.settings-daemon.plugins.

Cinnamon Settings Daemon takes the name org.cinnamon.SettingsDaemon on the session bus to ensure that only one instance is running. Some plugins export objects under this name to make their functionality available to other applications. The interfaces of these objects should generally be considered private and unstable.

Cinnamon Settings Daemon is a required component of the Cinnamon desktop, i.e. it is listed in the RequiredComponents field of /usr/share/cinnamon-session/sessions/cinnamon.session. It is started in the initialization phase of the session, and cinnamon-session will restart it if it crashes.

Cinnamon Control Center

Cinnamon Control Center is a fork of GNOME Control Center. The official control center of Cinnamon in Cinnamon Settings, which is written in python and part of Cinnamon itself. However, some of the modules are still not yet ported to python, and we have to rely on the C modules, which are found here.


MDM, forked from GDM, is a display manager, not necessarily tied to Cinnamon. MDM officially stands for MDM display manager.


Nemo, forked from Nautilus, is the file manager of Cinnamon.


Muffin, forked from Mutter, which is in turn forked from Metacity, is the window manager of Cinnamon. Cinnamon is implemented as a plugin of Muffin.

Cinnamon Session

This is responsible for starting the Cinnamon session. This is typically executed by the login manager (either mdm, xdm, or from your X startup scripts). It will load either your saved session, or it will provide a default session for the user as defined by the system administrator (or the default GNOME installation on your system).

Cinnamon Translations

Cinnamon translations is a package that contains the translations used in Cinnamon


Cjs, fork of Gjs, is the "interpreter" of Cinnamon's javascript code. It is not an actual interpreter - the interpretation is done by SpiderMonkey. Instead, the role of Cjs is to provide bindings to GNOME libraries through GObject Introspection.


Blueberry is a bluetooth configuration tool that replaces the old Cinnamon Bluetooth. It depends on GNOME Bluetooth.

Linux Mint

Other Linux Mint projects include

Mint Upload

Mint Install

Mint Nanny

Mint Backup

Mint X Icons

Mint Themes

Mint Themes Gtk3

Mint Update

Mint Stick

Live Installer

Mint Translations

Mint Sources

Mint Menu

Mint Welcome

Mint Desktop

Mint Drivers

Mint Locale