Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Add MATE desktop support with branding and menu - #810

#810
Merged
igorpecovnik merged 19 commits into
mainarmbian/configng:mainfrom
matearmbian/configng:mateCopy head branch name to clipboard
Apr 9, 2026
Merged

Add MATE desktop support with branding and menu#810
igorpecovnik merged 19 commits into
mainarmbian/configng:mainfrom
matearmbian/configng:mateCopy head branch name to clipboard

Conversation

@igorpecovnik

@igorpecovnik igorpecovnik commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

  • Fix MATE postinst: remove wrong Cinnamon/Nemo dconf keys, add proper MATE-only settings
  • Add gsettings schema override for wallpaper, theme, desktop icons
  • Add default MATE panel layout without broken applets (brisk-menu, indicator, trash)
  • Remove broken applets via packages_uninstall after meta-package install
  • Add NetworkManager coexistence with systemd-networkd
  • Add missing packages: fonts-ubuntu, dmz-cursor-theme, gtk2-engines, evince, network-manager-gnome
  • Hide mate-terminal, mate-color-select from menu
  • Hide desktop icons (home, computer, trash, volumes)
  • Add MATE to config.system.json menu with markdown documentation
  • Add MATE to supported desktops table

Test plan

  • MATE install on Trixie — panel, theme working
  • MATE install on Noble — panel, theme working
  • Verify wallpaper applies on fresh user
  • Verify autologin toggle works

@github-actions github-actions Bot added size/medium PR with more then 50 and less then 250 lines 05 Milestone: Second quarter release Documentation Documentation changes or additions labels Apr 8, 2026
@coderabbitai

coderabbitai Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@igorpecovnik has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 5 minutes and 7 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 5 minutes and 7 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c2ba08dd-7b05-417b-883f-22dcfec19955

📥 Commits

Reviewing files that changed from the base of the PR and between 806a870 and a7ba871.

⛔ Files ignored due to path filters (1)
  • tools/include/images/MATE01.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • tools/modules/system/module_appimage.sh

Walkthrough

Adds MATE desktop support and related packaging/configuration: updates MATE post-install to remove large dconf dumps, keep a narrowed org/mate/desktop/* payload (cursor theme changed to DMZ-White, screensaver picture-uri updated), installs a GLib schema override /usr/share/glib-2.0/schemas/90-armbian-mate.gschema.override, and conditionally writes /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf and restarts NetworkManager only when systemd-networkd is active. Adds hidden .desktop files for MATE apps, new MATE docs and menu entry in tools/json/config.system.json, expands Mate package list and supported architectures, tweaks NetworkManager checks in other postinst scripts, adjusts AppImage FUSE handling, and adds/removes test cases.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add MATE desktop support with branding and menu' clearly and concisely summarizes the main objective of the changeset: introducing MATE desktop environment support with associated branding and menu configuration.
Description check ✅ Passed The description is directly related to the changeset, providing a structured summary of fixes, additions, and improvements made to support MATE desktop, along with a test plan demonstrating verification of the implementation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch mate

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tools/include/branding/postinst/mate.sh`:
- Around line 65-101: The preset currently replaces the whole panel layout
(object-id-list and single toplevel 'top'), removing the
bottom/workspace/window-list panel; instead keep an explicit bottom toplevel and
only remove the broken applets: update object-id-list to include the window-list
and workspace-switcher IDs, add a [org/mate/panel/toplevels/bottom] stanza
(orientation/bottom, size) and corresponding
[org/mate/panel/objects/window-list] and
[org/mate/panel/objects/workspace-switcher] entries (locked,
toplevel-id='bottom', positions) so fresh MATE profiles retain the bottom panel
while you still omit the broken applet object sections (e.g.,
NotificationAreaApplet/Clock/ShowDesktop) rather than dropping the entire second
panel.
- Around line 108-111: The loop that deletes each user's ~/.config/dconf/user
must not be used because it wipes all GSettings for existing accounts; remove
the for ... rm -f "$home/.config/dconf/user" code and instead implement one of
two safe approaches: (A) set MATE/Caja-specific defaults via system dconf
profiles and keyfiles (create/update entries under /etc/dconf/db/* and run dconf
update) so new-user defaults apply without touching existing user files, or (B)
if you must modify existing accounts, iterate users and run dconf write/reset
only for the specific MATE/Caja keys needed using the dconf CLI (e.g., dconf
reset -f /org/mate/... or dconf write /org/mate/... for targeted keys) rather
than deleting the entire $home/.config/dconf/user file; replace references to
the removed rm line with the chosen safe method.
- Around line 136-144: The script currently unconditionally writes an NM
override which can disable NetworkManager-managed ethernet; instead source the
runtime variables (e.g. run set_runtime_variables.sh) and check the
NETWORK_RENDERER variable, and only create
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf and restart NetworkManager
when NETWORK_RENDERER indicates systemd-networkd is the active renderer (match
the exact value provided by set_runtime_variables.sh, e.g. "systemd-networkd");
leave the existing NetworkManager logic (command -v NetworkManager) intact but
gate the unmanaged-devices write behind that NETWORK_RENDERER check.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9fba0c33-f241-48a8-9571-6af8a895775d

📥 Commits

Reviewing files that changed from the base of the PR and between eb65227 and 8444805.

📒 Files selected for processing (8)
  • tools/include/branding/postinst/mate.sh
  • tools/include/branding/skel/.local/share/applications/mate-color-select.desktop
  • tools/include/branding/skel/.local/share/applications/mate-terminal.desktop
  • tools/include/markdown/Desktops-header.md
  • tools/include/markdown/MATE01-footer.md
  • tools/include/markdown/MATE01-header.md
  • tools/json/config.system.json
  • tools/modules/system/module_desktop_packages.sh

Comment thread tools/include/branding/postinst/mate.sh Outdated
Comment thread tools/include/branding/postinst/mate.sh Outdated
Comment thread tools/include/branding/postinst/mate.sh Outdated
@github-actions github-actions Bot added size/large PR with 250 lines or more and removed size/medium PR with more then 50 and less then 250 lines labels Apr 9, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
tools/include/branding/postinst/mate.sh (1)

154-162: ⚠️ Potential issue | 🟠 Major

Gate unmanaged ethernet override on the active renderer.

Line 155 still applies unmanaged-devices=type:ethernet whenever NetworkManager exists. That can break wired networking when NetworkManager is the active renderer. Please guard this block with NETWORK_RENDERER=="systemd-networkd".

Proposed patch
-# Let NetworkManager coexist with systemd-networkd
-if command -v NetworkManager > /dev/null 2>&1; then
+# Let NetworkManager coexist with systemd-networkd
+if command -v NetworkManager > /dev/null 2>&1 && [ "${NETWORK_RENDERER:-}" = "systemd-networkd" ]; then
 	mkdir -p /etc/NetworkManager/conf.d
 	cat > /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf <<- NMEOF
 	[keyfile]
 	unmanaged-devices=type:ethernet
 	NMEOF
 	systemctl restart NetworkManager 2>/dev/null || true
 fi

Based on learnings: set_runtime_variables.sh establishes NETWORK_RENDERER, and independent modules must match that runtime variable exactly.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/include/branding/postinst/mate.sh` around lines 154 - 162, The script
currently unconditionally writes an unmanaged-devices override when
NetworkManager exists, which can break wired networking if NetworkManager is the
active renderer; modify the block that creates
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf so it first sources or
checks the runtime NETWORK_RENDERER variable (as set by
set_runtime_variables.sh) and only applies the override when NETWORK_RENDERER ==
"systemd-networkd"; locate the conditional that uses command -v NetworkManager
and add a guard testing NETWORK_RENDERER for equality to "systemd-networkd"
before creating the conf file and restarting NetworkManager.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@tools/include/branding/postinst/mate.sh`:
- Around line 154-162: The script currently unconditionally writes an
unmanaged-devices override when NetworkManager exists, which can break wired
networking if NetworkManager is the active renderer; modify the block that
creates /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf so it first sources
or checks the runtime NETWORK_RENDERER variable (as set by
set_runtime_variables.sh) and only applies the override when NETWORK_RENDERER ==
"systemd-networkd"; locate the conditional that uses command -v NetworkManager
and add a guard testing NETWORK_RENDERER for equality to "systemd-networkd"
before creating the conf file and restarting NetworkManager.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 09b4a8e9-1b42-4409-bc1e-7ab8f8c4b645

📥 Commits

Reviewing files that changed from the base of the PR and between 2dfb03c and 15b3b89.

📒 Files selected for processing (1)
  • tools/include/branding/postinst/mate.sh

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
tools/include/branding/postinst/cinnamon.sh (1)

135-143: ⚠️ Potential issue | 🟠 Major

Mirror the same stale-config cleanup here.

At Line 135, this block has the same upgrade-path issue: existing /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf is not removed when systemd-networkd is inactive, so Ethernet can remain unmanaged unintentionally.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/include/branding/postinst/cinnamon.sh` around lines 135 - 143, The
NetworkManager block in cinnamon.sh leaves a stale
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf when systemd-networkd
becomes inactive, so update the logic around the command -v NetworkManager /
systemctl is-active --quiet systemd-networkd check to remove the file when
systemd-networkd is not active (mirror the existing stale-config cleanup
elsewhere); specifically, ensure the script either deletes
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf when systemd-networkd is
inactive or conditionally creates it only when active, and restart
NetworkManager via systemctl restart NetworkManager || true after making that
change (reference the 10-armbian-unmanaged.conf path, the NetworkManager check,
and the systemctl is-active --quiet systemd-networkd call).
tools/include/branding/postinst/gnome.sh (1)

42-50: ⚠️ Potential issue | 🟠 Major

Clean up stale NM override when systemd-networkd is inactive.

At Line 42, the new guard prevents new writes, but existing /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf is never removed on upgrade paths. That can keep Ethernet unmanaged after networkd is no longer active.

Proposed fix
 # Let NetworkManager coexist with systemd-networkd (only if networkd is active)
 if command -v NetworkManager > /dev/null 2>&1 && systemctl is-active --quiet systemd-networkd 2>/dev/null; then
 	mkdir -p /etc/NetworkManager/conf.d
 	cat > /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf <<- NMEOF
 	[keyfile]
 	unmanaged-devices=type:ethernet
 	NMEOF
 	systemctl restart NetworkManager 2>/dev/null || true
+else
+	if [ -f /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf ]; then
+		rm -f /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf
+		systemctl is-active --quiet NetworkManager 2>/dev/null && systemctl restart NetworkManager 2>/dev/null || true
+	fi
 fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/include/branding/postinst/gnome.sh` around lines 42 - 50, The current
guard only creates /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf when
systemd-networkd is active but never removes it when networkd becomes inactive,
leaving Ethernet permanently unmanaged; update the logic in gnome.sh around the
systemctl is-active check so that if systemd-networkd is inactive and the file
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf exists you remove that file
(and then restart NetworkManager), otherwise keep the existing creation path
when systemd-networkd is active; ensure removals ignore errors (e.g., rm -f) and
always attempt to restart NetworkManager after creating or removing the file.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tests/MATE01.conf`:
- Around line 5-9: The test currently uses set -e so a failing
./bin/armbian-config --api module_desktop install de=mate will prevent the
subsequent remove call; add an EXIT trap inside the testcase() subshell (after
set -e and before the install command) that always runs ./bin/armbian-config
--api module_desktop remove de=mate to guarantee cleanup even on failure. Use
the trap with the EXIT signal inside the subshell so the remove runs when the
subshell exits, and keep the trap target exactly the remove invocation shown in
the diff.

In `@tools/modules/system/module_appimage.sh`:
- Around line 78-81: The script currently may resolve fusermount to an empty
path (variable fmount) and later re-run a lookup that can embed an empty
FUSERMOUNT_PROG into the generated Exec, breaking AppImage startup; fix by
resolving fusermount once into the local variable fmount, validate that fmount
is non-empty before writing to /etc/environment or embedding into any Exec
lines, and reuse that same fmount value later instead of performing a second
lookup (ensure any code that references FUSERMOUNT_PROG reads from the resolved
variable fmount and, if empty, either skip writing/embedding or fail with a
clear message).
- Around line 71-73: The pkg_install call that ensures FUSE support
("pkg_install libfuse2 fuse3") must be checked and the script should fail fast
if installation fails; update the AppImage FUSE block to capture the exit status
of pkg_install (the invocation in the "ensure FUSE support for AppImages"
block), log an error describing the failure, and exit with a non‑zero status (or
return non‑zero) instead of continuing to create the launcher when
libfuse2/fuse3 installation fails.

---

Outside diff comments:
In `@tools/include/branding/postinst/cinnamon.sh`:
- Around line 135-143: The NetworkManager block in cinnamon.sh leaves a stale
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf when systemd-networkd
becomes inactive, so update the logic around the command -v NetworkManager /
systemctl is-active --quiet systemd-networkd check to remove the file when
systemd-networkd is not active (mirror the existing stale-config cleanup
elsewhere); specifically, ensure the script either deletes
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf when systemd-networkd is
inactive or conditionally creates it only when active, and restart
NetworkManager via systemctl restart NetworkManager || true after making that
change (reference the 10-armbian-unmanaged.conf path, the NetworkManager check,
and the systemctl is-active --quiet systemd-networkd call).

In `@tools/include/branding/postinst/gnome.sh`:
- Around line 42-50: The current guard only creates
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf when systemd-networkd is
active but never removes it when networkd becomes inactive, leaving Ethernet
permanently unmanaged; update the logic in gnome.sh around the systemctl
is-active check so that if systemd-networkd is inactive and the file
/etc/NetworkManager/conf.d/10-armbian-unmanaged.conf exists you remove that file
(and then restart NetworkManager), otherwise keep the existing creation path
when systemd-networkd is active; ensure removals ignore errors (e.g., rm -f) and
always attempt to restart NetworkManager after creating or removing the file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ecbe0d8e-d3d0-4795-8efb-3cd22ff2708b

📥 Commits

Reviewing files that changed from the base of the PR and between 15b3b89 and 806a870.

📒 Files selected for processing (10)
  • tests/CINM01.conf
  • tests/GNME01.conf
  • tests/MATE01.conf
  • tests/XFCE01.conf
  • tests/gnome_desktop.conf
  • tests/xfce_desktop.conf
  • tools/include/branding/postinst/cinnamon.sh
  • tools/include/branding/postinst/gnome.sh
  • tools/include/branding/postinst/mate.sh
  • tools/modules/system/module_appimage.sh
💤 Files with no reviewable changes (5)
  • tests/CINM01.conf
  • tests/GNME01.conf
  • tests/XFCE01.conf
  • tests/xfce_desktop.conf
  • tests/gnome_desktop.conf
🚧 Files skipped from review as they are similar to previous changes (1)
  • tools/include/branding/postinst/mate.sh

Comment thread tests/MATE01.conf
Comment thread tools/modules/system/module_appimage.sh
Comment thread tools/modules/system/module_appimage.sh Outdated
@igorpecovnik
igorpecovnik merged commit 9fe33ab into main Apr 9, 2026
1 check passed
@igorpecovnik
igorpecovnik deleted the mate branch April 9, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

05 Milestone: Second quarter release Documentation Documentation changes or additions size/large PR with 250 lines or more Unit Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.