Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Id de la fenêtre active.


gibé

Messages recommandés

Bonjour

 

J'ai écrit un script pour faire des copies d'écran.

Actuellement il fait soit une copie automatique d'écran

soit une copie de la fenêtre sélectionnée avec la souris.

 

Je voudrais rajouter une option pour faire une copie automatique de la fenêtre active.

Pour ça, j'ai besoin de passer à Import, l'Id ou le nom de la fenêtre active.

 

:P Mon problème , c'est que je ne sais pas comment on récupère l'Id ou le nom de cette fenêtre.

 

#!/bin/sh
################################################################################
#
#   Ce script fait une capture d'écran ou de fenêtre au format png
#   et sauve le fichier dans ~/Captures.
#   Il est doit être lancé en arrière plan par un raccourcis clavier
#
#   Paramètres :
#      - l'absence de paramètre provoque une copie d'écran.
#      - Un paramètre quelconque provoque une copie de la fenêtre sélectionnée par la croix.
#
#   Installation :
#      - Copier ce script dans /usr/bin.
#      - Définir deux raccourcis clavier un pour "/usr/bin/capture" (copie d'écran) 
#        et un autre pour "/usr/bin/capture X" (copie de fenêtre).
#
#      - Ce script utilise konsole pour les messages d'erreurs
#
################################################################################
# définition du chemin de stockage des images
CHEMIN=$HOME"/Captures"
# définition du terminal d'erreur et de ses paramètres
ERREUR="konsole -T Capture --nomenubar --notabbar --noscrollbar --vt_sz 80x3 --noresize --noclose -e echo "
# définition du programme utilisé
IMPORT="/usr/bin/import"

# contrôle si le programme est installé
if [ ! -x $IMPORT ] 
then
$ERREUR "\"$IMPORT\" est absent. Installez ImageMagick!"
exit 1
fi;

# contrôle si le répertoire de stockage existe 
if [ ! -e $CHEMIN ]
then
mkdir $CHEMIN    	# le répertoire n'existe pas on le crée
if [ $? -ne 0 ]	# si mkdir retourne une erreur
then	
 $ERREUR "Erreur : Création du répertoire $CHEMIN impossible !"
 exit 2
fi
fi;

# choix entre capture d'écran et capture de fenêtre 
if [ -z $1 ] 	# s'il n y a pas de paramètre
then		# on fait une capture d'écran 
Name="Ecr_"$(date +"%d.%m.%y-%H.%M.%S")".png" 	# définition du nom de l'image
Param=" -window root -silent "			# définition des paramètres pour import
else		# sinon on fait une capture de fenêtre
Name="Win_"$(date +"%d.%m.%y-%H.%M.%S")".png" 	# définition du nom de l'image
Param=" -silent " 				# définition des paramètres pour import
fi;

# capture de l'écran ou de la fenêtre sélectionnée par la croix
$IMPORT $Param $CHEMIN/$Name
if [ $? -ne 0 ]	# si IMPORT retourne une erreur
then	
$ERREUR "Erreur : Le fichier $Name n'a pas été créé !"
exit 3
fi;

# sortie normale
exit 0
################################################################################
#              fin du script
################################################################################

Lien vers le commentaire
Partager sur d’autres sites

xwininfo te donne l'id de la fenêtre dans laquelle tu cliques (oui, il faut cliquer), et xlsclients -a te donne les détails de toutes les fenêtres du bureau courant.

xprop permet de vérifier en continu l'évolution des propriétés des fenêtres, et apparemment seul le Window Manager sait quelle est la fenêtre qui a actuellement le focus, donc je crains que ce que tu souhaites faire ne soit un peu plus compliqué que prévu...

 

Par exemple, j'ai attribué la touche PrtScr à "xv -startgrab"...

Lien vers le commentaire
Partager sur d’autres sites

Ca te fournit juste l'id :

xdpyinfo | grep focus | cut -d, -f1 | cut -d\  -f 4

Je sais, j'aurais pu faire avec awk ou sed ou un autre truc...

Merci ! :P

 

J'ai gardé les trois possibilités, pour l'instant ça donne :

#!/bin/sh
################################################################################
#
#   Ce script fait une capture d'écran ou de fenêtre au format png
#   et sauve le fichier dans ~/Captures.
#   Il est doit être lancé en arrière plan par un raccourcis clavier
#
#   Paramètres :
#      - A pour une copie de la fenêtre active 
#      - X pour une copie de la fenêtre sélectionnée avec la souris
#      - l'absence de paramètre ou un paramètre quelconque provoque
#        une copie d'écran.
#
#   Installation :
#      - Copier ce script dans /usr/bin.
#      - Définir trois raccourcis clavier
#           un pour "/usr/bin/capture  " (copie d'écran) 
#           un pour "/usr/bin/capture A" (copie de la fenêtre active).
#           un pour "/usr/bin/capture X" (copie de la fenêtre sélectionnée).
#
#      - Ce script utilise konsole pour les messages d'erreurs
#
################################################################################
# définition du chemin de stockage des images
CHEMIN=$HOME"/Captures"
# définition du terminal d'erreur et de ses paramètres
ERREUR="konsole -T Capture --nomenubar --notabbar --noscrollbar --vt_sz 80x3 --noresize --noclose -e echo "
# définition du programme utilisé
IMPORT="/usr/bin/import"

# contrôle si le programme est installé
if [ ! -x $IMPORT ] 
then
$ERREUR "\"$IMPORT\" est absent. Installez ImageMagick!"
exit 1
fi;

# contrôle si le répertoire de stockage existe
if [ ! -e $CHEMIN ]
then
mkdir $CHEMIN    	# le répertoire n'existe pas on le crée
if [ $? -ne 0 ]	# si mkdir retourne une erreur
then	
 $ERREUR "Erreur : Création du répertoire $CHEMIN impossible !"
 exit 2
fi
fi;

# choix entre capture d'écran et capture de fenêtre
case $1 in
A) # capture de la fenêtre active
   Name="Win_"$(date +"%d.%m.%y-%H.%M.%S")".png" 		  # définition du nom de l'image
   if [ -x /usr/bin/xdpyinfo ]	# contrôle si xdpyinfo est disponible
   then			# si oui on recherche la fenêtre active
     Fenetre=`xdpyinfo | grep focus | cut -d, -f1 | cut -d\  -f 4` # trouve l'identifiant de la fenêtre active
     Fenetre=`echo "-window $Fenetre"`				    # définition de la fenêtre pour import
   else			# si non on fait une sélection manuelle de la fenêtre
     Fenetre=""						   # définition de la fenêtre pour import
   fi;
   ;;
X) # capture de la fenêtre sélectionnée avec la souris
   Name="Win_"$(date +"%d.%m.%y-%H.%M.%S")".png" 	          # définition du nom de l'image
   Fenetre=""						          # définition de la fenêtre pour import
   ;;
*) # capture d'écran
   Name="Ecr_"$(date +"%d.%m.%y-%H.%M.%S")".png" 	          # définition du nom de l'image
   Fenetre="-window root"				          # définition de la fenêtre pour import
   ;;
esac


# capture de l'écran ou de la fenêtre sélectionnée par la croix
$IMPORT $Fenetre -silent $CHEMIN/$Name
if [ $? -ne 0 ]	# si IMPORT retourne une erreur
then	
$ERREUR "Erreur : Le fichier $Name n'a pas été créé !"
exit 3
fi;

# sortie normale
exit 0
################################################################################
#              fin du script
################################################################################

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...