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:

gibé

Id de la fenêtre active.

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
################################################################################

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour la réponse, mais le sujet c'est "Id de la fenêtre active., Comment la récupérer avec un shell-script sous Linux ?" :P

C'est vrai que j'ai hésité entre les forums OSA et PROGRAMMATION.

Partager ce message


Lien à poster
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"...

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir tout le monde,

J'ai trouvé xdpyinfo qui donne plein d'infos.

Faute de mieux, je vais voir si je peux extraire l'id sans faire une usine à gaz.

...

keycode range: minimum 8, maximum 255

focus: window 0x6400007, revert to PointerRoot

number of extensions: 30

...

Partager ce message


Lien à poster
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
################################################################################

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×