Difference between revisions of "GNOME/Internals"

From Funtoo
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
== GNOME Components ==
== GNOME Components ==


GNOME components are parts of GNOME (part of {{c|gnome-settings-daemon}} that are spawned by {{c|gnome-session}} when it starts.
GNOME components are parts of GNOME (part of {{c|gnome-settings-daemon}}) that are spawned by {{c|gnome-session}} when it starts.
 
They provide services inside GNOME, or it might be better to say that they provide a service API inside GNOME. The services themselves are rarely if ever implemented inside the component -- they just tend to store state and send dbus messages to other services that do the heavy lifting.
They provide services inside GNOME, or it might be better to say that they provide a service API inside GNOME. The services themselves are rarely if ever implemented inside the component -- they just tend to store state and send dbus messages to other services that do the heavy lifting.


Line 33: Line 34:
;{{c|org.gnome.SettingsDaemon.Sharing}}: Implements API for network sharing, including hooking into systemd as well as NetworkManager. Has support for Rygel (media sharing) as well as classifying type of sharing as "low security" based on the type of connection (such as open WiFi) and then disabling sharing on these networks.
;{{c|org.gnome.SettingsDaemon.Sharing}}: Implements API for network sharing, including hooking into systemd as well as NetworkManager. Has support for Rygel (media sharing) as well as classifying type of sharing as "low security" based on the type of connection (such as open WiFi) and then disabling sharing on these networks.
;{{c|org.gnome.SettingsDaemon.MediaKeys}}: Handles bindings and actions for 'media keys' (volume up/down, eject, launching apps, increase text size, zoom, contrast, power actions, etc.) as well as displaying the real-time volume or other display when these keys are pressed (which is called the 'OSD'). Fairly involved due to the massive use of media keys in GNOME.
;{{c|org.gnome.SettingsDaemon.MediaKeys}}: Handles bindings and actions for 'media keys' (volume up/down, eject, launching apps, increase text size, zoom, contrast, power actions, etc.) as well as displaying the real-time volume or other display when these keys are pressed (which is called the 'OSD'). Fairly involved due to the massive use of media keys in GNOME.
;{{c|org.gnome.SettingsDaemon.Power}}: Power management functionality: API for screen brightness, keyboard brightness, monitoring of battery level of system as well as battery-powered devices, notifications related to power, API for shutdown, logout, power off (via elogind), suspend (via elogind), hibernate (via elogind), backlight management, lid close/open for laptops, screen lock, tracking of 'idle' and idle suspend, etc, 'screensaver' (screen blanking).

Latest revision as of 16:54, September 1, 2020

This page is intended for explaining the internal architecture of GNOME as well as sharing GNOME hacks.

GNOME Components

GNOME components are parts of GNOME (part of gnome-settings-daemon) that are spawned by gnome-session when it starts.

They provide services inside GNOME, or it might be better to say that they provide a service API inside GNOME. The services themselves are rarely if ever implemented inside the component -- they just tend to store state and send dbus messages to other services that do the heavy lifting.

Disabling

The file /usr/share/gnome-session/sessions/gnome.session contains a line at the bottom of the file starting with RequiredComponents=, which lists services that GNOME will expect to be able to start. If it can't start one of these components, it will display a fatal error (sick computer) at startup and GNOME will not start.

Some of these so-called 'required' components can be turned off. For example, org.gnome.SettingsDaemon.UsbProtection can be turned off. To do this, first remove the reference to this component from the RequiredComponents line in the gnome.session file. Then, move /etc/xdg/autostart/org.gnome.SettingsDaemon.UsbProtection to a backup location, such as /root. The next time you log into your GNOME session, you will see that the gsd-usbguard process is no longer running, yet GNOME started just fine (since this component is no longer marked as 'required'.)

Components List (Incomplete)

org.gnome.SettingsDaemon.UsbProtection
This component 'guards' USB ports and informs you when someone has attached a USB device when your computer is asleep. It also does some disabling of USB devices when the system is asleep. Daemon name is gsd-usbguard. Can be turned off (see Disabling).
org.gnome.SettingsDaemon.Wacom
Implements functionality for tablets (assumption.) Can be turned off (see Disabling).
org.gnome.SettingsDaemon.SmartCard
Implements smart card support (assumption.) Can be turned off (see Disabling).
org.gnome.SettingsDaemon.Housekeeping
Provides a service to clean out the desktop thumbnail cache once daily.
org.gnome.SettingsDaemon.ScreenSaverProxy
Implements a dbus interface for Inhibit and Uninhibit (presumably to allow inhibiting of the screensaver.)
org.gnome.SettingsDaemon.Sound
Daemon is gsd-sound. Monitors for change of theme and caches sound samples in the theme.
org.gnome.SettingsDaemon.Dummy
This appears to be a component that can be used as a featureless replacement for another plugin. For example, gdm runs usr/libexec/gsd-dummy --dummy-name=org.gnome.SettingsDaemon.Smartcard.
org.gnome.SettingsDaemon.Color
This component implements color profile management functionality as well as a dbus API for the 'night light' functionality.
org.gnome.SettingsDaemon.Keyboard
Implements keyboard-related functionality including keyboard layouts, playing the "bell", key clicks, tracking keyboard idle time, and some interfaces related to on-screen keyboard and ibus.
org.gnome.SettingsDaemon.PrintNotifications
Connects to CUPS via dbus and relays any notifications to the end-user as appropriate.
org.gnome.SettingsDaemon.Wwan
Implements some functionality related to wireless WAN devices (SIM card and enumeration.)
org.gnome.SettingsDaemon.Rfkill
Implements dbus interface for airplane mode, turning off bluetooth, etc.
org.gnome.SettingsDaemon.Datetime
Allows setting of timezone, auto-detection of timezone (like on a mobile device), and an 'weather-timezone' interface.
org.gnome.SettingsDaemon.Sharing
Implements API for network sharing, including hooking into systemd as well as NetworkManager. Has support for Rygel (media sharing) as well as classifying type of sharing as "low security" based on the type of connection (such as open WiFi) and then disabling sharing on these networks.
org.gnome.SettingsDaemon.MediaKeys
Handles bindings and actions for 'media keys' (volume up/down, eject, launching apps, increase text size, zoom, contrast, power actions, etc.) as well as displaying the real-time volume or other display when these keys are pressed (which is called the 'OSD'). Fairly involved due to the massive use of media keys in GNOME.
org.gnome.SettingsDaemon.Power
Power management functionality: API for screen brightness, keyboard brightness, monitoring of battery level of system as well as battery-powered devices, notifications related to power, API for shutdown, logout, power off (via elogind), suspend (via elogind), hibernate (via elogind), backlight management, lid close/open for laptops, screen lock, tracking of 'idle' and idle suspend, etc, 'screensaver' (screen blanking).