Créer une interface graphique en python pour le logiciel de capture d’écran scrot.

Introduction

Bonjour à tous,

J’utilise depuis près de deux ans, le logiciel de capture d’écran Shutter et comme vous pouvez le constater en cliquant sur le lien, la documentation s’est passablement appauvrie… Avant que tout ne s’écroule, j’ai donc décidé de changer mon cubi d’épaule et d’adopter scrot, un logiciel qui fait très bien son travail mais qui ne s’utilise qu’en ligne de commande, via la console. Pour un gouik, ce n’est pas un souci mais pour un utilisateur lambada, c’est une toute autre histoire. L’austérité du terminal peut fort bien le rebuter.

Alors que j’étais en villégiature au bord de la mer Baltique, il  m’est venu l’idée de doter cet outil d’une interface graphique codée dans mon langage de programmation préféré, en l’occurrence Python. C’est de toute façon, le seul que je maîtrise. Pour parvenir à mes fins, j’ai d’abord consulté la documentation du logiciel en entrant cette commande dans une console: man scrot

Voici ce que cette dernière retourne:

man_scrot

J’ai choisi de m’intéresser aux options -d (capture avec un temps de retard), -s (sélection d’une zone avec la souris), -u (capture de la fenêtre qui a le focus), et enfin -t (édition d’une miniature). Il est possible d’associer une ou plusieurs options. Il est possible également de n’en utiliser aucune et de ne donner aucun nom à son fichier. Pour cela, il suffit d’entrer la commande scrot. Cette dernière va faire une capture de la totalité de votre écran et lui donner un nom basé sur la date, l’heure et la résolution.

La page d’accueil

scrot_home_2

J’utilise la bibliothèque graphique Tkinter, Rien d’extraordinaire… C’est une icône gnome qui illustre le bouton. Ce dernier est enchâssé dans un widget LabelFrame avec le titre au-dessus. Initialement, je souhaitais donner à ce projet le nom de scrotum mais une rapide vérification dans le dictionnaire m’a fait prendre conscience que j’étais hors-sujet. Je me suis donc rabattu sur scrot-graphic… Je vous invite à cliquer sur l’appareil photo et à découvrir avec moi, le menu de l’application.

Si vous cliquez sur le bouton du haut (l’appareil-photo), vous retournez à la page d’accueil.

scrot_home_3

Le retardateur de capture

Si vous cliquez sur retardateur, un widget Scale apparaît et vous permet de régler le retard de capture en secondes.

scrot_scale

La miniaturisation (thumbnail)

Si vous cliquez sur Créer une miniature, un widget Scale apparaît également. Il vous permet de sélectionner le pourcentage de miniaturisation.

scrot_mini

Vous pouvez, bien évidemment combiner les deux options et choisir de retarder une capture qui va être miniatiurisée à 50 % par exemple.

Les modes de capture

Ils sont au nombre de trois et vous permettent de :

  • capturer la totalité de l’écran,
  • sélectionner une zone à capturer en délimitant celle-ci à l’aide de la souris (bouton gauche enfoncé),
  • capturer la fenêtre qui a le focus. Pour ce faire, un retard par défaut de 10 secondes est programmé et vous laisse le temps de cliquer sur la fenêtre à capturer pour lui donner le focus. 

À chaque fois que vous cliquez sur un de ces boutons, une fenêtre popup se matérialise et vous demande si vous souhaitez donner un nom à votre capture. Si vous ne le souhaitez pas ou si vous vous trompez dans le nom de la capture en entrant une chaîne de caractères vide par exemple, alors la capture sera enregistrée sous cette forme:

jour_mois_année_heure:minutes:secondes.png

Le code

Le code est disponible moyennant la modique somme de 300 € payables en espèce. Non, je plaisante! Il est ici dans mon dépôt framagit et vous en faites ce que vous voulez. Le fichier lanceur s’appelle scrot.py.

Ce code ne m’a pas posé d’énormes difficultés. Il me reste toutefois quelques fonctionnalités à programmer, je pense notamment à l’option -b qui permet de générer une capture de fenêtre avec sa décoration. Lors de la rédaction du code en Python, je me suis efforcé de respecter scrupuleusement la règle des 79 signes par ligne.

La question que je me pose est celle-ci. Il s’agit d’une interface graphique d’un logiciel qui existe déjà. Quelles sont les mentions légales que je dois rajouter? Dois-je prévenir les développeurs qui ont codé scrot? Merci par avance de bien vouloir m’éclairer sur ce sujet.

Le lanceur

Enfin, j’ai créé dans le répertoire /usr/share/applications un lanceur dont voici le code:

scrot_launch

scrot_launcher

Je n’ai pas besoin de vous préciser que toutes les captures d’écran de cet article ont été générées avec scrot-graphic. Je vous souhaite une bonne lecture et un bon dimanche à toutes et à tous.

6 commentaires sur “Créer une interface graphique en python pour le logiciel de capture d’écran scrot.

  1. Salut.
    Est-ce que tu as l’intention de documenter comment tu l’as fait?
    Je fais un peu de python mais pas à un très bon niveau et justement comment passer de trucs en ligne de commande qui ne servent qu’à des usages assez particuliers (en-dehors du milieu professionnel je veux dire) à des trucs plus marrants en graphique (enfin surtout des trucs où l’on voit ce que l’on fait quoi) est quelque chose qui m’intéresse mais que je ne sais pas faire…

    1. Bonjour François,

      Merci pour ton commentaire. Je dois encore le peaufiner mais il est opérationnel :


      Après avoir cloné le dépôt, ne pas oublier de conférer les droits d’exécution au fichier scrot.py 😉
      Benoît

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.