Wyświetla aktualną datę i godzinę w tytule okna

7

Czy obecnie / technicznie możliwe jest wyświetlanie aktualnej daty & amp; czas (np. cyfrowe numery zegara) do aktualnie aktywnego okna? Jak dołączanie jakiegoś tekstu ze skryptu?

    
zadawane mancvso 09.06.2015, 07:40
źródło

3 odpowiedzi

11

Wyświetlanie daty i daty czas w tytule aktywnego okna

Uruchomienie poniższego skryptu (edytowanej wersji tej ) w tle, w oknie przednim pokaże się aktualna data i amp; czas:

Jeślioknostraciostrość,czasniezostaniezaktualizowany;tylkowprzednimoknienajbardziej,czaszostaniezaktualizowanySkryptpokazujetakżedatęidatę.czasnakartęwdowolnejaplikacjikorzystającejzkart,np.firefoxlubgnome-terminal

Skrypt

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

Jak korzystać

  1. Skrypt używa xdotool

    sudo apt-get install xdotool
    
  2. Skopiuj poniższy skrypt do pustego pliku, zapisz go jako show_datetime.py

  3. Testuj - uruchom go komendą:

    python3 /path/to/show_datetime.py
    

    Otwórz nowe okno lub ustaw istniejące pole ostrości. Data i data czas powinien pojawić się w tytule okna w ciągu 1-2 sekund. Zaczekaj chwilę, aby sprawdzić, czy czas został zaktualizowany.

  4. Jeśli wszystko działa poprawnie, dodaj je do aplikacji startowych: Dash > Aplikacje startowe > Dodaj, dodaj polecenie:

    python3 /path/to/show_datetime.py
    
  5. Jeśli masz trudności z uruchomieniem go od uruchomienia, użyj polecenia (w aplikacjach startowych):

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

Objaśnienie

Skrypt zwraca uwagę na trzy rzeczy:

  • Najstarszy identyfikator okna
  • Najwyżej położona nazwa okna
  • Aktualny czas (minuta)

Jeśli w jednym z nich nastąpiła zmiana, data / czas jest dołączana lub aktualizowana do okna znajdującego się z przodu.

Po co używać nazwy - i - id okna?

  • Okno id służy do ustawienia tytułu okna, aby uniemożliwić ustawienie niewłaściwego okna (okna terminali mogą na przykład mieć taką samą nazwę).
  • Okno nazwa ma zawierać okna z zakładkami, np. %kod%. Okno nazwa zmieni się po wybraniu lub otworzeniu innej karty, a okno id nie ulegnie zmianie.
  • Warunkiem warunkowym Firefox jest edycja tytułu okna tylko wtedy, gdy istnieje ku temu powód.
odpowiedział Jacob Vlijm 09.06.2015, 13:09
źródło
5

Jest to prosty skrypt powłoki:

Wymagania

  • xdotool

    sudo apt-get install xdotool
    
  • wmctrl

    sudo apt-get install wmctrl
    

Główna część

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

|| jest separatorem pomiędzy tytułem okna a datą / czasem. Jeśli potrzebujesz innego, zmień go, np .:

#

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

Skrypt

#!/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
    
odpowiedział A.B. 09.06.2015, 14:00
źródło
3

Oto skrypt, który wykorzystuje bash, xprop i wmctrl (nie pochodzi z ubuntu). Ten skrypt może zostać dodany jako wpis autostartu lub umieszczony w pliku .desktop . Podstawowym założeniem jest uzyskanie aktualnego aktywnego okna, zapisanie jego bieżącego tytułu i użycie polecenia daty i tytułu daty do utworzenia nowego tytułu. Instrukcja if zapobiega nieskończonej pętli daty dołączenia. Możesz uzyskać wmctrl z sudo apt-get install wmctrl . W przeciwnym razie skrypt ten jest bardzo uproszczony, ale działa wystarczająco dobrze.

#!/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
    
odpowiedział Sergiy Kolodyazhnyy 09.06.2015, 15:25
źródło

Przeczytaj inne pytania na temat tagów