Exibe a data e hora atuais no título da janela

7

É atualmente / tecnicamente possível exibir a data atual & amp; tempo (ou seja, números de relógio digital) para a janela atualmente ativa? Como acrescentar algum texto de um script?

    
por mancvso 09.06.2015 / 07:40

3 respostas

11

Mostrando data & amp; hora no título da janela ativa

Executando o script abaixo (uma versão editada de este ) em segundo plano, a janela frontal mostrará a data atual & amp; tempo:

Seajanelaperderofoco,ahoranãoseráatualizada;somentenafrentedajanela,otemposeráatualizado.
Oscripttambémmostraadata&tempoporguiaemqualqueraplicativousandoguias,comofirefoxougnome-terminal

Oscript

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

Como usar

  1. O script usa xdotool

    sudo apt-get install xdotool
    
  2. Copie o script abaixo em um arquivo vazio, salve-o como show_datetime.py

  3. Teste-o pelo comando:

    python3 /path/to/show_datetime.py
    

    Abra uma nova janela ou dê um único foco existente. A data & amp; o tempo deve aparecer no título da janela dentro de 1-2 segundos. Espere um minuto para ver se a hora está atualizada.

  4. Se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicione, adicione o comando:

    python3 /path/to/show_datetime.py
    
  5. Se você estiver com dificuldades para executá-lo a partir da inicialização, use o comando (em aplicativos de inicialização):

    /bin/bash -c "sleep 20&&python3 /path/to/show_datetime.py"
    

Explicação

O script fica de olho em três coisas:

  • O id da janela da frente
  • O nome da janela da frente
  • O atual tempo (minuto)

Se houver uma mudança em qualquer uma delas, a data / hora será anexada ou atualizada na janela do momento.

Por que usar o nome e o id da janela?

  • A janela id é usada para definir o título da janela, para impedir a configuração da janela errada (por exemplo, janelas de terminal podem receber nomes semelhantes).
  • O nome da janela inclui janelas com guias, por exemplo, %código%. A janela nome mudará quando outra aba for escolhida ou aberta, enquanto a janela id não será alterada.
  • O condicional Firefox é para editar o título da janela somente se houver um motivo para isso.
por Jacob Vlijm 09.06.2015 / 13:09
5

É um script de shell simples:

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")"

O || é o separador entre o título da janela e a parte de data / hora. Se você precisar de outro, mude-o, por exemplo:

#

wmctrl -r :ACTIVE: -N "$(awk -F' #' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) # $(date "+%Y-%m-%d %H:%M:%S")"

O script

#!/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
    
por A.B. 09.06.2015 / 14:00
3

Aqui está um script que utiliza bash, xprop e wmctrl (não vem com o Ubuntu). Esse script pode ser adicionado como uma entrada de início automático ou colocado no arquivo .desktop . A idéia básica é obter o ID da janela ativa atual, armazenar seu título atual e usar o comando output of date e o título para formar um novo título. A instrução if impede o loop infinito da data de anexação. Você pode obter wmctrl com sudo apt-get install wmctrl . Caso contrário, este script é muito simplista, mas faz o trabalho bem o suficiente.

#!/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
    
por Sergiy Kolodyazhnyy 09.06.2015 / 15:25