Cinnamon is composed a lot of smaller interconnected projects:
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, 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, fork of GNOME menus, contains the
libcinnamon-menu library, the layout configuration files for the Cinnamon menu, as well as a simple menu editor.
libcinnamon-menu library implements the "Desktop Menu Specification" from freedesktop.org:
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
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 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.
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 is a package that contains the translations used in Cinnamon
Blueberry is a bluetooth configuration tool that replaces the old Cinnamon Bluetooth. It depends on GNOME Bluetooth.