cClaude.rocks ☕ Le blog

[Nouvelles technologies, 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 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 - 2022 | 🏠 Accueil du domaine | 🏡 Accueil du blog