¿Es actualmente/técnicamente posible mostrar la fecha y hora actuales (es decir, números de reloj digital) en la ventana actualmente activa? ¿Te gusta agregar texto de un guión?
Respuesta1
Mostrar fecha y hora en el título de la ventana activa
Ejecutando el siguiente script (una versión editada deÉste) en segundo plano, la ventana más frontal mostrará la fecha y hora actuales:
Si la ventana pierde el foco, la hora no se actualizará; Sólo en la ventana más frontal, la hora.voluntadestar actualizado.
El guión también muestra la fecha y la hora.por pestañaen cualquier aplicación usando pestañas, como firefox
ognome-terminal
La secuencia de comandos
#!/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
Cómo utilizar
El guión utiliza
xdotool
sudo apt-get install xdotool
Copie el siguiente script en un archivo vacío y guárdelo como
show_datetime.py
Pruébelo con el comando:
python3 /path/to/show_datetime.py
Abra una nueva ventana o dé foco a una existente. La fecha y la hora deberían aparecer en el título de la ventana en 1 o 2 segundos. Espere un minuto para ver si la hora se actualiza.
Si todo funciona bien, agréguelo a sus aplicaciones de inicio: Dash > Aplicaciones de inicio > Agregar, agregue el comando:
python3 /path/to/show_datetime.py
Si tiene dificultades para ejecutarlo desde el inicio, use el comando (en aplicaciones de inicio):
/bin/bash -c "sleep 20&&python3 /path/to/show_datetime.py"
Explicación
El guión vigila tres cosas:
- La ventana del frenteidentificación
- La ventana del frentenombre
- La corrientetiempo(minuto)
Si hay un cambio en cualquiera de ellos, la fecha/hora se agrega o se actualiza en la ventana actual en primer plano.
¿Por qué utilizar el nombre -y- la identificación de la ventana?
- La ventana-identificaciónse utiliza para establecer el título de la ventana, para evitar configurar la ventana incorrecta (las ventanas de terminal, por ejemplo, pueden tener nombres similares).
- La ventana-nombrees incluir ventanas con pestañas, por ejemplo
Firefox
. La ventananombrecambiará cuando se elija o abra otra pestaña, mientras que la ventanaidentificaciónno cambiará. - Elcondicional
if any([])
es editar el título de la ventana solo si hay un motivo para hacerlo.
Respuesta2
Es un script de shell simple:
Requisitos
xdotool
sudo apt-get install xdotool
wmctrl
sudo apt-get install wmctrl
Parte principal
wmctrl -r :ACTIVE: -N "$(awk -F' \\|\\|' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) || $(date "+%Y-%m-%d %H:%M:%S")"
Es ||
el separador entre el título de la ventana y la parte de fecha/hora. Si necesita otro, cámbielo, por ejemplo:
#
wmctrl -r :ACTIVE: -N "$(awk -F' #' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) # $(date "+%Y-%m-%d %H:%M:%S")"
La secuencia de comandos
#!/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
Respuesta3
Aquí hay un script que utiliza bash, xprop y wmctrl (no viene con ubuntu). Este script se puede agregar como una entrada de inicio automático o colocarse en .desktop
un archivo. La idea básica es obtener la identificación de la ventana activa actual, almacenar su título actual y usar la salida del comando de fecha y el título para formar un nuevo título. La declaración if evita un bucle infinito de agregar fecha. Puedes conseguir wmctrl
con sudo apt-get install wmctrl
. Por lo demás, este script es muy simplista pero funciona bastante bien.
#!/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