install.arduino.sh
If you want to send us your comments, please do so. Thanks
More on comments
install.arduino.sh
This is the by us modified install script for Arduino. Based on the Arduino IDE version 1.8.13
To use it
- scrape the code from the screen (for security reasons we can not supply a file for download)
- paste the code in a text editor
- save it as “/opt/arduino-1.8.13-linux64/install.arduino.sh”
- cd /opt/arduino-1.8.13-linux64
- chmod 740 install.arduino.sh
- ./install.arduino.sh
#!/bin/bash # This script adds a menu item, icons and mime type for Arduino for the current # user. If possible, it will use the xdg-utils - or fall back to just creating # and copying a desktop file to the user's dir. # If called with the "-u" option, it will undo the changes. # Source of the original: https://Arduino.cc # Check if sudo is installed if [[ -z $(which sudo) ]]; then echo sudo is not installed. Please install sudo. The script will exit now exit 9 fi # Check who wants to install the Arduino IDE if [[ $UID -eq 0 ]]; then # user root echo Run this script as normal user, not as root. The script will exit now exit 9 fi # Check if arduino-linux-setup.sh exists in the current directory if ! [[ -f arduino-linux-setup.sh ]]; then echo arduino-linux-setup.sh does not exist. echo Please run this script from the directory where the Arduino IDE is extracted in. echo The script will exit now. exit 9 fi if [ -n ${SUDO_USER} ]; then echo SUDO_USER: $SUDO_USER is probaly an empty string #chown ${SUDO_USER} "${XDG_DESKTOP_DIR}/${RESOURCE_NAME}.desktop" else echo SUDO_USER: $SUDO_USER is probaly an empty string fi exit # Resource name to use (including vendor prefix) RESOURCE_NAME=arduino-arduinoide # Get absolute path from which this script file was executed # (Could be changed to "pwd -P" to resolve symlinks to their target) SCRIPT_PATH=$( cd $(dirname $0) ; pwd ) cd "${SCRIPT_PATH}" # Default mode is to install. UNINSTALL=false # If possible, get location of the desktop folder. Default to ~/Desktop XDG_DESKTOP_DIR="${HOME}/Desktop" if [ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/user-dirs.dirs" ]; then . "${XDG_CONFIG_HOME:-${HOME}/.config}/user-dirs.dirs" fi # Install using xdg-utils xdg_install_f() { # Create a temp dir accessible by all users TMP_DIR=`mktemp --directory` # Create *.desktop file using the existing template file sed -e "s,<BINARY_LOCATION>,\"${SCRIPT_PATH}/arduino\",g" \ -e "s,<ICON_NAME>,${RESOURCE_NAME},g" "${SCRIPT_PATH}/lib/desktop.template" > "${TMP_DIR}/${RESOURCE_NAME}.desktop" # Install the icon files using name and resolutions xdg-icon-resource install --context apps --size 16 "${SCRIPT_PATH}/lib/icons/16x16/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 24 "${SCRIPT_PATH}/lib/icons/24x24/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 32 "${SCRIPT_PATH}/lib/icons/32x32/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 48 "${SCRIPT_PATH}/lib/icons/48x48/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 64 "${SCRIPT_PATH}/lib/icons/64x64/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 72 "${SCRIPT_PATH}/lib/icons/72x72/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 96 "${SCRIPT_PATH}/lib/icons/96x96/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 128 "${SCRIPT_PATH}/lib/icons/128x128/apps/arduino.png" $RESOURCE_NAME xdg-icon-resource install --context apps --size 256 "${SCRIPT_PATH}/lib/icons/256x256/apps/arduino.png" $RESOURCE_NAME # Install the created *.desktop file xdg-desktop-menu install "${TMP_DIR}/${RESOURCE_NAME}.desktop" # Create icon on the desktop xdg-desktop-icon install "${TMP_DIR}/${RESOURCE_NAME}.desktop" # Install Arduino mime type xdg-mime install "${SCRIPT_PATH}/lib/${RESOURCE_NAME}.xml" # Install icons for mime type xdg-icon-resource install --context mimetypes --size 16 "${SCRIPT_PATH}/lib/icons/16x16/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 24 "${SCRIPT_PATH}/lib/icons/24x24/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 32 "${SCRIPT_PATH}/lib/icons/32x32/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 48 "${SCRIPT_PATH}/lib/icons/48x48/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 64 "${SCRIPT_PATH}/lib/icons/64x64/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 72 "${SCRIPT_PATH}/lib/icons/72x72/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 96 "${SCRIPT_PATH}/lib/icons/96x96/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 128 "${SCRIPT_PATH}/lib/icons/128x128/apps/arduino.png" text-x-arduino xdg-icon-resource install --context mimetypes --size 256 "${SCRIPT_PATH}/lib/icons/256x256/apps/arduino.png" text-x-arduino # Make Arduino IDE the default application for *.ino xdg-mime default ${RESOURCE_NAME}.desktop text/x-arduino if [ -n ${SUDO_USER} ]; then chown ${SUDO_USER} "${XDG_DESKTOP_DIR}/${RESOURCE_NAME}.desktop" else echo SUDO_USER: $SUDO_USER is probaly an empty string fi # Add symlink for arduino so it's in users path echo "" # Ensure password request message is on new line if ! ln -s ${SCRIPT_PATH}/arduino /usr/local/bin/arduino; then echo "Adding symlink failed. Hope that's OK. If not then rerun as root with sudo." fi # Clean up rm "${TMP_DIR}/${RESOURCE_NAME}.desktop" rmdir "$TMP_DIR" echo "Launching arduino-linux-setup.sh script" ./arduino-linux-setup.sh $(whoami) } # Install by simply copying desktop file (fallback) simple_install_f() { # Create a temp dir accessible by all users TMP_DIR=`mktemp --directory` # Create *.desktop file using the existing template file sed -e "s,<BINARY_LOCATION>,${SCRIPT_PATH}/arduino,g" \ -e "s,<ICON_NAME>,${SCRIPT_PATH}/lib/arduino.png,g" "${SCRIPT_PATH}/lib/desktop.template" > "${TMP_DIR}/${RESOURCE_NAME}.desktop" mkdir -p "${HOME}/.local/share/applications" cp "${TMP_DIR}/${RESOURCE_NAME}.desktop" "${HOME}/.local/share/applications/" mkdir -p "${HOME}/.local/share/metainfo" cp "${SCRIPT_PATH}/lib/appdata.xml" "${HOME}/.local/share/metainfo/${RESOURCE_NAME}.appdata.xml" # Copy desktop icon if desktop dir exists (was found) if [ -d "${XDG_DESKTOP_DIR}" ]; then cp "${TMP_DIR}/${RESOURCE_NAME}.desktop" "${XDG_DESKTOP_DIR}/" # Altering file permissions to avoid "Untrusted Application Launcher" error on Ubuntu chmod u+x "${XDG_DESKTOP_DIR}/${RESOURCE_NAME}.desktop" if [ -n ${SUDO_USER} ]; then chown ${SUDO_USER} "${XDG_DESKTOP_DIR}/${RESOURCE_NAME}.desktop" fi fi # Add symlink for arduino so it's in users path echo "" # Ensure password request message is on new line if ! ln -s ${SCRIPT_PATH}/arduino /usr/local/bin/arduino; then echo "Adding symlink failed. Hope that's OK. If not then rerun as root with sudo." fi # Clean up temp dir rm "${TMP_DIR}/${RESOURCE_NAME}.desktop" rmdir "${TMP_DIR}" } # Uninstall using xdg-utils xdg_uninstall_f() { # Remove *.desktop file xdg-desktop-menu uninstall ${RESOURCE_NAME}.desktop # Remove icon from desktop xdg-desktop-icon uninstall ${RESOURCE_NAME}.desktop # Remove icons xdg-icon-resource uninstall --size 16 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 24 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 32 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 48 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 64 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 72 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 96 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 128 ${RESOURCE_NAME} xdg-icon-resource uninstall --size 256 ${RESOURCE_NAME} # Remove MIME type icons xdg-icon-resource uninstall --size 16 text-x-arduino xdg-icon-resource uninstall --size 24 text-x-arduino xdg-icon-resource uninstall --size 32 text-x-arduino xdg-icon-resource uninstall --size 48 text-x-arduino xdg-icon-resource uninstall --size 64 text-x-arduino xdg-icon-resource uninstall --size 72 text-x-arduino xdg-icon-resource uninstall --size 96 text-x-arduino xdg-icon-resource uninstall --size 128 text-x-arduino xdg-icon-resource uninstall --size 256 text-x-arduino # Remove Arduino MIME type xdg-mime uninstall "${SCRIPT_PATH}/lib/${RESOURCE_NAME}.xml" # Remove symlink for arduino echo "" # Ensure password request message is on new line if [ -f /usr/local/bin/arduino ]; then rm /usr/local/bin/arduino || echo "Removing symlink failed. Hope that's OK. If not then rerun as root with sudo." fi } # Uninstall by simply removing desktop files (fallback), incl. old one simple_uninstall_f() { # delete legacy cruft .desktop file if [ -f "${HOME}/.local/share/applications/arduino.desktop" ]; then rm "${HOME}/.local/share/applications/arduino.desktop" fi # delete another legacy .desktop file if [ -f "${HOME}/.local/share/applications/arduino-arduinoide.desktop" ]; then rm "${HOME}/.local/share/applications/arduino-arduinoide.desktop" fi if [ -f "${HOME}/.local/share/applications/${RESOURCE_NAME}.desktop" ]; then rm "${HOME}/.local/share/applications/${RESOURCE_NAME}.desktop" fi if [ -f "${HOME}/.local/share/metainfo/${RESOURCE_NAME}.appdata.xml" ]; then rm "${HOME}/.local/share/metainfo/${RESOURCE_NAME}.appdata.xml" fi if [ -f "${XDG_DESKTOP_DIR}/arduino.desktop" ]; then rm "${XDG_DESKTOP_DIR}/arduino.desktop" fi if [ -f "${XDG_DESKTOP_DIR}/${RESOURCE_NAME}.desktop" ]; then rm "${XDG_DESKTOP_DIR}/${RESOURCE_NAME}.desktop" fi # Remove symlink for arduino echo "" # Ensure password request message is on new line if [ -f /usr/local/bin/arduino ]; then rm /usr/local/bin/arduino || echo "Removing symlink failed. Hope that's OK. If not then rerun as root with sudo." fi } # Update desktop file and mime databases (if possible) updatedbs_f() { if [ -d "${HOME}/.local/share/applications" ]; then if command -v update-desktop-database > /dev/null; then update-desktop-database "${HOME}/.local/share/applications" fi fi if [ -d "${HOME}/.local/share/mime" ]; then if command -v update-mime-database > /dev/null; then update-mime-database "${HOME}/.local/share/mime" fi fi } # Check availability of xdg-utils xdg_exists_f() { if ! command -v xdg-icon-resource > /dev/null; then return 1; fi if ! command -v xdg-desktop-menu > /dev/null; then return 1; fi if ! command -v xdg-desktop-icon > /dev/null; then return 1; fi if ! command -v xdg-mime > /dev/null; then return 1; fi return 0 } # Shows a description of the available options display_help_f() { printf "\nThis script will add a Arduino IDE desktop shortcut, menu item,\n" printf "icons and file associations for the current user.\n" if ! xdg_exists_f; then printf "\nxdg-utils are recommended to be installed, so this script can use them.\n" fi printf "\nOptional arguments are:\n\n" printf "\t-u, --uninstall\t\tRemoves shortcut, menu item and icons.\n\n" printf "\t-h, --help\t\tShows this help again.\n\n" } # Check for provided arguments while [ $# -gt 0 ] ; do ARG="${1}" case $ARG in -u|--uninstall) UNINSTALL=true shift ;; -h|--help) display_help_f exit 0 ;; *) printf "\nInvalid option -- '${ARG}'\n" display_help_f exit 1 ;; esac done # If possible, use xdg-utils, if not, use a more basic approach if xdg_exists_f; then if [ ${UNINSTALL} = true ]; then printf "Removing desktop shortcut and menu item for Arduino IDE..." xdg_uninstall_f simple_uninstall_f else printf "Adding desktop shortcut, menu item and file associations for Arduino IDE..." xdg_uninstall_f simple_uninstall_f xdg_install_f fi else if [ ${UNINSTALL} = true ]; then printf "Removing desktop shortcut and menu item for Arduino IDE..." simple_uninstall_f else printf "Adding desktop shortcut and menu item for Arduino IDE..." simple_uninstall_f simple_install_f fi fi updatedbs_f printf " done!\n" exit 0
Main subjects on this wiki: Linux, Debian, HTML, Microcontrollers, Privacy
RSS
Disclaimer
Privacy statement
Bugs statement
Cookies
Copyright © : 2014 - 2024 Webevaluation.nl and the authors
Changes reserved.
install.arduino.sh.txt · Last modified: 27-06-2020 19:12 by wim