/cinnamon-settings-daemon

The settings daemon for the Cinnamon desktop

Primary LanguageCGNU General Public License v2.0GPL-2.0

cinnamon-settings-daemon is a collection of plugins.

These plugins are started by cinnamon-session when you log in.

The plugins run in the background, each with its own process.

PLUGINS

Here is a description of each plugin.

a11y-settings

automount

background

clipboard

Xorg features two ways of copying and pasting content. The first one is X-clipboard, which is commonly used in edit menus and when using Ctrl+C and Ctrl+V. The second one is X-selection which is used when selecting content with the mouse and pasting it with a middle-click.

When you copy content from a window, that content is available either in X-clipboard or X-selection until the application which owns that window is terminated.

This plugin keeps the content of X-clipboard in memory, so that even if the owner application exits, the content continues to be available.

color

common

datetime

dummy

This is a dummy plugin. It doesn't do anything.

housekeeping

thumbnail cache

The thumbnail cache is cleaned up according to the settings stored in org.cinnamon.desktop.thumbnail-cache.

This is done 2 minutes after login and then once each day.

low disk space

Every minute, the plugin checks the mounted volume to see if they have low disk space, according to the settings stored in org.cinnamon.settings-daemon.plugins.housekeeping.

The plugin shows a notification when a volume is full.

keyboard

This plugin handles the keyboard.

keyboard settings

It reads and listens to the org.cinnamon.settings-daemon.peripherals.keyboard settings and applies the configuration.

numlock state

It also listens to the state of the numlock key and saves it in the settings to ensure the state is remembered and preserved for the next session.

keyboard layout

The layout selection is done in the cinnamon-control-center region plugin (which is presented to the user in the cinnamon-settings keyboard module). That configuration is set directly via gkbd (libgnomekbd) and xkl (libxklavier). This plugin reads and listens to that configuration and assigns it to the keyboard.

hotplug command

Although it isn't configured by default or used by cinnamon-settings, when a keyboard is plugged in, or removed, this plugin executes the command specified in org.cinnamon.settings-daemon.peripherals.input-devices hotplug-command with a series of arguments to specify the event type, the device, etc.

An example script which can be used for such a command is available in plugins/common/input-device-example.sh.

media-keys

power

print-notifications

This plugin shows printer notifications.

On DBUS, it listens to events on org.cups.cupsd.Notifier.

libnotify is used to show the notifications.

screensaver-proxy

smartcard

wacom

This plugin handles Wacom tablets.

It reads and listens to the org.cinnamon.settings-daemon.peripherals.wacom and applies the configuration in X11.

xsettings

This plugin sets the settings for GTK and Xft.

TESTING

To test a plugin:

  1. Kill the running CSD plugin
  2. Build the project
  3. Run the built plugin in verbose mode

For example:

  • killall csd-sound (you might have to kill it twice, if CSM tries to restart it)
  • dpkg-buildpackage
  • plugins/sound/csd-sound --verbose

TODO

  • Remove custom keybinding code (we handle that in Cinnamon now) - do we want to handle media keys in cinnamon also? Would get around the 'no meta keys while a menu is open' issue.
  • Switch to Gnome's keyboard layout (gsettings) handler - basically reverting Ubuntu's patch for this. This will allow us to implement ibus popups directly in Cinnamon
  • Look into backgrounds - we should be able to eliminate the background manager in the cinnamon gnome 3.8 compat rollup, and continue to handle backgrounds as we currently do
  • Investigate: How to keep gnome-settings-daemon from autostarting. It checks for environment=GNOME... which means Cinnamon also - is it time to have our own freedesktop.org name?

-- Update on this: Setting session name to Cinnamon works - then add to main.c in cinnamon, to set XDG_CURRENT_DESKTOP=GNOME makes sure apps keep showing up

  • Multiple backgrounds on multiple monitors
  • /etc/acpi/powerbtn.sh - add cinnamon-settings-daemon to script - how? postinst?