Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "GNOME/Internals"

From Funtoo
Jump to navigation Jump to search
(Created page with "This page is intended for tracking internal architecture of GNOME. Category:Official Documentation")
 
 
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
This page is intended for tracking internal architecture of GNOME.
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 {{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.
=== Disabling ===
The file {{f|/usr/share/gnome-session/sessions/gnome.session}} contains a line at the bottom of the file starting with {{c|1=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, {{c|org.gnome.SettingsDaemon.UsbProtection}} can be
turned off. To do this, first remove the reference to this component from the {{c|RequiredComponents}} line in the {{f|gnome.session}} file. Then, move {{c|/etc/xdg/autostart/org.gnome.SettingsDaemon.UsbProtection}} to a backup location, such
as {{f|/root}}. The next time you log into your GNOME session, you will see that the {{c|gsd-usbguard}} process is no longer
running, yet GNOME started just fine (since this component is no longer marked as 'required'.)
=== Components List (Incomplete) ===
;{{c|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 {{c|gsd-usbguard}}. ''Can be turned off (see [[#Disabling|Disabling]]).''
;{{c|org.gnome.SettingsDaemon.Wacom}}: Implements functionality for tablets (assumption.) ''Can be turned off (see [[#Disabling|Disabling]]).''
;{{c|org.gnome.SettingsDaemon.SmartCard}}: Implements smart card support (assumption.) ''Can be turned off (see [[#Disabling|Disabling]]).''
;{{c|org.gnome.SettingsDaemon.Housekeeping}}: Provides a service to clean out the desktop thumbnail cache once daily.
;{{c|org.gnome.SettingsDaemon.ScreenSaverProxy}}: Implements a dbus interface for {{c|Inhibit}} and {{c|Uninhibit}} (presumably to allow inhibiting of the screensaver.)
;{{c|org.gnome.SettingsDaemon.Sound}}: Daemon is {{c|gsd-sound}}. Monitors for change of theme and caches sound samples in the theme.
;{{c|org.gnome.SettingsDaemon.Dummy}}: This appears to be a component that can be used as a featureless replacement for another plugin. For example, {{c|gdm}} runs {{c|1=usr/libexec/gsd-dummy --dummy-name=org.gnome.SettingsDaemon.Smartcard}}.
[[Category:Official Documentation]]
[[Category:Official Documentation]]
;{{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.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 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).