[Tuto] Une icone animée sur votre bureau grâce à conky 1.9 …

l’Almanet doLys Gnu/Linux – Open Source – Entreprises Forums L’almanet doLys Open Source [Tuto] Une icone animée sur votre bureau grâce à conky 1.9 …

3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Articles
  • #4562
    jlfh0816jlfh0816
    Moderator

      … et un gif cliquable.

      presentation
      un clic sur le lanceur (en fait, un gif animé cliquable placé sur le bureau) déclenche une action personnalisable, ici l’ouverture du répertoire « Images » de ma Xubuntu 14.04.5

       
       

      Préambule

      Les scripts lua de ce tutoriel ne fonctionneront que si vous utilisez la version 1.9 de conky (c’est-à-dire jusqu’à *ubuntu 15.04) … et non la nouvelle version 1.10 (c’est-à-dire à partir de 15.10) !
      Pour savoir quelle version est installée sur votre distribution, ouvrez Synaptic ( Whisker Menu > tout > Système > Synaptic> rechercher > conky-all ) ou saisissez ceci dans un terminal :

      apt-cache policy conky-all

      ou ceci :

      conky -v

      Si votre distribution utilise la version 1.10, reportez-vous à l’addendum à la fin du tutoriel pour examiner les différentes solutions/parades possibles.

      Voila, ces remarques importantes étant faites, nous pouvons entrer dans le vif du sujet et créer notre lanceur animé !
       
       

      Introduction

      Il y a quelques années de cela (en 2014), n’ayant aucune compétence en matière de conky, j’avais beaucoup sollicité mrpeachy (sur le défunt forum #Crunchbang ) et Didier-T (sur le forum Ubuntu.fr ) pour qu’ils m’aident à incorporer un gif animé dans un conky interactif (cliquable). Leur collaboration a été très efficace et elle a vite abouti à une solution fonctionnelle. Etant donnée la qualité de leur travail, j’ai pensé faire œuvre utile en le mettant à la disposition de la communauté (… en français !).

      Mais j’insiste, tout le mérite revient à mrpeachy et à Didier-T auxquels je renouvelle mes plus vifs remerciements.In fine, ce tutoriel vous permettra d’afficher sur votre bureau un ou plusieurs gifs animés (éventuellement cliquables mais ce n’est pas obligatoire) d’un être cher, d’un logo qui vous tient à cœur, d’un monument ou d’une œuvre d’art, de votre actrice préférée, etc …

      Firefox
      Firefox animé

      Ce tutoriel comporte 4 étapes principales :
      – obtenir un gif animé ;
      – le décomposer ;
      – créer le conky;
      – rendre le conky cliquable
       
       

      1 – Pré-requis

      • mon installation :

      Xubuntu – Voyager 14.04.5 LTS (en 64 bits)
      Je n’utilise pas Compiz mais le compositeur de fenêtres d’origine de Xubuntu (Xfwm).
      Mon gestionnaire de fichiers est Nemo.
      Mon éditeur de fichiers est gedit.
      Je n’utilise pas d’icones sur mon bureau mais un dock (en l’occurrence cairo-dock).
       

      • logiciels requis :

      Gifsicle
      Conky (ici donc en version 1.9)
      Xdotool
      Xwininfo
       
      Il est possible qu’ils soient déjà présents d’origine dans votre distribution mais vérifiez quand même, on ne sait jamais !
       
       

      2 – obtenir un gif animé

      Vous avez plusieurs possibilités :
      – soit vous possédez déjà un gif animé dans vos archives personnelles;
      – soit vous en récupérez un sur internet ;
      – soit vous en réalisez un spécialement pour l’occasion.

      fleur
      Ci-dessus, un exemple de gif animé 2D (free 240×320 Animated rotating white flower hd phone backgrounds gallery) que j’ai utilisé il y a quelque temps pour accéder à mon dossier de photos «fleurs ». Il est téléchargeable gratuitement sur le site hdiphonewallpapers.

       
      Si vous préférez réaliser un gif animé spécialement pour l’occasion, vous avez 2 façons de faire :
      – soit vous le réalisez vous-même de A à Z (avec Gimp par exemple);
      – soit vous passez par l’intermédiaire d’un site spécialisé (il en existe beaucoup : Ezgif, Lunapic, Animizer, etc …).

      Xubuntu 16.04
      Animation d’un simple texte 2D sur le site Animizer.

       
      Si vous passez par l’un de ces sites spécialisés, vous verrez qu’ils vous proposent gratuitement :
       
      – soit de réaliser un gif animé 2D en appliquant des déformations ou des animations diverses et variées à du texte ou à l’une de vos icônes fixes que vous leur fournissez (par exemple chez Animizer). Vous en avez un exemple ci-dessus et un autre ci-dessous en sachant qu’il y en a beaucoup d’autres disponibles :

      Tux 2D
      Animation d’une icone 2D sur le site Animizer.

      – soit de réaliser un gif animé 3D en forme de cube qui tourne sur lui-même, à partir de photos que vous leur fournissez (par exemple chez Bloggif).

      cube 3D
      le classique cube 3D animé obtenu sur le site Bloggif.

      Pour la suite de ce tutoriel, je choisis d’afficher un cube 3D réalisé sur le site Bloggif.com à partir de photos personnelles.
       
       

      3 – décomposer le gif animé

      Pour fonctionner, le script lua que nous utiliserons pour afficher le gif animé a besoin d’accéder à toutes les images fixes (les « frames ») qui le constituent. Il faut donc que nous décomposions le gif.
       
      Mais avant de faire cela, il nous faut :
      – créer le répertoire /home/user/essai
      – créer le répertoire /home/user/temp
      (attention: le dossier temp ne devra contenir que vos frames et rien d’autre)
      Bien entendu, vous remplacez user par votre propre nom d’utilisateur.
       
      Pour décomposer notre gif animé, nous avons plusieurs possibilités dont celles-ci :
      – soit nous utilisons Gimp ;
      – soit nous demandons à un site spécialisé de le faire à notre place (Ezgif.com, Bloggif.com, etc …);
      – soit nous recourons à gifsicle en ligne de commande.
       
      J’ai testé les trois possibilités et elles sont toutes efficaces.
       
      Dans le cadre de notre tutoriel, nous allons utiliser gifsicle. Voici comment procéder :
      – dans un premier temps, vous renommez votre gif avec un nom simple (personnellement, j’ai choisi cube.gif ) ;
      – dans un second temps, vous le déplacez dans votre dossier /home/user/temp
      – dans un troisième temps, vous saisissez cette ligne de commande dans un terminal :
       
      gifsicle --unoptimize --explode /home/user/temp/cube.gif --output /home/user/temp/gif
       
      Bien entendu, dans cette ligne de commande, vous remplacez user par votre propre nom d’utilisateur.
      En ouvrant /home/user/temp, vous pouvez vérifier que gifsicle a bien décomposé cube.gif en un certain nombre d’images fixes (les «frames»), chez moi en 18 images numérotées de gif.000 à gif.017
       
      NB: il est possible que gifsicle refuse de s’exécuter et vous affiche le message d’erreur suivant :
       
      gifsicle: While processing '/home/user/temp/cube.gif':
      warning: GIF too complex to unoptimize
      (The reason was local color tables or complex transparency.
      Try running the GIF through 'gifsicle --colors=255' first.)

       
      Dans ce cas, il vous suffit de modifier la ligne de commande pour tenir compte du message d’erreur. Ce qui donne la nouvelle commande suivante:
       
      gifsicle --colors=255 --explode /home/user/temp/cube.gif --output /home/user/temp/gif
       
       

      4 – créer le conky

      Cette opération va se faire en deux temps :
      – création du fichier conkyrc_cube (avec la syntaxe conky 1.9)
      – création du fichier gif.lua
       

      • 4.1 – création du fichier conkyrc_cube

      Vous ouvrez le répertoire /home/user/essai et vous y créez un nouveau fichier que vous appelez conkyrc_cube
      Vous l’ouvrez avec votre éditeur de fichiers préféré (chez moi, c’est gedit) et vous y copiez-collez le script suivant :
       
      #le conky appelant doit avoir sa propre fenêtre et un nom
      own_window_title Cube
      #definition du type de fenetre, et des décorations
      own_window_argb_visual no
      own_window yes
      own_window_type normal
      own_window_transparent yes
      own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
      #définition de la taille, et de la position du conky
      minimum_size 135 135
      alignment ml
      gap_x 10
      gap_y 10
      #vitesse de rotation du cube
      update_interval 0.15
      réglage de la mémoire, pour éviter le clignotement
      double_buffer yes
      Soustraire les mémoires tampons de la mémoire utilisée
      no_buffers yes
      text_buffer_size 1024
      lua_load ~/essai/Click_info.lua
      lua_load ~/essai/gif.lua
      #
      TEXT
      #Conky animation with images
      ${lua click}
      ${lua gif ~/temp * 0 15 135 135}

       
      Vous sauvegardez ce fichier et vous le rendez exécutable :clic droit sur le fichier > propriétés > permissions > autoriser l’exécution du fichier comme un programme
       

      • 4.2– création du fichier gif.lua

      Vous ouvrez le répertoire /home/user/essai et vous y créez un nouveau fichier que vous appelez gif.lua
      Vous ouvrez ce nouveau fichier avec votre éditeur de fichiers préféré (chez moi, c’est gedit) et vous y copiez-collez le script suivant :
       
      --[[
      Script gif.lua
      By mrpeachy
      Modifier le 22/03/2014 par Didier-T
      prise en charge du contenu complet d'un répertoire avec choix de format (jpg, gif, etc...)
      prise en charge des racourcis ~ et $HOME, ainsi que des espaces dans le chemin du repertoire
      #############################################################################################
      # #
      # Usage #
      # #
      #############################################################################################
      # #
      # lua_load ~/gif.lua #
      # TEXT #
      # ${lua gif repertoire format pos_x pos_y largeur hauteur} #
      # #
      #############################################################################################
      remplacer les espaces par %20 pour le chemin du repertoire
      ]]--
      --gifsicle --unoptimize --explode /home/jlfh0816/temp/cube.gif --output /home/jlfh0816/temp/temp.gif
      require 'cairo'
      require 'imlib2'
      ini=0
      count=0
      fichier={}
      function conky_gif(rep,ext,x,y,w,h)
      if conky_window == nil then return end
      local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
      cr = cairo_create(cs)
      if ini==0 then fichier=init(rep, ext) end
      show_image=fichier[count]
      if count
      count=count+1
      else
      count=0
      end
      image({x=x,y=y,w=w,h=h,file=show_image,decache=1})
      cairo_destroy(cr)
      cairo_surface_destroy(cs)
      cr=nil
      return ""
      end-- end main function
      function init(rep, ext)
      ini=1
      local home = os.getenv("HOME")
      rep = string.gsub(rep, "~", home)
      rep = string.gsub(rep, "$HOME", home)
      rep=string.gsub(rep, '%%20', "\\ ")
      local file=conky_parse("${exec find "..rep.."/*."..ext.." -type f -print}")
      return file:split('\n')
      end
      -- Fonction de découpage maison
      function string:split(pat)
      -- Détermination du caractère séparant les champs pour le découpage
      -- Par défaut ce sera espace
      pat = pat or '%s+'
      local tab = {}
      local x=0
      for i in self:gmatch("([^"..pat.."]+)") do
      tab[x]=i
      x=x+1
      end
      return tab
      end
      function image(im)--#######################################################################################
      local x=(im.x or 0)
      local y=(im.y or 0)
      local w=(im.w or 50)
      local h=(im.h or 50)
      local file=tostring(im.file)
      local decache=im.decache or 0
      if file==nil then print("set image file") end
      ---------------------------------------------
      local show = imlib_load_image(file)
      if show == nil then return end
      imlib_context_set_image(show)
      if tonumber(w)==0 then
      width=imlib_image_get_width()
      else
      width=tonumber(w)
      end
      if tonumber(h)==0 then
      height=imlib_image_get_height()
      else
      height=tonumber(h)
      end
      imlib_context_set_image(show)
      local scaled=imlib_create_cropped_scaled_image(0, 0, imlib_image_get_width(), imlib_image_get_height(), width, height)
      if decache==1 then
      imlib_free_image_and_decache()
      else
      imlib_free_image()
      end
      imlib_context_set_image(scaled)
      imlib_render_image_on_drawable(x,y)
      imlib_free_image()
      end--function image

       
      Vous sauvegardez ce fichier et vous le rendez exécutable :clic droit sur le fichier > propriétés > permissions > autoriser l’exécution du fichier comme un programme
       
       

      5 – rendre le conky cliquable

      Pour cette dernière étape, vous ouvrez le répertoire /home/user/essai et vous y créez un nouveau fichier que vous appelez Click_info.lua
      Vous ouvrez ce nouveau fichier avec votre éditeur de fichiers préféré (chez moi, c’est gedit) et vous y copiez-collez le script suivant :
       
      --[[
      !!! Nécessite l’installation de xdotool !!!
      Le conky appelant doit avoir sa propre fenêtre et un nom, par exemple
      own_window_title Cube
      own_window yes
      Dans le conky il faut ajouter :
      Avant TEXT
      lua_load "Votre chemin"/Clic_info.lua
      Après TEXT
      ${lua click}
      Pour obtenir la position de la souris dans le script lié au clic utiliser
      posx et posy
      Pour ajouter des données récupérées via conky dans la commande à exécuter indiquer dans la ligne de commande arg(x), arg1 sera remplacé par le résultat de arg1, vous disposez de 5 arguments
      Les commandes peuvent être exécutées par conky ou directement par le système
      Le nom de la fenêtre conky doit être renseigné ci-dessous
      ]]--
      local Fenetre="Cube"
      local Bouton={
      {
      Posx=0,
      Posy=15,
      Lageur=135,
      Hauteur=135,
      Commande_Os="nemo /home/jlfh0816/Images",
      Commande_Conky="",
      arg1="",
      arg2="",
      arg3="",
      arg4="",
      arg5="",
      },
      }
      local start=1
      local abstlx, abstly
      function conky_click()
      local mousex, mousey, localx, localy, arg1, arg2, arg3, arg4, arg5
      if conky_window == nil then return end
      local updates=tonumber(conky_parse('${updates}'))
      if updates>2 then
      localx,localy=clickfunction()
      for i in pairs(Bouton) do
      if localx>=Bouton.Posx and localx<=Bouton.Posx+Bouton.Lageur and localy>=Bouton.Posy and localy<=Bouton.Posy+Bouton.Hauteur then
      mousex=Bouton.Posx+abstlx
      mousey=Bouton.Posy+Bouton.Hauteur+abstly
      if Bouton.arg1 ~= "" then arg1=conky_parse( "${"..Bouton.arg1.."}" ) else arg1=" " end
      if Bouton.arg2 ~= "" then arg2=conky_parse( "${"..Bouton.arg2.."}" ) else arg2=" " end
      if Bouton.arg3 ~= "" then arg3=conky_parse( "${"..Bouton.arg3.."}" ) else arg3=" " end
      if Bouton.arg4 ~= "" then arg4=conky_parse( "${"..Bouton.arg4.."}" ) else arg4=" " end
      if Bouton.arg5 ~= "" then arg5=conky_parse( "${"..Bouton.arg5.."}" ) else arg5=" " end
      if Bouton.Commande_Os ~= "" then
      Bouton.Commande_Os=Bouton.Commande_Os:gsub("posx", mousex):gsub("posy", mousey):gsub("arg1", arg1):gsub("arg2", arg2):gsub("arg3", arg3):gsub("arg4", arg4):gsub("arg5", arg5)
      print(Bouton.Commande_Os)
      os.execute(Bouton.Commande_Os)
      end
      if Bouton.Commande_Conky ~= "" then
      Bouton.Commande_Conky=Bouton.Commande_Conky:gsub("posx", mousex):gsub("posy", mousey):gsub("arg1", arg1):gsub("arg2", arg2):gsub("arg3", arg3):gsub("arg4", arg4):gsub("arg5", arg5)
      conky_parse( "${"..Bouton.Commande_Os.."}")
      end
      end
      end
      collectgarbage()
      end
      return ""
      end
      function clickfunction()
      local xdot, geometry ,s ,f , click, mousex, mousey, localx, localy
      --start click logging and calculations ##########################################
      if start==1 then
      xdot=os.execute("exec ps ax | awk '/ xdotool search --name "..Fenetre.." behave %@ mouse-click getmouselocation / {print $1}'")
      if tonumber(xdot)==1 then
      os.execute("kill "..xdot)
      end
      os.execute("xdotool search --name "..Fenetre.." behave %@ mouse-click getmouselocation >> /tmp/xdo &")
      start=nil
      local f = io.popen("xwininfo -name '"..Fenetre.."' | grep 'Absolute'")
      geometry = f:read("*a")
      f:close()
      geometry=string.gsub(geometry,"[\n]","")
      s,f,abstlx=string.find(geometry,"X%p%s*(%d*)")
      s,f,abstly=string.find(geometry,"Y%p%s*(%d*)")
      end--if start=1 ######################################
      --click calculations #################################
      local f=io.open("/tmp/xdo")
      click=f:read()
      f:close()
      if click~=nil then
      local f = io.open("/tmp/xdo","w")
      f:write("")
      f:close()
      end--if click=nil
      if click==nil then click="x:0 y:0 " end
      s,f,mousex=string.find(click,"x%p(%d*)%s")
      s,f,mousey=string.find(click,"y%p(%d*)%s")
      mousex=tonumber(mousex)
      mousey=tonumber(mousey)
      localx=mousex-abstlx
      localy=mousey-abstly
      --END CLICK CALCULATIONS #################################
      return localx,localy,mousex,mousey
      end--function

       
      Vous sauvegardez ce fichier et vous le rendez exécutable :clic droit sur le fichier > propriétés > permissions > autoriser l’exécution du fichier comme un programme
       
       

      6 – lancer le conky en ligne de commande

      Pour vérifier que notre conky fonctionne correctement, vous pouvez le lancer à la demande, grâce à une ligne de commande. Dans un terminal, vous saisissez ceci :
       
      conky -c ~/essai/conkyrc_cube
       
      ou, si elle ne fonctionne pas, celle-ci :
       
      conky -c /home/votre_nom_d'utilisateur/essai/conkyrc_cube
       
      Si tout fonctionne correctement, vous pouvez avoir envie de remplacer le lancement par ligne de commande (pas très convivial) par un clic on/off sur un lanceur dédié. C’est l’objet du paragraphe 9 ci-dessous auquel je vous invite à vous reporter.
       
       

      7 – personnaliser le conky

      Vous pouvez interagir sur certains paramètres du conky et les modifier :
       
      le nom de la fenêtre du conky :
      Cela se passe aux lignes 1 et 2 du script conkyrc_cube :
       
      #le conky appelant doit avoir sa propre fenêtre et un nom
      own_window_title Cube

       
      Vous changez Cube par le nom qui vous convient.
       
      la dimension de la fenêtre dans laquelle s’affiche le conky :
       
      Cela se passe aux lignes 9 et 10 du script conkyrc_cube :
       
      #définition de la taille du conky
      minimum_size 135 135

       
      Ici, cela signifie que la fenêtre du conky a une taille minimale de 135 x 135 pixels.
      Le premier 135 est pour la largeur (en pixels).
      Le second 135 est pour la hauteur (en pixels).
      Vous pouvez bien entendu modifier ces valeurs à votre guise.
       
      la taille des images du gif :
       
      Cela se passe à la ligne 28 du script conkyrc_cube :
       
      ${lua gif ~/temp * 0 15 135 135}
       
      0 et 15 se réfèrent aux coordonnées d’affichage, en pixels, du gif dans la fenêtre du conky (0 0 signifiant « en haut, à gauche »).
      Quant au premier 135, il désigne la largeur du gif (en pixels) et le second 135 sa hauteur (toujours en pixels).
      Vous pouvez tout à fait changer ces chiffres pour les adapter à la taille de votre gif personnel. Mais n’oubliez pas d’adapter en conséquence la taille de la fenêtre du conky.
       
      la position du conky :
      Cela se passe aux lignes 12, 13 et14 du script conkyrc_cube :
       
      alignment ml
      gap_x 10
      gap_y 10

       
      alignment ml signifie middle left (c’est-à-dire au milieu et à gauche sur l’écran). C’est un positionnement prédéfini et grossier du conky.
      Vous pouvez le modifier en changeant ml par l’une des ces valeurs suivantes :
       
      top_left (ou tl en abrégé), top_right (ou tr), top_middle (ou tm), bottom_left (ou bl), bottom_right (ou br), bottom_middle (ou bm), middle_left (ou ml), middle_middle (ou mm), middle_right (ou mr) ou même none.
       
      Par rapport à cet alignement, vous pouvez ensuite jouer plus finement sur gap_x (donc l’abscisse ou axe des x) et sur gap_y (donc l’ordonnée ou axe des y).
       
      Ici gap_x 10 signifie 10 pixels à l’horizontale vers la droite (axe des x), à partir du bord gauche de l’écran.
      Et gap_y 10 signifie 10 pixels vers le haut (axe des y), à partir de la position de l’alignement ml.
       
      Donc, vous pouvez jouer sur ces deux valeurs pour positionner plus finement votre conky.
       
      la vitesse de rotation du cube :
      Cela se passe aux lignes 15 et 16 du script conkyrc_cube :
       
      #vitesse de rotation du cube
      update_interval 0.15

       
      Cela signifie que le gif change de frame (d’image fixe) toutes les 15 millisecondes.
      Vous pouvez bien entendu modifier ces valeurs à votre guise pour augmenter ou diminuer la vitesse de rafraichissement des images et donc in fine la vitesse de rotation du cube.
       
      l’effet du clic sur le conky :
      Dans mon cas personnel, le clic a pour effet d’ouvrir mon répertoire Images.
      Cela se passe à la ligne 30 du script Click_info.lua :
       
      Commande_Os="nemo /home/jlfh0816/Images",
       
      Mais libre à vous que le clic ait un autre effet. Par exemple, on peut lui demander qu’il ait pour effet d’ouvrir un site internet précis, au hasard le site https://dolys.fr/ : cela donnera la ligne de commande suivante :
       
      Commande_Os="firefox https://dolys.fr",

      presentation
      ici, le clic sur le conky fait ouvrir Firefox sur la page d’accueil du site https://dolys.fr (capture d’écran réalisée avec Kazam)

      Maintenant, n’ayant pas (et de loin) les compétences de Didier-T, l’auteur des scripts « conky interactif », je vous conseille d’aller voir ses explications sur le forum Ubuntu.fr si vous souhaitez de plus amples informations. Il maitrise son sujet et il sera plus efficace que moi !
       
       

      8 – automatiser le lancement du conky à l’ouverture de la session

      Je suis sous Xubuntu donc je ne peux décrire la manip que pour cette distribution. Ceci dit, je pense que ça doit être faisable sur n’importe quelle autre distribution si on adapte…
      Voici comment je procède sur ma Xubuntu -Voyager 14.04 :
       
      menu Whisker > tous les paramètres > Session et démarrage > démarrage automatique d’applications > ajouter
       
      et là, on complète les champs comme ceci :
       
      nom : Cube
      description : conky Cube animé et cliquable
      commande : sh -c "sleep 5; conky -c ~/essai/conkyrc_cube;"
       
      ou, si cette commande ci-dessus ne fonctionne pas, celle-ci :
       
      sh -c "sleep 5; conky -c /home/user/essai/conkyrc_cube;"
       
      Vous remplacez bien sûr user par votre propre nom d’utilisateur.
       
      Vous validez-fermez et normalement, c’est tout bon.
       
      Vous pouvez contrôler cela en redémarrant le PC (ou seulement votre session) : le conky interactif doit se lancer au bout de 5 secondes (c’est la signification du sleep 5 dans le champ « commande »).
      Mais si vous préférez attendre 30 secondes, libre à vous de remplacer sleep 5 par sleep 30.
      Par contre, je vous déconseille de mettre des valeurs inférieures à 5 secondes voire pas de sleep du tout …. ça risquerait de provoquer un embouteillage des diverses commandes qui se lancent au démarrage de la session et donc des problèmes assurés …
       
       

      9 – réaliser un lanceur pour une utilisation occasionnelle

      Pour faciliter l’utilisation occasionnelle de notre conky, nous allons lui créer un lanceur (…un lanceur de lanceur !). Un clic G dessus le fera apparaître sur le bureau et un nouveau clic G l’arrêtera.
      Pour arriver à nos fins, nous avons besoin de d’abord créer un lanceur intermédiaire caché sur le bureau et, grâce à lui, nous pourrons ensuite facilement créer des lanceurs visibles dans le tableau de bord ou dans un dock.
      Le lanceur caché sur le bureau s’appellera .Cube
       

      • 9.1 – créer un lanceur caché sur le bureau

      Avant de créer le lanceur proprement dit, il nous faut créer un petit script qui permettra de vérifier si le conky est déjà lancé ou pas. Dans le premier cas, il le stoppera. Dans le second cas, il le lancera.
      Vous ouvrez le répertoire /home/user/essai et vous y créez un nouveau fichier que vous appelez conky_cube.sh
       
      Vous ouvrez ce nouveau fichier avec votre éditeur de fichiers préféré (chez moi, c’est gedit) et vous y copiez-collez le script suivant :
       
      if
      #------- Partie recherche -------
      pgrep -f "conky -c /home/user/essai/conkyrc_cube"
      then
      #------- Partie tuer le conky ------
      for i in `ps aux | grep [c]onkyrc_cube |awk '{ print $2}'`; do kill -9 $i;done;
      else
      #------- Partie lancer le conky -------
      #sleep 1
      conky -c /home/user/essai/conkyrc_cube &
      fi

       
      Vous remplacez bien sûr user par votre propre nom d’utilisateur.
       
      Vous sauvegardez ce fichier et vous le rendez exécutable :
      clic droit sur le fichier > propriétés > permissions > autoriser l’exécution du fichier comme un programme
       
      Ensuite, il nous faut créer le lanceur proprement dit.
      Pour cela, nous faisons:
      clic D directement sur le bureau > créer un lanceur > renseigner les champs comme ci-dessous :

      lanceur caché sur le bureau
      lanceur caché sur le bureau

      Là encore, vous remplacez user par votre propre nom d’utilisateur.
      Et vous laissez décochées les cases «exécuter dans un terminal» et «notification»
      On valide en cliquant sur «créer».
      Il reste à re-cliquer droit dessus pour faire apparaître propriétés > permissions > autoriser l’exécution du fichier comme un programme
       
      Appelez ensuite votre gestionnaire de fichiers (chez moi, c’est Nemo) et ouvrez le répertoire «Bureau».
      Vous y voyez le lanceur Cube
       
      Clic droit sur ce lanceur > renommer > lui attribuer le nom .Cube > valider en appuyant sur la touche entrée du clavier
       

      • 9.2 – créer un lanceur visible dans le tableau de bord

      Pour les débutants, voici la marche à suivre étape par étape:
      ouvrir votre gestionnaire de fichiers (chez moi, c’est Nemo), allez dans le répertoire «Bureau» et faites y apparaître les fichiers cachés:
      menu Edition > Affichage > afficher les fichiers cachés
       
      Comme ça, nous voyons l’icone du fichier .Cube
      cliquez droit sur ce fichier : ouvrir avec > créer un lanceur sur le tableau de bord

      créer un lanceur sur le tableau de bord
      créer un lanceur sur le tableau de bord

      Vous validez et le petit panneau ci-dessous apparait:

      ajouter un lanceur sur le tableau de bord
      créer un lanceur sur le tableau de bord

      Cliquez sur ajouter
       
      Vous validez et un lanceur apparait en haut à droite de l’écran:

      nouvelle icone tableau de bord
      une nouvelle icone apparait dans le tableau de bord

      C’est une icone générique assez moche mais vous pouvez tout à fait la remplacer par l’icone de votre choix (nous verrons comment un peu plus loin) et déplacer votre nouveau lanceur ailleurs sur le tableau de bord:
       
      clic droit sur l’icone > déplacer
       
      et vous tirez-glissez à l’endroit de votre choix.
       
      Voilà ce que ça donne chez moi après cette personnalisation:

      icone finale tableau de bord
      après déplacement et changement d’icone

      Il reste maintenant à adapter les propriétés de ce lanceur à notre usage particulier. Pour cela, clic droit sur l’icone pour faire apparaitre les “propriétés du lanceur”:

      propriétés du lanceur
      propriétés du lanceur

      Ensuite, clic gauche sur l’icone en bas à droite représentant un crayon afin de pouvoir modifier l’élément sélectionné:

      édition du lanceur
      édition du lanceur

      Le panneau “éditer le lanceur” apparait:

      édition du lanceur
      édition du lanceur

      (chez vous, user sera d’office remplacé par votre propre nom d’utilisateur donc n’y touchez pas, c’est déjà correct !)
      Tout d’abord, dans les options, vous décochez:
      utiliser la notification de démarrage
      exécuter dans un terminal
      sinon vous aurez toujours un terminal qui va se superposer à votre fond d’écran animé lors de l’exécution de celui-ci.
       
      Ensuite, si vous êtes sous Nemo ou Caja ou Dolphin (mais pas sous Thunar ni sous Nautilus), vous pouvez personnaliser votre icone. Il suffit de cliquer gauche dessus et de naviguer dans les arborescences jusqu’à trouver l’icone de votre choix.
       
      Lorsque tout est à votre goût, vous enregistrez et c’est fini !
       
      Pour l’utilisation en pratique courante: un clic gauche sur l’icone dans le tableau de bord et le conky animé s’affiche. Un autre clic gauche dessus et il disparait, comme ceci :

      lanceu_dans_le_tableau_de_bord
      un clic sur le lanceur dans le tableau de bord) fait apparaitre le conky animé. Un autre clic l’arrête.

       

      • 9.3 – créer un lanceur visible dans le tableau de dock

      Au cas où avoir un lanceur dans le tableau de bord ne vous plait pas, vous pouvez également en créer un dans un dock. Chez moi, ce dock est Cairo-dock.
       
      Pour mener à bien l’opération, j’ouvre mon gestionnaire de fichiers Nemo. Je clique sur l’icone du répertoire “Bureau” pour ouvrir celui-ci. Dans Nemo, j’ouvre:
       
      menu Edition > Affichage > afficher les fichiers cachés
       
      Comme ça, je vois l’icone de mon fichier .Cube
       
      Je fais un tirer/glisser de cette icône jusque dans mon Cairo-Dock.
      Une nouvelle icône apparaît instantanément dans mon dock, un rond bleu avec un point d’interrogation. Comme ceci:

      lanceur dans Cairo dock
      lanceur dans le dock

      Si vous le souhaitez, vous pouvez remplacer l’icone point d’interrogation par une icône de votre choix (ça se passe dans la personnalisation de Cairo-Dock).
       
      Si je clique gauche sur ce point d’interrogation (un seul clic, pas deux ! ), le conky animé s’affiche immédiatement.
      Si je souhaite arrêter ce conky, je reclique gauche sur la même icône et il disparait.
       
      Seule précaution à prendre : toujours bien attendre que l’icone du Cairo-dock ait arrêté sa propre animation (chez moi, elle tourne sur elle-même en 3D) avant de recliquer dessus. Sinon, ça ne fonctionne pas … et ça oblige de fait à attendre que l’icone soit redevenue fixe. C’est une sécurité voulue par les développeurs de Cairo-Dock pour éviter de lancer accidentellement deux fois de suite un programme. Mais bon, quelques secondes à attendre, ce n’est pas la mer à boire !
       
      Voilà, ce tutoriel est terminé, je vous souhaite de bien vous amuser avec ce conky interactif !
       
       
       
      NB: je ne suis ni un pro des scripts ni un pro de la ligne de commande alors si vous constatez des erreurs, des incohérences ou des choses à améliorer, n’hésitez surtout pas à me le faire savoir, j’en serai le premier ravi.
       
       
       
      VARIANTE EN CAS DE « FREEZE » DU GIF AU CLIC:
       
      Chez moi, il arrive de façon tout-à-fait aléatoire, que le clic sur le conky fige l’animation du gif. En fait, l’animation redémarre spontanément quelques secondes après la fermeture de la fenêtre de mon dossier «Images» (qui est, je vous le rappelle, la commande exécutée par le clic) mais c’est un fonctionnement pour le moins gênant…
      N’ayant pas réussi à trouver d’où vient le problème, j’ai décidé d’une variante à mon tuto … en l’occurence, je supprime le fichier Click-info.lua et je le remplace par une simple commande de clic insérée dans le fichier conkyrc_cube. Et dès lors tout fonctionne sans freeze.
      Le seul inconvénient de cette variante est lié à la fonction « search » de xdotool : lors de sa première exécution, elle demande 3 à 5 secondes pour chercher et trouver la fenêtre ‘Cube’ du conky. C’est une caractéristique connue de « search » et contre laquelle il n’y a rien à faire. Mais ensuite, à partir de sa seconde exécution, ça devient quasi-instantané parce que la bonne fenêtre est mémorisée dans le « Window stack » de xdotool (la mémoire volatile de xdotool).
      Donc, lors de votre premier clic, il sera donc normal que votre conky demande 3 à 5 secondes pour exécuter la commande que vous lui aurez assignée. Mais par la suite, ce sera quasiment instantané.
       
      Pour résumer, vous n’avez alors plus besoin du fichier Click-info.lua et vous remplacez tout le contenu du fichier conkyrc_cube par celui-ci :
       
      #le conky appelant doit avoir sa propre fenêtre et un nom
      own_window_title Cube
      #definition du type de fenetre, et des décorations
      own_window_argb_visual no
      own_window yes
      own_window_type normal
      own_window_transparent yes
      own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
      #définition de la taille, et de la position du conky
      minimum_size 135 140
      alignment ml
      gap_x 10
      gap_y 10
      #vitesse de rotation du cube
      update_interval 0.15
      # réglage de la mémoire, pour éviter le clignotement
      double_buffer yes
      # Soustraire les mémoires tampons de la mémoire utilisée
      no_buffers yes
      text_buffer_size 1024
      #
      lua_load ~/essai/gif.lua
      #
      TEXT
      #Conky animation with images
      ${voffset -100}
      ${lua gif ~/temp * 0 15 135 135}
      ${texeci 1 xdotool search --limit 1 --name 'Cube' behave %@ mouse-click exec nemo /home/jlfh0816/Images}

       
      Et c’est tout !
       
       

      ADDENDUM: l’épineux problème de la nouvelle version 1.10 de conky …

       
      Depuis le 01/07/2015 (et donc depuis *ubuntu 15.10), conky est passé en version 1.10. Avec cette nouvelle version, non seulement la syntaxe d’écriture des conky a été chamboulée mais surtout certaines fonctions nécessaires au fonctionnement des scripts lua ne sont plus correctement assurées comme le constatent avec beaucoup de dépit les « cadors » du conky œuvrant sur le forum Bunsenlabs.
      A titre d’exemple, voici le constat amer et sans appel que fait unklar le 18/01/2017 :
       
      The abolition of the functions
      Lua bindings:
      * Cairo
      * Imlib2
      make the Lua scripts (e.g., an @mrpeachy)
      unusable.
      Conky 1.10 is not applicable to the normal user, unless he is learning
      LUA

       
      Devant un tel constat, plusieurs attitudes sont possibles :
      – soit nous restons en version 1.9 (c’est le cas si vous utilisez *ubuntu avant 15.10);
      – soit nous rétrogradons de 1.10 vers 1.9 (voir ce tutoriel de Loutch sur le forum Mint ou celui-ci de Corey Goldberg sur son blog);
      – soit nous nous passons des scripts lua : voir ce tutoriel dédié, toujours sur dolys.fr. C’est de la bidouille maison mais ça fonctionne ;
      – soit nous attendons stoïquement la sortie d’une nouvelle version de conky qui corrigera ces problèmes (version 1.11 ? version 2 ? )…. mais ça peut être long !
      – soit nous entrons dans le domaine du rêve (soyons fous !) : nous nous investissons à fond dans la programmation en lua … et nous corrigeons nous-mêmes le code 1.10….
       
      Pour la petite histoire, sachez que la plupart des « cadors » du conky qui œuvrent sur le forum Bunsenlabs ont décidé de rétrograder en version 1.9 (voir à ce sujet la déclaration sans appel de Sector11) !
       

      [dkpdf-button]

      Xubuntu-Voyager 18.04.4 LTS

      #5675
      patuxpatux
      Participant

        Salut Jlfh0816,

        Alors la chapeau! et merci de partager…moi qui aime bidouiller j’ai du taf la; ma femme va encore raler que je passe trop de temps devant mon ordi!
        mon installation est la même que la tienne,(j’étais passé en 16.04.01 mais j’ai pas aimé) du coup je reviens à conky 1.9.0. Ouf!! Bravo pour ton travail.
        Cordialement
        Patux

        #5682
        jlfh0816jlfh0816
        Moderator

          @patux
          Merci de ton commentaire, ça fait toujours plaisir de savoir qu’on a pu être utile à quelqu’un.
          Je te souhaite le plein succès pour tes bidouilles !

          Xubuntu-Voyager 18.04.4 LTS

        3 sujets de 1 à 3 (sur un total de 3)
        • Vous devez être connecté pour répondre à ce sujet.