[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
    Modérateur

    … 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
    Modérateur

    @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.