The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "GNOME/Internals"
(8 intermediate revisions 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. | |||
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 === | === Disabling === | ||
Line 27: | Line 28: | ||
;{{c|org.gnome.SettingsDaemon.Color}}: This component implements color profile management functionality as well as a dbus API for the 'night light' functionality. | ;{{c|org.gnome.SettingsDaemon.Color}}: This component implements color profile management functionality as well as a dbus API for the 'night light' functionality. | ||
;{{c|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. | ;{{c|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. | ||
;{{c|org.gnome.SettingsDaemon. | ;{{c|org.gnome.SettingsDaemon.PrintNotifications}}: Connects to CUPS via dbus and relays any notifications to the end-user as appropriate. | ||
;{{c|org.gnome.SettingsDaemon.Wwan}}: Implements some functionality related to wireless WAN devices (SIM card and enumeration.) | |||
;{{c|org.gnome.SettingsDaemon.Rfkill}}: Implements dbus interface for airplane mode, turning off bluetooth, etc. | |||
;{{c|org.gnome.SettingsDaemon.Datetime}}: Allows setting of timezone, auto-detection of timezone (like on a mobile device), and an 'weather-timezone' interface. | |||
;{{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.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
andUninhibit
(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
runsusr/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).