From 9b2843d225d01c732af428ae02c267bdb3eba027 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Tue, 18 Nov 2025 15:32:05 +0100 Subject: [PATCH] Desktop (mainly Gnome ) - add additional packages, small fixes and improvements --- config/desktop/common/appgroups/chat/packages | 3 -- .../common/appgroups/desktop_tools/packages | 1 + .../common/appgroups/multimedia/packages | 4 +++ .../desktop/common/appgroups/office/packages | 3 ++ .../environments/gnome/config_base/packages | 14 ++++++++ .../desktop/common/appgroups/chat/packages | 1 + .../common/usr/lib/armbian/armbian-firstlogin | 30 +++++++++++++++++- .../usr/share/armbian/armbian-user-icon.png | Bin 0 -> 12460 bytes 8 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 config/optional/architectures/amd64/_config/desktop/common/appgroups/chat/packages create mode 100644 packages/bsp/common/usr/share/armbian/armbian-user-icon.png diff --git a/config/desktop/common/appgroups/chat/packages b/config/desktop/common/appgroups/chat/packages index 197c98ab0..750362098 100644 --- a/config/desktop/common/appgroups/chat/packages +++ b/config/desktop/common/appgroups/chat/packages @@ -1,4 +1 @@ hexchat -#pidgin -#purple-discord -#purple-rocketchat diff --git a/config/desktop/common/appgroups/desktop_tools/packages b/config/desktop/common/appgroups/desktop_tools/packages index 9accdd497..8f7985c31 100644 --- a/config/desktop/common/appgroups/desktop_tools/packages +++ b/config/desktop/common/appgroups/desktop_tools/packages @@ -1,2 +1,3 @@ bleachbit +baobab gparted diff --git a/config/desktop/common/appgroups/multimedia/packages b/config/desktop/common/appgroups/multimedia/packages index b7d6f3555..5c359ce3f 100644 --- a/config/desktop/common/appgroups/multimedia/packages +++ b/config/desktop/common/appgroups/multimedia/packages @@ -2,4 +2,8 @@ celluloid eog gimp pithos +shotwell +rhythmbox +rhythmbox-data mpv +totem diff --git a/config/desktop/common/appgroups/office/packages b/config/desktop/common/appgroups/office/packages index bb3cf6350..bfba716c9 100644 --- a/config/desktop/common/appgroups/office/packages +++ b/config/desktop/common/appgroups/office/packages @@ -1,4 +1,7 @@ +evince +evince-common libreoffice libreoffice-gtk3 libreoffice-style-elementary simple-scan +sane-utils diff --git a/config/desktop/common/environments/gnome/config_base/packages b/config/desktop/common/environments/gnome/config_base/packages index 346a7495d..3ba8aac51 100644 --- a/config/desktop/common/environments/gnome/config_base/packages +++ b/config/desktop/common/environments/gnome/config_base/packages @@ -2,18 +2,32 @@ anacron at-spi2-core colord cups +cups-browsed +cups-bsd +cups-pk-helper +bolt +bluez-cups +cifs-utils +fprintd dbus-x11 dmz-cursor-theme dconf-cli eject foomatic-db-compressed-ppds fonts-noto-cjk +fonts-arphic-ukai +fonts-arphic-uming +fonts-droid-fallback +fonts-liberation-sans-narrow +fonts-noto-core +fonts-noto-mono fonts-ubuntu fonts-ubuntu-console gdebi gnome-control-center gnome-disk-utility gnome-desktop3-data +gnome-online-accounts gnome-keyring gnome-menus gnome-screenshot diff --git a/config/optional/architectures/amd64/_config/desktop/common/appgroups/chat/packages b/config/optional/architectures/amd64/_config/desktop/common/appgroups/chat/packages new file mode 100644 index 000000000..e46fba20a --- /dev/null +++ b/config/optional/architectures/amd64/_config/desktop/common/appgroups/chat/packages @@ -0,0 +1 @@ +discord diff --git a/packages/bsp/common/usr/lib/armbian/armbian-firstlogin b/packages/bsp/common/usr/lib/armbian/armbian-firstlogin index 1613cc462..6f520334b 100755 --- a/packages/bsp/common/usr/lib/armbian/armbian-firstlogin +++ b/packages/bsp/common/usr/lib/armbian/armbian-firstlogin @@ -552,6 +552,9 @@ add_user() { if ! id "$RealUserName" > /dev/null 2>&1; then break; else echo -e "Username \e[0;31m$RealUserName\x1B[0m already exists on the system."; fi done + # Set default user login icon + set_user_icon "$RealUserName" + while [ -f "/root/.not_logged_in_yet" ]; do if [ -z "$PRESET_USER_PASSWORD" ];then read_password "Create user ($username)" @@ -605,7 +608,7 @@ add_user() { # (docker-ce package creates this group automatically during postinst, but we create it early # to guarantee group membership is ready immediately after user creation.) if ! getent group docker >/dev/null; then - if ! addgroup --system docker 2>/dev/null; then + if ! addgroup --system --quiet docker 2>/dev/null; then echo "Warning: Failed to create docker group" >&2 fi fi @@ -637,6 +640,31 @@ add_user() { } +set_user_icon() { + local U="$1" + local ICON_SRC="/usr/share/armbian/armbian-user-icon.png" + local ICON_DST="/var/lib/AccountsService/icons/$U" + local META="/var/lib/AccountsService/users/$U" + + # If the icon doesn't exist, do nothing. + [ -f "$ICON_SRC" ] || return 0 + + mkdir -p /var/lib/AccountsService/icons /var/lib/AccountsService/users + + # Copy icon + install -m 0644 "$ICON_SRC" "$ICON_DST" + + # Write AccountsService metadata + cat <<- EOF > "$META" + [User] + Icon=$ICON_DST + SystemAccount=false + EOF + chown root:root "$ICON_DST" "$META" + chmod 0644 "$ICON_DST" "$META" +} + + if [[ -f /root/.not_logged_in_yet && -n $(tty) ]]; then . /root/.not_logged_in_yet diff --git a/packages/bsp/common/usr/share/armbian/armbian-user-icon.png b/packages/bsp/common/usr/share/armbian/armbian-user-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9935af29938157cbdce5f905d8a8e636c9ee1dc2 GIT binary patch literal 12460 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