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.
Here is a description of each plugin.
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.
This is a dummy plugin. It doesn't do anything.
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.
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
.
This plugin shows printer notifications.
On DBUS, it listens to events on org.cups.cupsd.Notifier
.
libnotify
is used to show the notifications.
This plugin handles Wacom tablets.
It reads and listens to the org.cinnamon.settings-daemon.peripherals.wacom
and applies the configuration in X11.
This plugin sets the settings for GTK and Xft.
To test a plugin:
- Kill the running CSD plugin
- Build the project
- 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
- 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?