Par exemple, j'ouvre normalement le tapis de souris (équivalent xfce de gedit) dans le menu des applications. Cependant, je sais que vous pouvez également le faire dans un terminal en tapant mousepad
.
Suivant cet exemple, ce que je veux, c'est chaque fois que j'ouvre le tapis de souris via l'interface graphique, une nouvelle ligne est écrite dans un fichier journal indiquant quelque chose comme Sep 5 15:35:11 lucho@lucho:~$ mousepad
. Plus généralement, ce que je veux, c'est consigner toutes les activités de l'interface graphique potentiellement réalisables via la ligne de commande (comme ouvrir des programmes, changer les autorisations, modifier les paramètres système, etc.) mais écrites dans son autre format d'exécution en ligne de commande . Je veux cela afin d'améliorer mes connaissances sur l'utilisation de la ligne de commande (sans passer par les man
pages). Il y a beaucoup de choses que je fais via l'interface graphique que je ne fais pas via la ligne de commande (certaines potentiellement automatisables via un script ou via des raccourcis clavier) et avoir ce fichier journal serait un bon moyen de les apprendre.
Je suis conscient de l'existence du fichier syslog /var/log
mais ce n'est pas ce dont j'ai besoin. Pour autant que je sache, l'application Activity Log Manager des référentiels Ubuntu n'affiche pas le format de ligne de commande. J'ai besoin de quelque chose comme le fichier .bash_history qui existe dans mon dossier d'accueil mais qui enregistre mes activités basées sur l'interface graphique.
unity-control-center background
ougnome-control-center background
(selon votre bureau, Unity ou XFCE ou GNOME). Mais le monde extérieur ne verra probablement quegnome-control-center
Réponses:
introduction
Bien qu'il ne soit pas possible de consigner toutes les actions de l'interface graphique, des choses telles que les commandes de journalisation qui correspondent aux fenêtres ouvertes peuvent être effectuées. Voici le script python simple qui fait le travail. Il est toujours en développement, mais accomplit 90% de la tâche requise.
Code source
Essai:
Le script affiche l'horodatage, le type d'événement, le PID de la fenêtre et la commande correspondante.
Comment utiliser
Les règles standard de tout script s'appliquent. Assurez-vous de stocker le script dans le
~/bin
répertoire. Si vous n'avez pas de~/bin
répertoire, créez-en un. Enregistrez-y le fichier de script et assurez-vous qu'il est exécutable avecchmod +x ~/bin/log_open_windows.py
. Après cela, vous pouvez l'exécuter à partir de la ligne de commande à tout moment en appelant~/log_open_windows.py
en ligne de commande.la source
Proposer ce type de fichier journal comme base d'apprentissage est en fait une excellente idée!
Malheureusement, de nombreuses actions des programmes GUI sont implémentées dans le programme lui-même, sans utiliser de commandes externes; Et même s'il utilise des commandes externes, cela peut être d'une manière différente de celle que l'on ferait dans un shell;
Cela n'existe donc pas et n'est pas facile à mettre en œuvre.
Mais j'ai une solution pour une partie du problème: le nom du programme dans l'interface graphique est parfois différent du nom du programme que l'on doit connaître pour une commande shell - pas seulement si le nom de l'interface graphique est traduit dans une langue locale.
Par exemple, comment démarrer le programme
Files
dans la ligne de virgule?Nous devons examiner tous les
*.desktop
fichiers pour le nom. Là, on retrouve la commande dans laExec
ligne:locate -b '.desktop' | xargs grep -ls '^Name.*=Files$' | xargs grep '^Exec.*'
répertorie les noms de fichiers de bureau et les commandes pour le programme GUI
File
- remplacez-le par le nom exact que vous recherchez - même s'il s'agit de plusieurs mots (pour la recherche de sous-chaîne, omettez le=
et$
).Avec la commande, je trouve
Files
peut-êtrenautilus
,dolphin
ouactive-filebrowser
:la source