cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

Sous Windows, les raccourcis permettent d’accĂ©der Ă  un fichier ou un dossier en particulier depuis le bureau. C’est une fonctionnalitĂ© pratique que beaucoup d’utilisateurs ont l’habitude d’utiliser.


ඏ

Sous Linux Mint par exemple, il n’y a pas de « raccourcis » vers le dossier document de l’utilisateur et cela peu ĂȘtre dĂ©routant pour certaines personnes.

Initialement, pour aider les nouveaux utilisateurs, je mettais des « liens symboliques », mais il y a des cas oĂč cela pose un problĂšme : le chemin d’accĂšs au fichier change, et cela est gĂȘnant en particulier lorsque ce lien est celui d’un rĂ©pertoire. Un exemple concret, un fichier projet kdenlive contient des chemins vers des images ou des vidĂ©os, changer le chemin du fichier projet peut avoir des consĂ©quences.

J’ai longtemps Ă©tĂ© critique sur les faux-liens que sont les raccourcis Windows, ils n’ont en fait pas le mĂȘme usage que les « liens ». Un raccourci doit ĂȘtre vu comme le moyen de se tĂ©lĂ©porter Ă  un endroit, un lien c’est un alias, un autre accĂšs Ă  la mĂȘme chose.

Et dans le cas des icĂŽnes du bureau, ce que l’on veut c’est bien un moyen de se tĂ©lĂ©porter vers cette autre endroit et donc avoir un raccourci.

Je parle de faux-lien, car il s’agit d’un fichier intermĂ©diaire qui est interprĂ©tĂ© par l’explorateur de fichiers Windows et en aucun cas qui permet Ă  un programme d’accĂ©der Ă  une ressource dĂ©signĂ©e par ce lien sans une rĂ©solution spĂ©cifique. Au contraire, les liens sous Linux sont transparents pour les applications, on peut du coup accĂ©der Ă  un mĂȘme rĂ©pertoire par deux chemin par exemple.


ඏ

Comment créer un raccourci à la windows sous Linux :

Voici une fonction bash qui permet cela en utilisant les xdg-utils de freedesktop :

function create_shortcut {
  local -r shortcut_name="$1"
  local -r folder_path="$2"
  local -r icon="$3"
  local -r comment="$4"
  local    shortcut_filename=

  if [ -z "${shortcut_name}" ] ; then
    echo "*** Parameter shortcut_name missing..." >&2
    return 1
  fi
  if [ -z "${folder_path}" ] ; then
    echo "*** Parameter folder_path missing..." >&2
    return 1
  fi
  if [ -z "${icon}" ] ; then
    echo "*** Parameter icon missing..." >&2
    return 1
  fi

  if [ ! -e "${folder_path}" ] ; then
    echo "*** Path not found: '${folder_path}'" >&2
    return 1
  fi

  shortcut_filename="$( xdg-user-dir DESKTOP )/${shortcut_name}.desktop"

  cat <<EOF >"${shortcut_filename}"
[Desktop Entry]
Name=${shortcut_name}
Exec=xdg-open '$( realpath "${folder_path}" )'
Comment=${comment}

Icon=${icon}
Type=Application
Terminal=false
EOF

  cat <<EOF
  xdg-desktop-icon install --novendor "${shortcut_filename}"
EOF
  xdg-desktop-icon install --novendor "${shortcut_filename}"
  echo $?
}

L’usage de cette premiùre fonction peut se faire ainsi :

create_shortcut 'Mes Documents' "$( xdg-user-dir DOCUMENTS )" 'folder-documents' 'Mes documents'

Voici deux autres fonctions utilisant celle donnĂ©e plus haut, qui permettent d’avoir une configuration un peu plus automatisĂ©e.

function create_shortcut_for_commons {
  local -r xdg_name="$1"
  local -r icon_name="$2"
  local    shortcut_name=
  local    path=

  path="$( xdg-user-dir "${xdg_name}" )" || return 1
  shortcut_name="$( basename "${path}" )"

  local -r comment="${path}"

  create_shortcut "${shortcut_name}" "${path}" "${icon_name}" "${comment}"
}

function apply_custom_config {
  local line=
  local xdg_name=
  local icon_name=

  while read -r line ; do
    if [ -n "${line}" ] ; then
      xdg_name="$( cut -d ':' -f1 <<<"${line}" )"
      icon_name="$( cut -d ':' -f2 <<<"${line}" )"

      cat <<EOF
      create_shortcut_for_commons "${xdg_name}" "${icon_name}"
EOF
      create_shortcut_for_commons "${xdg_name}" "${icon_name}"
    fi
  done <<<"${SDG_FOLDERS_CUSTOM_CONFIG}"
}

Pour exĂ©cuter l’ensemble, il faut dĂ©finir la configuration et lancer la fonction apply_custom_config comme suit :

declare -gr SDG_FOLDERS_CUSTOM_CONFIG='
DOWNLOAD:folder-download
DOCUMENTS:folder-documents
MUSIC:folder-music
PICTURES:folder-pictures
VIDEOS:folder-video
'

apply_custom_config

Une premiĂšre partie contenant le nom d’un rĂ©pertoire commun suivi du caractĂšre : puis du nom de l’icĂŽne souhaitĂ©.

La liste des valeurs possibles pour le nom est la suivante : DESKTOP, DOWNLOAD, TEMPLATES, PUBLICSHARE, DOCUMENTS, MUSIC, PICTURES, VIDEOS.

Il est aussi possible d’ajouter des raccourcis vers des dossiers (ou des fichiers) comme suit :

create_shortcut 'Mon NextCloud' ~/Nextcloud 'folder-remote' 'Mon compte NextCloud'

La syntaxe étant :

create_shortcut 〈①NOM_DU_RACCOURCISâŒȘ âŒ©â‘ĄCHEMIN_VERS_LA_CIBLEâŒȘ âŒ©â‘ąNOM_DE_L_ICÔNEâŒȘ âŒ©â‘ŁCOMMENTAIREâŒȘ

ඏ

Nom des icĂŽnes disponibles sur votre systĂšme

Pour avoir une idĂ©e des noms d’icĂŽne qu’il est possible d’utiliser vous devez commencer par la documentation : Icon Naming Specification.

À dĂ©faut, je vous propose d’utiliser l’une des lignes de code ci-dessous :

Solution la plus rapide Ă  l’exĂ©cution :

find /usr/share/icons/ -type f -exec basename {} \; | rev | cut -d '.' -f2- | rev  | sort | uniq

Solution un peu plus lente, mais permettant d’ĂȘtre modifiĂ©e plus facilement selon vos besoins.

while read -r filename ; do basename "${filename}" | rev | cut -d '.' -f2- | rev ; done < <( find /usr/share/icons/ -type f ) | sort | uniq

ඏ

Références

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog