Zeigt das aktuelle Datum und die Uhrzeit im Fenstertitel an

Zeigt das aktuelle Datum und die Uhrzeit im Fenstertitel an

Ist es derzeit/technisch möglich, das aktuelle Datum und die aktuelle Uhrzeit (z. B. digitale Uhrzahlen) im aktuell aktiven Fenster anzuzeigen? Beispielsweise durch Anhängen von Text aus einem Skript?

Antwort1

Datum und Uhrzeit im Titel des aktiven Fensters anzeigen

Durch Ausführen des folgenden Skripts (eine bearbeitete Version vonDieses hier) im Hintergrund, das vorderste Fenster zeigt das aktuelle Datum und die Uhrzeit an:

Bildbeschreibung hier eingeben

Wenn das Fenster den Fokus verliert, wird die Zeit nicht aktualisiert; nur im vordersten Fenster wird die ZeitWilleaktualisiert werden.
Das Skript zeigt auch Datum und Uhrzeit anpro Registerkartein jeder Anwendung mit Tabs, wie firefoxodergnome-terminal

Das Drehbuch

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

Wie benutzt man

  1. Das Skript verwendetxdotool

    sudo apt-get install xdotool
    
  2. Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es untershow_datetime.py

  3. Führen Sie einen Testlauf mit dem folgenden Befehl durch:

    python3 /path/to/show_datetime.py
    

    Öffnen Sie ein neues Fenster oder fokussieren Sie ein vorhandenes. Datum und Uhrzeit sollten innerhalb von 1-2 Sekunden im Fenstertitel erscheinen. Warten Sie eine Minute, um zu sehen, ob die Uhrzeit aktualisiert wurde.

  4. Wenn alles gut funktioniert, fügen Sie es zu Ihren Startanwendungen hinzu: Dash > Startanwendungen > Hinzufügen und fügen Sie den folgenden Befehl hinzu:

    python3 /path/to/show_datetime.py
    
  5. Wenn Sie beim Ausführen beim Start Probleme haben, verwenden Sie den Befehl (in Startanwendungen):

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

Erläuterung

Das Skript behält drei Dinge im Auge:

  • Das vorderste FensterAusweis
  • Das vorderste FensterName
  • Die jetzigeZeit(Minute)

Wenn sich in einem der beiden Fenster eine Änderung ergibt, wird das Datum/die Uhrzeit an das aktuell vorderste Fenster angehängt bzw. aktualisiert.

Warum den Namen und die ID des Fensters verwenden?

  • Das Fenster-Ausweiswird verwendet, um den Titel des Fensters festzulegen, um zu verhindern, dass das falsche Fenster festgelegt wird (Terminalfenster können beispielsweise ähnlich benannt werden).
  • Das Fenster-Nameist die Einbeziehung von Fenstern mit Registerkarten, z Firefox. B. Das FensterNameändert sich, wenn ein anderer Tab gewählt oder geöffnet wird, während das Fenster-Ausweiswird sich nicht ändern.
  • Derbedingt if any([])besteht darin, den Fenstertitel nur zu bearbeiten, wenn ein Grund dafür besteht.

Antwort2

Es ist ein einfaches Shell-Skript:


Anforderungen

  • xdotool

    sudo apt-get install xdotool
    
  • wmctrl

    sudo apt-get install wmctrl
    

Hauptteil

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

Dies ||ist das Trennzeichen zwischen dem Fenstertitel und dem Datums-/Zeitteil. Wenn Sie ein anderes benötigen, ändern Sie es, z. B.:

#

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

Das Drehbuch

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

Antwort3

Hier ist ein Skript, das Bash, Xprop und Wmctrl verwendet (nicht in Ubuntu enthalten). Dieses Skript kann als Autostart-Eintrag hinzugefügt oder in .desktopeine Datei eingefügt werden. Die Grundidee besteht darin, die ID des aktuell aktiven Fensters abzurufen, seinen aktuellen Titel zu speichern und die Ausgabe des Datumsbefehls und des Titels zu verwenden, um einen neuen Titel zu bilden. Die if-Anweisung verhindert eine Endlosschleife beim Anhängen von Daten. Sie können es wmctrlmit abrufen sudo apt-get install wmctrl. Ansonsten ist dieses Skript sehr simpel, erledigt seine Aufgabe aber gut genug.

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

verwandte Informationen