From da86ab5df5cf1639689aaf241dafaee91d13d968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Pe=C4=8Dovnik?= Date: Tue, 11 Jun 2019 00:24:46 +0200 Subject: [PATCH] Cosmetics (#1404) - changed display manager to lightdm by default and remove nodm completly - desktop login manager enabled by default, toogle can be done with armbian-config - added URL to the build script and commit hash to /etc/armbian-release file - added debconf-utils,html2text,mmc-utils,sunxi-tools to the base and additional pkg list - added synaptic package manager and onboard keyboard to the desktop base - changed motd console welcome text to: Welcome to Debian Stretch with Armbian Linux 5.1.6-sunxi - added "logout" to the panel/menu - added normal users to additional groups: disk tty users games --- config/boards/pinebook-a64.conf | 2 +- config/boards/teres-a64.conf | 2 +- lib/build-all.sh | 3 +- lib/configuration.sh | 29 ++---- lib/desktop.sh | 7 +- lib/distributions.sh | 16 ++++ lib/main.sh | 89 ++++++++++++++----- lib/makeboarddeb.sh | 2 + .../desktop/lightdm/lightdm-gtk-greeter.conf | 5 +- .../xfce-perchannel-xml/xfce4-panel.xml | 2 +- .../xfce-perchannel-xml/xfce4-session.xml | 4 +- .../profile.d/armbian-check-first-login.sh | 46 +++++----- .../etc/update-motd.d/10-armbian-header | 10 +-- 13 files changed, 128 insertions(+), 89 deletions(-) diff --git a/config/boards/pinebook-a64.conf b/config/boards/pinebook-a64.conf index 724fe39e8..d8566b432 100644 --- a/config/boards/pinebook-a64.conf +++ b/config/boards/pinebook-a64.conf @@ -8,7 +8,7 @@ BOOTCONFIG_DEV="pinebook_defconfig" # MODULES="sunxi_codec sunxi_i2s sunxi_sndcodec 8723cs r8152 hall" MODULES_NEXT="" -DISPLAY_MANAGER=lightdm +DESKTOP_AUTOLOGIN="no" # KERNEL_TARGET="default,next,dev" CLI_TARGET="stretch:next,dev" diff --git a/config/boards/teres-a64.conf b/config/boards/teres-a64.conf index c2e3bfac5..8666597a2 100644 --- a/config/boards/teres-a64.conf +++ b/config/boards/teres-a64.conf @@ -5,7 +5,7 @@ BOOTCONFIG="teres_i_defconfig" # MODULES="sunxi_codec sunxi_i2s sunxi_sndcodec 8723cs r8152 hall" MODULES_NEXT="" -DISPLAY_MANAGER=lightdm +DESKTOP_AUTOLOGIN="no" # KERNEL_TARGET="next,dev" CLI_TARGET="stretch:next" diff --git a/lib/build-all.sh b/lib/build-all.sh index 4a807bad8..0ccf0315f 100644 --- a/lib/build-all.sh +++ b/lib/build-all.sh @@ -233,7 +233,8 @@ for line in "${buildlist[@]}"; do MODULES_BLACKLIST_DEV MOUNT SDCARD BOOTPATCHDIR KERNELPATCHDIR buildtext RELEASE IMAGE_TYPE OVERLAY_PREFIX ASOUND_STATE \ ATF_COMPILER ATF_USE_GCC ATFSOURCE ATFDIR ATFBRANCH ATFSOURCEDIR PACKAGE_LIST_RM NM_IGNORE_DEVICES DISPLAY_MANAGER family_tweaks_bsp_s \ CRYPTROOT_ENABLE CRYPTROOT_PASSPHRASE CRYPTROOT_SSH_UNLOCK CRYPTROOT_SSH_UNLOCK_PORT CRYPTROOT_SSH_UNLOCK_KEY_NAME ROOT_MAPPER \ - NETWORK HDMI USB WIRELESS ARMBIANMONITOR DEFAULT_CONSOLE FORCE_BOOTSCRIPT_UPDATE SERIALCON UBOOT_TOOLCHAIN2 toolchain2 + NETWORK HDMI USB WIRELESS ARMBIANMONITOR DEFAULT_CONSOLE FORCE_BOOTSCRIPT_UPDATE SERIALCON UBOOT_TOOLCHAIN2 toolchain2 \ + BUILD_REPOSITORY_URL BUILD_REPOSITORY_COMMIT DESKTOP_AUTOLOGIN read -r BOARD BRANCH RELEASE BUILD_DESKTOP <<< "${line}" ((n+=1)) diff --git a/lib/configuration.sh b/lib/configuration.sh index 5f95f46e8..0694de9da 100644 --- a/lib/configuration.sh +++ b/lib/configuration.sh @@ -22,7 +22,8 @@ EXIT_PATCHING_ERROR="" # exit patching if failed HOST="$(echo "$BOARD" | cut -f1 -d-)" # set hostname to the board ROOTFSCACHE_VERSION=4 CHROOT_CACHE_VERSION=6 -[[ -z $DISPLAY_MANAGER ]] && DISPLAY_MANAGER=nodm +BUILD_REPOSITORY_URL=$(git remote get-url $(git remote 2>/dev/null) 2>/dev/null) +BUILD_REPOSITORY_COMMIT=$(git describe --match=d_e_a_d_b_e_e_f --always --dirty 2>/dev/null) ROOTFS_CACHE_MAX=16 # max number of rootfs cache, older ones will be cleaned up # TODO: fixed name can't be used for parallel image building @@ -136,7 +137,7 @@ PACKAGE_LIST="bc bridge-utils build-essential cpufrequtils device-tree-compiler iw fake-hwclock wpasupplicant psmisc ntp parted rsync sudo curl linux-base dialog crda \ wireless-regdb ncurses-term python3-apt sysfsutils toilet u-boot-tools unattended-upgrades \ usbutils wireless-tools console-setup unicode-data openssh-server initramfs-tools \ - ca-certificates resolvconf expect iptables automake nocache \ + ca-certificates resolvconf expect iptables automake nocache debconf-utils html2text \ bison flex libwrap0-dev libssl-dev libnl-3-dev libnl-genl-3-dev" @@ -145,7 +146,7 @@ PACKAGE_LIST_ADDITIONAL="armbian-firmware alsa-utils btrfs-tools dosfstools ioto ntfs-3g vim pciutils evtest htop pv lsof libfuse2 libdigest-sha-perl \ libproc-processtable-perl aptitude dnsutils f3 haveged hdparm rfkill vlan sysstat bash-completion \ hostapd git ethtool network-manager unzip ifenslave command-not-found libpam-systemd iperf3 \ - software-properties-common libnss-myhostname f2fs-tools avahi-autoipd iputils-arping qrencode" + software-properties-common libnss-myhostname f2fs-tools avahi-autoipd iputils-arping qrencode mmc-utils sunxi-tools" # Dependent desktop packages @@ -153,29 +154,13 @@ PACKAGE_LIST_DESKTOP="xserver-xorg xserver-xorg-video-fbdev gvfs-backends gvfs-f x11-xserver-utils xfce4 lxtask xfce4-terminal thunar-volman gtk2-engines gtk2-engines-murrine gtk2-engines-pixbuf \ libgtk2.0-bin network-manager-gnome xfce4-notifyd gnome-keyring gcr libgck-1-0 p11-kit pasystray pavucontrol \ pulseaudio pavumeter bluez bluez-tools pulseaudio-module-bluetooth blueman libpam-gnome-keyring \ - libgl1-mesa-dri policykit-1 profile-sync-daemon gnome-orca numix-gtk-theme" + libgl1-mesa-dri policykit-1 profile-sync-daemon gnome-orca numix-gtk-theme synaptic onboard lightdm lightdm-gtk-greeter" # Recommended desktop packages PACKAGE_LIST_DESKTOP_RECOMMENDS="mirage galculator hexchat xfce4-screenshooter network-manager-openvpn-gnome mpv fbi cups-pk-helper \ cups geany atril xarchiver" -case $DISPLAY_MANAGER in - nodm) - PACKAGE_LIST_DISPLAY_MANAGER="nodm" - ;; - - lightdm) - PACKAGE_LIST_DISPLAY_MANAGER="lightdm lightdm-gtk-greeter" - ;; - - *) - exit_with_error "Unsupported display manager selected" "$DISPLAY_MANAGER" - ;; -esac - - - # Release specific packages case $RELEASE in @@ -270,8 +255,8 @@ cat <<-EOF >> "${DEST}"/debug/output.log ## BUILD SCRIPT ENVIRONMENT -Repository: $(git remote get-url "$(git remote 2>/dev/null)" 2>/dev/null) -Version: $(git describe --match=d_e_a_d_b_e_e_f --always --dirty 2>/dev/null) +Repository: $REPOSITORY_URL +Version: $REPOSITORY_COMMIT Host OS: $(lsb_release -sc) Host arch: $(dpkg --print-architecture) diff --git a/lib/desktop.sh b/lib/desktop.sh index f362639d6..d9dd312c7 100644 --- a/lib/desktop.sh +++ b/lib/desktop.sh @@ -116,11 +116,8 @@ create_desktop_package () desktop_postinstall () { - # stage: install display manager - display_alert "Installing" "display manager: $DISPLAY_MANAGER" "info" - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=\"--force-confold\" -y -qq install $PACKAGE_LIST_DISPLAY_MANAGER" >> "${DEST}"/debug/install.log 2>&1 - [[ -f "${SDCARD}"/etc/default/nodm ]] && sed "s/NODM_ENABLED=\(.*\)/NODM_ENABLED=false/g" -i "${SDCARD}"/etc/default/nodm - [[ -d "${SDCARD}"/etc/lightdm ]] && chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload disable lightdm.service >/dev/null 2>&1" + # disable display manager for first run + chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload disable lightdm.service >/dev/null 2>&1" # Compile Turbo Frame buffer for sunxi if [[ $LINUXFAMILY == sun* && $BRANCH == default ]]; then diff --git a/lib/distributions.sh b/lib/distributions.sh index ce5f8f202..10f2ce00e 100644 --- a/lib/distributions.sh +++ b/lib/distributions.sh @@ -108,9 +108,25 @@ install_common() # force change root password at first login chroot "${SDCARD}" /bin/bash -c "chage -d 0 root" + # change console welcome text + echo -e "${DISTRIBUTION} ${RELEASE^} with Armbian Linux \\l \n" > "${SDCARD}"/etc/issue + echo "${DISTRIBUTION} ${RELEASE^} with Armbian Linux" > "${SDCARD}"/etc/issue.net + + # enable few bash aliases enabled in Ubuntu by default to make it even + sed "s/#alias ll='ls -l'/alias ll='ls -l'/" -i "${SDCARD}"/etc/skel/.bashrc + sed "s/#alias la='ls -A'/alias la='ls -A'/" -i "${SDCARD}"/etc/skel/.bashrc + sed "s/#alias l='ls -CF'/alias l='ls -CF'/" -i "${SDCARD}"/etc/skel/.bashrc + # root user is already there. Copy bashrc there as well + cp "${SDCARD}"/etc/skel/.bashrc "${SDCARD}"/root + # display welcome message at first root login touch "${SDCARD}"/root/.not_logged_in_yet + if [[ ${DESKTOP_AUTOLOGIN} != no ]]; then + # set desktop autologin + touch "${SDCARD}"/root/.desktop_autologin + fi + # NOTE: this needs to be executed before family_tweaks local bootscript_src=${BOOTSCRIPT%%:*} local bootscript_dst=${BOOTSCRIPT##*:} diff --git a/lib/main.sh b/lib/main.sh index 2803f9c30..5584eeb0c 100644 --- a/lib/main.sh +++ b/lib/main.sh @@ -13,8 +13,10 @@ # if [[ $(basename "$0") == main.sh ]]; then + echo "Please use compile.sh to start the build process" exit 255 + fi # default umask for root is 022 so parent directories won't be group writeable without this @@ -24,8 +26,8 @@ umask 002 # destination DEST=$SRC/output -TTY_X=$(($(stty size | awk '{print $2}')-6)) # determine terminal width -TTY_Y=$(($(stty size | awk '{print $1}')-6)) # determine terminal height +TTY_X=$(($(stty size | awk '{print $2}')-6)) # determine terminal width +TTY_Y=$(($(stty size | awk '{print $1}')-6)) # determine terminal height # We'll use this title on all menus backtitle="Armbian building script, http://www.armbian.com | Author: Igor Pecovnik" @@ -40,21 +42,21 @@ backtitle="Armbian building script, http://www.armbian.com | Author: Igor Pecovn # Load libraries # shellcheck source=debootstrap-ng.sh -source "${SRC}"/lib/debootstrap-ng.sh # System specific install +source "${SRC}"/lib/debootstrap-ng.sh # system specific install # shellcheck source=image-helpers.sh -source "${SRC}"/lib/image-helpers.sh # helpers for OS image building +source "${SRC}"/lib/image-helpers.sh # helpers for OS image building # shellcheck source=distributions.sh -source "${SRC}"/lib/distributions.sh # System specific install +source "${SRC}"/lib/distributions.sh # system specific install # shellcheck source=desktop.sh -source "${SRC}"/lib/desktop.sh # Desktop specific install +source "${SRC}"/lib/desktop.sh # desktop specific install # shellcheck source=compilation.sh -source "${SRC}"/lib/compilation.sh # Patching and compilation of kernel, uboot, ATF +source "${SRC}"/lib/compilation.sh # patching and compilation of kernel, uboot, ATF # shellcheck source=makeboarddeb.sh -source "${SRC}"/lib/makeboarddeb.sh # Create board support package +source "${SRC}"/lib/makeboarddeb.sh # create board support package # shellcheck source=general.sh -source "${SRC}"/lib/general.sh # General functions +source "${SRC}"/lib/general.sh # general functions # shellcheck source=chroot-buildpackages.sh -source "${SRC}"/lib/chroot-buildpackages.sh # Building packages in chroot +source "${SRC}"/lib/chroot-buildpackages.sh # building packages in chroot # compress and remove old logs mkdir -p "${DEST}"/debug @@ -65,22 +67,31 @@ date +"%d_%m_%Y-%H_%M_%S" > "${DEST}"/debug/timestamp (cd "${DEST}"/debug && find . -name '*.tgz' -mtime +7 -delete) > /dev/null if [[ $PROGRESS_DISPLAY == none ]]; then + OUTPUT_VERYSILENT=yes + elif [[ $PROGRESS_DISPLAY == dialog ]]; then + OUTPUT_DIALOG=yes + fi + if [[ $PROGRESS_LOG_TO_FILE != yes ]]; then unset PROGRESS_LOG_TO_FILE; fi SHOW_WARNING=yes if [[ $USE_CCACHE != no ]]; then + CCACHE=ccache export PATH="/usr/lib/ccache:$PATH" # private ccache directory to avoid permission issues when using build script with "sudo" # see https://ccache.samba.org/manual.html#_sharing_a_cache for alternative solution [[ $PRIVATE_CCACHE == yes ]] && export CCACHE_DIR=$SRC/cache/ccache + else + CCACHE="" + fi # Check and install dependencies, directory structure and settings @@ -89,37 +100,44 @@ prepare_host # if KERNEL_ONLY, KERNEL_CONFIGURE, BOARD, BRANCH or RELEASE are not set, display selection menu if [[ -z $KERNEL_ONLY ]]; then + options+=("yes" "U-boot and kernel packages") options+=("no" "Full OS image for flashing") - KERNEL_ONLY=$(dialog --stdout --title "Choose an option" --backtitle "$backtitle" --no-tags --menu "Select what to build" \ - $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") + KERNEL_ONLY=$(dialog --stdout --title "Choose an option" --backtitle "$backtitle" --no-tags \ + --menu "Select what to build" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") unset options [[ -z $KERNEL_ONLY ]] && exit_with_error "No option selected" fi if [[ -z $KERNEL_CONFIGURE ]]; then + options+=("no" "Do not change the kernel configuration") options+=("yes" "Show a kernel configuration menu before compilation") - KERNEL_CONFIGURE=$(dialog --stdout --title "Choose an option" --backtitle "$backtitle" --no-tags --menu "Select the kernel configuration" \ - $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") + KERNEL_CONFIGURE=$(dialog --stdout --title "Choose an option" --backtitle "$backtitle" --no-tags \ + --menu "Select the kernel configuration" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") unset options [[ -z $KERNEL_CONFIGURE ]] && exit_with_error "No option selected" fi if [[ -z $BOARD ]]; then + WIP_STATE=supported WIP_BUTTON='CSC/WIP/EOS/TVB' STATE_DESCRIPTION=' - boards with high level of software maturity' temp_rc=$(mktemp) + while true; do options=() if [[ $WIP_STATE == supported ]]; then + for board in "${SRC}"/config/boards/*.conf; do options+=("$(basename "${board}" | cut -d'.' -f1)" "$(head -1 "${board}" | cut -d'#' -f2)") done + else + for board in "${SRC}"/config/boards/*.wip; do options+=("$(basename "${board}" | cut -d'.' -f1)" "\Z1(WIP)\Zn $(head -1 "${board}" | cut -d'#' -f2)") done @@ -132,7 +150,9 @@ if [[ -z $BOARD ]]; then for board in "${SRC}"/config/boards/*.tvb; do options+=("$(basename "${board}" | cut -d'.' -f1)" "\Z1(TVB)\Zn $(head -1 "${board}" | cut -d'#' -f2)") done + fi + if [[ $WIP_STATE != supported ]]; then cat <<-'EOF' > "${temp_rc}" dialog_color = (RED,WHITE,OFF) @@ -145,22 +165,27 @@ if [[ -z $BOARD ]]; then else echo > "${temp_rc}" fi - BOARD=$(DIALOGRC=$temp_rc dialog --stdout --title "Choose a board" --backtitle "$backtitle" --scrollbar --colors \ - --extra-label "Show $WIP_BUTTON" --extra-button --menu "Select the target board. Displaying:\n$STATE_DESCRIPTION" \ - $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") + BOARD=$(DIALOGRC=$temp_rc dialog --stdout --title "Choose a board" --backtitle "$backtitle" --scrollbar \ + --colors --extra-label "Show $WIP_BUTTON" --extra-button \ + --menu "Select the target board. Displaying:\n$STATE_DESCRIPTION" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") STATUS=$? if [[ $STATUS == 3 ]]; then if [[ $WIP_STATE == supported ]]; then + [[ $SHOW_WARNING == yes ]] && show_developer_warning - STATE_DESCRIPTION=' - \Z1(CSC)\Zn - Community Supported Configuration\n - \Z1(WIP)\Zn - Work In Progress\n - \Z1(EOS)\Zn - End Of Support\n - \Z1(TVB)\Zn - TV boxes' + STATE_DESCRIPTION=' - \Z1(CSC)\Zn - Community Supported Configuration\n - \Z1(WIP)\Zn - Work In Progress + \n - \Z1(EOS)\Zn - End Of Support\n - \Z1(TVB)\Zn - TV boxes' WIP_STATE=unsupported WIP_BUTTON='matured' EXPERT=yes + else + STATE_DESCRIPTION=' - boards with high level of software maturity' WIP_STATE=supported WIP_BUTTON='CSC/WIP/EOS' EXPERT=no + fi continue elif [[ $STATUS == 0 ]]; then @@ -190,6 +215,7 @@ LINUXFAMILY="${BOARDFAMILY}" [[ -z $KERNEL_TARGET ]] && exit_with_error "Board configuration does not define valid kernel config" if [[ -z $BRANCH ]]; then + options=() [[ $KERNEL_TARGET == *default* ]] && options+=("default" "Vendor provided / legacy (3.4.x - 4.4.x)") [[ $KERNEL_TARGET == *next* ]] && options+=("next" "Mainline (@kernel.org) (4.x)") @@ -205,11 +231,15 @@ if [[ -z $BRANCH ]]; then unset options [[ -z $BRANCH ]] && exit_with_error "No kernel branch selected" [[ $BRANCH == dev && $SHOW_WARNING == yes ]] && show_developer_warning + else + [[ $KERNEL_TARGET != *$BRANCH* ]] && exit_with_error "Kernel branch not defined for this board" "$BRANCH" + fi if [[ $KERNEL_ONLY != yes && -z $RELEASE ]]; then + options=() [[ $EXPERT = yes ]] && options+=("jessie" "Debian 8 Jessie / unsupported") options+=("stretch" "Debian 9 Stretch") @@ -218,20 +248,23 @@ if [[ $KERNEL_ONLY != yes && -z $RELEASE ]]; then options+=("bionic" "Ubuntu Bionic 18.04 LTS") [[ $EXPERT = yes ]] && options+=("disco" "Ubuntu Disco 19.04 / unsupported") - RELEASE=$(dialog --stdout --title "Choose a release" --backtitle "$backtitle" --menu "Select the target OS release" \ - $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") + RELEASE=$(dialog --stdout --title "Choose a release" --backtitle "$backtitle" \ + --menu "Select the target OS release" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") unset options [[ -z $RELEASE ]] && exit_with_error "No release selected" + fi if [[ $KERNEL_ONLY != yes && -z $BUILD_DESKTOP ]]; then + options=() options+=("no" "Image with console interface (server)") options+=("yes" "Image with desktop environment") - BUILD_DESKTOP=$(dialog --stdout --title "Choose image type" --backtitle "$backtitle" --no-tags --menu "Select the target image type" \ - $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") + BUILD_DESKTOP=$(dialog --stdout --title "Choose image type" --backtitle "$backtitle" --no-tags \ + --menu "Select the target image type" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}") unset options [[ -z $BUILD_DESKTOP ]] && exit_with_error "No option selected" + fi #shellcheck source=configuration.sh @@ -240,9 +273,13 @@ source "${SRC}"/lib/configuration.sh # optimize build time with 100% CPU usage CPUS=$(grep -c 'processor' /proc/cpuinfo) if [[ $USEALLCORES != no ]]; then + CTHREADS="-j$((CPUS + CPUS/2))" + else + CTHREADS="-j1" + fi start=$(date +%s) @@ -342,5 +379,11 @@ fi end=$(date +%s) runtime=$(((end-start)/60)) display_alert "Runtime" "$runtime min" "info" + # Make it easy to repeat build by displaying build options used -display_alert "Repeat Build Options" "BOARD=${BOARD} BRANCH=${BRANCH} RELEASE=${RELEASE} BUILD_DESKTOP=${BUILD_DESKTOP} KERNEL_ONLY=${KERNEL_ONLY} KERNEL_CONFIGURE=no" "info" +display_alert "Repeat Build Options" "./compile.sh BOARD=${BOARD} BRANCH=${BRANCH} \ +$([[ -n $RELEASE ]] && echo "RELEASE=${RELEASE} ")\ +$([[ -n $BUILD_DESKTOP ]] && echo "BUILD_DESKTOP=${BUILD_DESKTOP} ")\ +$([[ -n $KERNEL_ONLY ]] && echo "KERNEL_ONLY=${KERNEL_ONLY} ")\ +$([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE} ")\ +" "info" diff --git a/lib/makeboarddeb.sh b/lib/makeboarddeb.sh index d067e21db..849ac2f95 100644 --- a/lib/makeboarddeb.sh +++ b/lib/makeboarddeb.sh @@ -284,6 +284,8 @@ create_board_package() BOARD=$BOARD BOARD_NAME="$BOARD_NAME" BOARDFAMILY=${BOARDFAMILY} + BUILD_REPOSITORY_URL=${BUILD_REPOSITORY_URL} + BUILD_REPOSITORY_COMMIT=${BUILD_REPOSITORY_COMMIT} VERSION=$REVISION LINUXFAMILY=$LINUXFAMILY BRANCH=$BRANCH diff --git a/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf b/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf index e6cc8e319..4c86874ac 100644 --- a/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf +++ b/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf @@ -3,7 +3,8 @@ background = #888a85 theme-name = Numix icon-theme-name = Numix default-user-image=/usr/share/pixmaps/armbian.png -indicators = ~language;~power +indicators = ~language;~power;~a11y screensaver-timeout = 0 font-name = Sans 11 -user-background = false \ No newline at end of file +user-background = false +keyboard = onboard --theme=ModelM diff --git a/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml index dd52f10bb..e5e76c17e 100644 --- a/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ b/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -36,7 +36,7 @@ - + diff --git a/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml index 252fc4e8b..0305c1fb1 100644 --- a/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ b/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -26,8 +26,8 @@ - + - \ No newline at end of file + diff --git a/packages/bsp/common/etc/profile.d/armbian-check-first-login.sh b/packages/bsp/common/etc/profile.d/armbian-check-first-login.sh index becf33d37..511d435fb 100644 --- a/packages/bsp/common/etc/profile.d/armbian-check-first-login.sh +++ b/packages/bsp/common/etc/profile.d/armbian-check-first-login.sh @@ -46,12 +46,14 @@ add_user() [ -z "$RealUserName" ] && return echo "Trying to add user $RealUserName" adduser $RealUserName || return - for additionalgroup in sudo netdev audio video dialout plugdev input bluetooth systemd-journal ssh; do + for additionalgroup in sudo netdev audio video disk tty users games dialout plugdev input bluetooth systemd-journal ssh; do usermod -aG ${additionalgroup} ${RealUserName} 2>/dev/null done + # fix for gksu in Xenial touch /home/$RealUserName/.Xauthority chown $RealUserName:$RealUserName /home/$RealUserName/.Xauthority + RealName="$(awk -F":" "/^${RealUserName}:/ {print \$5}" /dev/null) - desktop_lightdm=$(dpkg-query -W -f='${db:Status-Abbrev}\n' lightdm 2>/dev/null) - if [ -n "$desktop_nodm" ]; then DESKTOPDETECT="nodm"; fi - if [ -n "$desktop_lightdm" ]; then DESKTOPDETECT="lightdm"; fi + # detect lightdm + desktop_lightdm=$(dpkg-query -W -f='${db:Status-Abbrev}\n' lightdm 2>/dev/null) if [ "$IMAGE_TYPE" != "nightly" ]; then echo -e "\n\e[0;31mThank you for choosing Armbian! Support: \e[1m\e[39mwww.armbian.com\x1B[0m\n" @@ -85,7 +84,7 @@ if [ -f /root/.not_logged_in_yet ] && [ -n "$BASH_VERSION" ] && [ "$-" != "${-#* echo -e "\nThis image is provided \e[0;31mAS IS\x1B[0m with \e[0;31mNO WARRANTY\x1B[0m and \e[0;31mNO END USER SUPPORT!\x1B[0m.\n" fi echo "Creating a new user account. Press to abort" - [ -n "$DESKTOPDETECT" ] && echo "Desktop environment will not be enabled if you abort the new user creation" + [ -n "$desktop_lightdm" ] && echo "Desktop environment will not be enabled if you abort the new user creation" trap check_abort INT while [ -f "/root/.not_logged_in_yet" ]; do add_user @@ -105,21 +104,17 @@ if [ -f /root/.not_logged_in_yet ] && [ -n "$BASH_VERSION" ] && [ "$-" != "${-#* fi fi # check whether desktop environment has to be considered - if [ "$DESKTOPDETECT" = nodm ] && [ -n "$RealName" ] ; then - sed -i "s/NODM_USER=\(.*\)/NODM_USER=${RealUserName}/" /etc/default/nodm - sed -i "s/NODM_ENABLED=\(.*\)/NODM_ENABLED=true/g" /etc/default/nodm - if [[ -f /var/run/resize2fs-reboot ]]; then - # Let the user reboot now otherwise start desktop environment - printf "\n\n\e[0;91mWarning: a reboot is needed to finish resizing the filesystem \x1B[0m \n" - printf "\e[0;91mPlease reboot the system now \x1B[0m \n\n" - elif [ -z "$ConfigureDisplay" ] || [ "$ConfigureDisplay" = "n" ] || [ "$ConfigureDisplay" = "N" ]; then - echo -e "\n\e[1m\e[39mNow starting desktop environment...\x1B[0m\n" - sleep 3 - service nodm stop - sleep 1 - service nodm start - fi - elif [ "$DESKTOPDETECT" = lightdm ] && [ -n "$RealName" ] ; then + if [ -n "$desktop_lightdm" ] && [ -n "$RealName" ] ; then + + # 1st run goes without login + mkdir -p /etc/lightdm/lightdm.conf.d + cat <<-EOF > /etc/lightdm/lightdm.conf.d/22-armbian-autologin.conf + [Seat:*] + autologin-user=$RealUserName + autologin-user-timeout=0 + user-session=xfce + EOF + ln -sf /lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service if [[ -f /var/run/resize2fs-reboot ]]; then # Let the user reboot now otherwise start desktop environment @@ -129,6 +124,11 @@ if [ -f /root/.not_logged_in_yet ] && [ -n "$BASH_VERSION" ] && [ "$-" != "${-#* echo -e "\n\e[1m\e[39mNow starting desktop environment...\x1B[0m\n" sleep 1 service lightdm start 2>/dev/null + if [ -f /root/.desktop_autologin ]; then + rm /root/.desktop_autologin + else + (sleep 20; rm /etc/lightdm/lightdm.conf.d/22-armbian-autologin.conf) & + fi # logout if logged at console [[ -n $(who -la | grep root | grep tty1) ]] && exit 1 fi @@ -139,4 +139,4 @@ if [ -f /root/.not_logged_in_yet ] && [ -n "$BASH_VERSION" ] && [ "$-" != "${-#* printf "\e[0;91mPlease reboot the system now \x1B[0m \n\n" fi fi -fi \ No newline at end of file +fi diff --git a/packages/bsp/common/etc/update-motd.d/10-armbian-header b/packages/bsp/common/etc/update-motd.d/10-armbian-header index 2f1246c01..be1397569 100755 --- a/packages/bsp/common/etc/update-motd.d/10-armbian-header +++ b/packages/bsp/common/etc/update-motd.d/10-armbian-header @@ -22,11 +22,5 @@ done . /etc/armbian-release KERNELID=$(uname -r) - -if [ $(echo $BOARD_NAME | wc -c) -ge 17 ]; then - TERM=linux toilet -f standard -F metal $(echo $BOARD_NAME | sed 's/Orange Pi/OPi/' | sed 's/NanoPi/NPi/') -else - TERM=linux toilet -f standard -F metal $BOARD_NAME -fi - -printf '\nWelcome to \e[0;91mARMBIAN\x1B[0m %s %s %s %s\n' "$VERSION $IMAGE_TYPE $PRETTY_NAME $KERNELID" +TERM=linux toilet -f standard -F metal $(echo $BOARD_NAME | sed 's/Orange Pi/OPi/' | sed 's/NanoPi/NPi/' | sed 's/Banana Pi/BPi/') +echo -e "Welcome to $(echo $NAME | cut -d' ' -f1) $(if [[ $ID == debian ]]; then echo ${PRETTY_NAME##*\(} | rev | cut -c2- | rev | sed 's/.*/\u&/'; else echo -n ${VERSION_CODENAME^};fi) with \e[0;91mArmbian Linux\x1B[0m $KERNELID"