Est-il actuellement/techniquement possible d'afficher la date et l'heure actuelles (par exemple, les numéros d'horloge numérique) dans la fenêtre actuellement active? Vous souhaitez ajouter du texte à partir d'un script?
En exécutant le script ci-dessous (une version modifiée de celle-ci ) en arrière-plan, la fenêtre la plus en avant affiche la date et l'heure actuelles:
Si la fenêtre perd le focus, l'heure ne sera pas mise à jour; seulement sur la fenêtre la plus en avant, l'heure sera mise à jour.
Le script indique également la date et l'heure par onglet de toute application utilisant des onglets, comme firefox
ou gnome-terminal
.
#!/usr/bin/env python3
import subprocess
import time
cmd = "xdotool", "getwindowfocus"
get_name = "xdotool", "getactivewindow", "getwindowname"
currtime_1 = time.strftime("%d-%m-%Y %H:%M"); wid_1 = subprocess.check_output(cmd).decode("utf-8").strip()
wname_1 = subprocess.check_output(get_name).decode("utf-8"); wname_1 = wname_1[:wname_1.rfind(" | ")]
while True:
time.sleep(2)
currtime_2 = time.strftime("%d-%m-%Y %H:%M")
try:
wid_2 = subprocess.check_output(cmd).decode("utf-8").strip()
wname_2 = subprocess.check_output(get_name).decode("utf-8"); wname_2 = wname_2[:wname_2.rfind(" | ")]
if any([wid_2 != wid_1, currtime_2 != currtime_1, wname_2 != wname_1]):
cmd2 = ["xdotool", "set_window", "--name", wname_2+" | "+str(currtime_2), wid_2]
subprocess.Popen(cmd2)
currtime_1 = currtime_2; wid_1 = wid_2
except subprocess.CalledProcessError:
pass
Le script utilise xdotool
Sudo apt-get install xdotool
Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous le nom show_datetime.py
Testez-le avec la commande:
python3 /path/to/show_datetime.py
Ouvrez une nouvelle fenêtre ou donnez un focus existant. La date et l'heure doivent apparaître dans le titre de la fenêtre dans un délai de 1 à 2 secondes. Attendez une minute pour voir si l'heure est mise à jour.
Si tout fonctionne correctement, ajoutez-le à vos applications de démarrage: Dash> Applications de démarrage> Ajouter, ajoutez la commande:
python3 /path/to/show_datetime.py
Si vous rencontrez des difficultés pour l'exécuter au démarrage, utilisez la commande (dans les applications de démarrage):
/bin/bash -c "sleep 20&&python3 /path/to/show_datetime.py"
Le script garde un œil sur trois choses:
S'il y a un changement dans l'un ou l'autre, la date/heure est ajoutée ou mise à jour dans la fenêtre la plus en avant actuellement.
Pourquoi utiliser le nom - et - l'id de la fenêtre?
Firefox
. Le nom de la fenêtre changera lorsqu'un autre onglet est choisi ou ouvert, tandis que la fenêtre- id ne changera pas.if any([])
consiste à éditer le titre de la fenêtre uniquement s'il existe une raison.xdotool
Sudo apt-get install xdotool
wmctrl
Sudo apt-get install wmctrl
wmctrl -r :ACTIVE: -N "$(awk -F' \\|\\|' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) || $(date "+%Y-%m-%d %H:%M:%S")"
Le ||
est le séparateur entre le titre de la fenêtre et la partie date/heure. Si vous en avez besoin, changez-le, par exemple:
#
wmctrl -r :ACTIVE: -N "$(awk -F' #' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) # $(date "+%Y-%m-%d %H:%M:%S")"
#!/bin/bash
while true
do
wmctrl -r :ACTIVE: -N "$(awk -F' \\|\\|' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) || $(date "+%Y-%m-%d %H:%M:%S")"
sleep 5
done
Voici un script qui utilise bash, xprop et wmctrl (ne vient pas avec Ubuntu). Ce script peut être ajouté en tant qu'entrée à démarrage automatique ou placé dans le fichier .desktop
. L'idée de base est d'obtenir l'identifiant de la fenêtre active en cours, de stocker son titre actuel et d'utiliser la sortie de la commande date et le titre pour former un nouveau titre. L'instruction if empêche la boucle infinie de la date d'ajout. Vous pouvez obtenir wmctrl
avec Sudo apt-get install wmctrl
. Sinon, ce script est très simpliste mais fait assez bien le travail.
#!/bin/bash
# Date : June 9 2015
# Author: Serg Kolo
# Description: script to append time to window titles
while sleep 1; do
ACTIVEID=$(xprop -root | awk '/^_NET_ACTIVE_WINDOW/ {gsub("0x","0x0");print $5}')
MATCHED_TITLE="$( wmctrl -l | awk -v searchterm=$ACTIVEID '$0~searchterm {for(i=4;i<=NF;i++) printf $i" "}')"
date --date="$(echo $MATCHED_TITLE | awk '{print $1" "$2}')" > /dev/null 2>&1
if [ "$?" -eq 0 ]; then
MATCHED_TITLE="$(echo $MATCHED_TITLE | awk '{for(i=3;i<=NF;i++) printf $i" "}')"
fi
sleep 1
wmctrl -i -r $ACTIVEID -T "$(date +"%D %H:%M" 2>/dev/null) $MATCHED_TITLE "
done