How Does AnduinOS Manage and Customize GNOME Shell Extensions? #431
|
Hello, I am studying how AnduinOS manages and customizes GNOME Shell extensions as part of understanding Linux distribution development. I noticed that AnduinOS uses extensions such as Dash to Panel and appears to customize their configuration and behavior. I would like to understand the general approach used by the project:
I am asking as a contributor/student interested in learning how Linux distributions manage GNOME customization. I am not asking for any private development information—only the general approach and public implementation methods. Thank you. |
Replies: 1 comment
|
Hello, Thank you for your interest. The implementation is public, primarily in the AnduinOS-Packages repository. AnduinOS generally uses system-wide Debian packages together with layered dconf defaults.
GNOME Shell extensions are installed system-wide under: /usr/share/gnome-shell/extensions// Each extension is packaged as a .deb. Its AnduinOS defaults are usually stored as a keyfile under: /etc/dconf/db/anduinos.d/ For example, Dash to Panel ships its settings in 14-dash-to-panel.conf. The user dconf profile is layered as: user-db:user Therefore, a new user with no personal values automatically receives the AnduinOS system defaults. If the user changes a setting, the value in their user database takes precedence. General GNOME defaults and the list of enabled extensions are maintained by anduinos-dconf-defaults, using both: /usr/share/glib-2.0/schemas/99-anduinos-defaults.gschema.override
It depends on the extension. Some extensions are packaged without meaningful source changes, while others receive small integration patches. For Dash to Panel, the build script downloads the latest compatible upstream release for the target GNOME Shell version and then applies deterministic AnduinOS patches. These include the default panel layout, context-menu integration, wording such as “Taskbar Settings,” and translations. The implementation is visible in the Dash to Panel packaging script. Thus, it is a customized package, but it remains closely based on upstream rather than being developed as an unrelated extension.
The anduinos-dconf-runtime package owns the dconf profile and a dpkg trigger watching /etc/dconf/db/anduinos.d. When an extension package installs, upgrades, or removes a configuration fragment:
This central trigger means individual extension packages do not each need to run their own independent dconf update.
The ISO installs the extension and dconf packages before creating the normal installed environment. New users inherit the compiled system database automatically; settings do not need to be copied into every home directory. The automated installation tests compare the system-wide extension directories with org.gnome.shell enabled-extensions, verify that expected extensions report ACTIVE, inspect GNOME Shell logs for extension errors, and exercise important UI behavior. Relevant tests are in AnduinOS-2.
Extensions are updated through normal APT package updates. During each package build, the resolver selects a compatible upstream release for the target GNOME Shell version, after which the AnduinOS patches and defaults are applied again. Because the AnduinOS configuration is provided as a lower-priority system dconf database, package upgrades can update distribution defaults without overwriting values explicitly changed by existing users. New users receive the latest defaults, while existing user overrides remain intact.
AnduinOS keeps the original upstream UUID: dash-to-panel@jderose9.github.com It does not use a separate AnduinOS UUID. The Debian package is named gnome-shell-extension-dash-to-panel-anduinos to distinguish its packaging and declare the appropriate Conflicts, Replaces, and Provides relationships with the Ubuntu package. GNOME Shell itself still recognizes it as the upstream Dash to Panel extension. I hope this provides a useful overview. The packaging repository is the best place to study the exact configuration files, build-time patches, and package relationships. |
Hello,
Thank you for your interest. The implementation is public, primarily in the AnduinOS-Packages repository.
AnduinOS generally uses system-wide Debian packages together with layered dconf defaults.
GNOME Shell extensions are installed system-wide under:
/usr/share/gnome-shell/extensions//
Each extension is packaged as a .deb. Its AnduinOS defaults are usually stored as a keyfile under:
/etc/dconf/db/anduinos.d/
For example, Dash to Panel ships its settings in 14-dash-to-panel.conf.
The user dconf profile is layered as:
user-db:user
system-db:anduinos
Therefore, a new user with no personal values automatically receives the AnduinOS system …