The settings daemon for the Cinnamon desktop
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.rst

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 their own process.

Plugins:

Here's a description of each plugin.

a11y-keyboard

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 using Ctrl+C and Ctrl+V. The second one is X-selection which is used by 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

cursor

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 a 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 cinnamon-control-center's region plugin (which is presented to the user in 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 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, the plugin executes the command specified in org.cinnamon.settings-daemon.peripherals.input-devices hotplug-command with a series of argument 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

mouse

This plugin handles mice and touchpads.

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

This plugin supports synaptics and libinput devices.

orientation

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

sound

This plugin is use to play sound files or theme sounds via PulseAudio.

It's available via dbus at org.cinnamon.SettingsDaemon.Sound.

Its configuration is org.cinnamon.desktop.sound.

wacom

This plugin handles wacom tablets.

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

xrandr

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 instance:

  • 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 meda 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?