Postez ici vos trucs & astuces.
Répondre

raccourci bureau sous lxde une soluce maison éfficace

#1Messageil y a 7 ans

je viens de tester le seul script que j'ai pondu dans ma vie de linuxien et que j'ai mis plusieurs moi à écrire ( noob power ) il sert a créer des raccourcis sur le bureau lxde , vers le dossier de son choix, il marche impec sous manjaro , ont peut donc choisir l'icone du dossier , ça fonctionne avec pcmanfm et zenity si certains sont interessés voici le lien: attention il faut copier coller le code dans un nouveau fichier et le rendre executable : si le script etait un peu retravaillé il pourrait etre encore plus sympa avis aux courageux testeurs :clap

#!/bin/bash
##script dlc directory-link-creator## open directory with pcmanfm choosing your icon ##pizuxmepis ate gmail point com ,thx to anubisg1 IRC#lxde
##the .desktop create got the suffix (dlc-)foo.desktop for dissociate from other one
########################################################################################
#this is the desktop file you can copy to /usr/share/applications name it dlc.desktop
#  [Desktop Entry]
#   Name=dlc
#   Comment[fr]=créer un raccourci sur le bureau
#   Comment[us]=create desktop shortcut
#   Exec=dlc
#   Terminal=false
#   Icon=gtk-preferences
#   Categories=Settings;
#   Type=Application
#   OnlyShowIn=LXDE;
##########################################################
old_IFS=$IFS     # sauvegarde du séparateur de champ 
IFS=$'\n'     # nouveau séparateur de champ

DIX() {
cd $HOME    #check desktop

if [[ -e .config/user-dirs.dirs ]]; then
. .config/user-dirs.dirs
else
XDG_DESKTOP_DIR="$HOME/Desktop"
fi

mkdir -p $XDG_DESKTOP_DIR

if [[ $LANG = fr_* ]]; then #####check lang
TXT=$"Choisir un dossier à lier sur votre bureau"
TXT2=$"Ce lien vers ce dossier existe Déjà, choisissez en un autre ou éffacez le depuis votre bureau"
 TXT3=$"Choisissez votre type d'icone"
 TXT4=$"L'icone pare defaut est folder (dossier), BROWNSE permet de naviguer vers l'icone de votre choix"
 TXT5=$"Naviguez vers votre icone"
 TXT6=$"Le lien a été crée sur votre bureau, voulez-vous en créer un autre ?"
else
TXT=$"Choose a directory to link on your desktop"
TXT2=$"This directory link already exist, please choose another one or delete it from your desktop"
 TXT3=$"Please choose your icon type"
 TXT4=$"Default icon is folder but you can choose yourself selecting BROWNSE"
 TXT5=$"Brownse to your icon"
 TXT6=$"Link have been created on your desktop, do you want to create another one ?"
fi

name="$(zenity --file-selection \
--directory --title="$TXT")"
if [[ $? -ne 0 ]];then exit; fi;

base="$(basename "$name")"
cd  $XDG_DESKTOP_DIR

if [[ -e dlc-$base.desktop ]]; then
zenity --warning --text=\
"$TXT2"; cd $HOME ; DIX
else

icon=$(zenity --width=100 --entry --title="$TXT3" \
--text="$TXT4" --entry-text="folder" \
 BROWNSE folder-open video sound image document applications-office applications-education \
applications-internet applications-mutimedia applications-games applications-graphics \
printer network camera-photo camera-video camera-web computer drive-optical drive-harddisk \
dvd cdrom removable-usb)
fi

if [[ $? -ne 0 ]];then exit; fi;

if [[ "$icon" = BROWNSE ]]; then
icon=$(zenity --file-selection --filename=/usr/share/icons/ --title="$TXT5")
fi

if [[ $? -ne 0 ]];then exit; fi;

echo "[Desktop Entry]
Comment=pcmanfm link to directory "$name"
Name="$base"
Exec=pcmanfm "$name"
Icon="$icon"
Type=Application
Terminal=false
OnlyShowIn=LXDE;" >>dlc-$base.desktop ;

zenity --question --text="$TXT6" --window-icon=open-folder

 
if [[ $? -ne 0 ]];then exit;
else

DIX
fi
}
DIX
IFS=$old_IFS
exit o

raccourci bureau sous lxde une soluce maison éfficace

#2Messageil y a 7 ans

:salut:

Tu t'amuses bien, apparemment. :bien

Une question sur le bash : pourquoi des [[ plutôt qu'un [ simple ?

Sinon, je ne suis pas sous Lxde, mais il semble marcher pas mal.

Je pense qu'à la fin, tu as voulu mettre un exit 0 et pas un exit o.

D'ailleurs, tu devrais sortir avec un code différent de 0 en cas d'erreur.

raccourci bureau sous lxde une soluce maison éfficace

#3Messageil y a 7 ans

Une question sur le bash : pourquoi des [[ plutôt qu'un [ simple ?

ça remplace "test", par exemple:

[[ -e .config/user-dirs.dirs ]]

équivaut à

[ test -e .config/user-dirs.dirs]


@ Pizux: tout ton script est en français, donc pourquoi demander la création de ~/Desktop (en cas d'absence de user-dirs.dirs) et pas ~/Bureau ?

raccourci bureau sous lxde une soluce maison éfficace

#4Messageil y a 7 ans

:bjr:

OK, mais ;

[ -e .config/user-dirs.dirs ]


marche aussi. Je pense qu'il y a des fonctionnalités additives qui y sont liées, en bash avancé, d'où ma question.

test, c'était plutôt du temps de l'ancêtre, le shell pas ba.

raccourci bureau sous lxde une soluce maison éfficace

#5Messageil y a 7 ans

la différence entre simple et double crochets n'est pas tout le temps visible; certains caractères spéciaux ( &&, ||, <, et > ) occasionneront un bug s'ils sont utilisés dans une fonction de test entre simple crochets: les doubles crochets empêchent cela, et du coup, on les utilise tout le temps, par habitude et par précaution...

raccourci bureau sous lxde une soluce maison éfficace

#6Messageil y a 7 ans

OK, merci. Je suis en train de regarder, mais c'est pour du bash nettement avancé.

Perso, plus c'est simple... :sourire:

raccourci bureau sous lxde une soluce maison éfficace

#7Messageil y a 7 ans

bon faut que je m'y remette mais ça fait longtemps que j'ai pas fait de bash , le script est en francais ou anglais selon if [[ $LANG = fr_* ]]; then else english ;p

raccourci bureau sous lxde une soluce maison éfficace

#8Messageil y a 7 ans

justement, si le fichier user-dirs.dirs existe (ce qui est presque toujours le cas), ton script fonctionne correctement, mais dans le cas contraire, ton script va créer un répertoire ~/Desktop, alors qu'un utilisateur francophone utilise peut-être déjà un répertoire ~/Bureau
pour la langue, tu devrais faire comme ça:

case "$LANG" in
 fr*)
TXT="Choisir un dossier à lier sur votre bureau"
TXT2="Ce lien vers ce dossier existe Déjà, choisissez en un autre ou éffacez le depuis votre bureau"
 TXT3="Choisissez votre type d'icone"
 TXT4="L'icone pare defaut est folder (dossier), BROWNSE permet de naviguer vers l'icone de votre choix"
 TXT5="Naviguez vers votre icone"
 TXT6="Le lien a été crée sur votre bureau, voulez-vous en créer un autre ?"
;;
*)
TXT="Choose a directory to link on your desktop"
TXT2="This directory link already exist, please choose another one or delete it from your desktop"
 TXT3="Please choose your icon type"
 TXT4="Default icon is folder but you can choose yourself selecting BROWNSE"
 TXT5="Brownse to your icon"
 TXT6="Link have been created on your desktop, do you want to create another one ?"
 ;;
esac

avec if/else, ta fonction langue est éxécutée dans la suite des autres fonctions et le shell est obligé de tout lire, avec case, elle est indépendante et aussi plus légère, car le shell ne lit que ce qui correspond à la langue de la variable $LANG; l'autre avantage, c'est que tu peux ajouter autant de langues que tu veux, alors qu'avec if/else, tu vas être limité


Répondre