Mostrar la fecha y hora actuales en el título de la ventana

Mostrar la fecha y hora actuales en el título de la ventana

¿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:

ingrese la descripción de la imagen aquí

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

  1. El guión utilizaxdotool

    sudo apt-get install xdotool
    
  2. Copie el siguiente script en un archivo vacío y guárdelo comoshow_datetime.py

  3. 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.

  4. 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
    
  5. 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 .desktopun 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 wmctrlcon 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

información relacionada