Zeigen Sie das aktuelle Datum und die aktuelle Uhrzeit im Titel des Fensters an

7

Ist es derzeit / technisch möglich, das aktuelle Datum und die aktuelle Uhrzeit (dh die Digitaluhrnummern) im aktuell aktiven Fenster anzuzeigen? Möchten Sie Text aus einem Skript anhängen?

Mancvso
quelle

Antworten:

10

Anzeigen von Datum und Uhrzeit im Titel des aktiven Fensters

Wenn Sie das folgende Skript (eine bearbeitete Version dieses Skripts ) im Hintergrund ausführen, wird im vordersten Fenster das aktuelle Datum und die aktuelle Uhrzeit angezeigt:

Geben Sie hier die Bildbeschreibung ein

Wenn das Fenster den Fokus verliert, wird die Uhrzeit nicht aktualisiert. nur auf der Vorderseite die meisten Fenster, die Zeit wird aktualisiert.
Das Skript zeigt auch das Datum und die Uhrzeit pro Registerkarte in jeder Anwendung mithilfe von Registerkarten wie firefoxoder angnome-terminal

Das Skript

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

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

  3. Testen Sie es mit dem folgenden Befehl:

    python3 /path/to/show_datetime.py

    Öffnen Sie ein neues Fenster oder geben Sie einen vorhandenen Fokus. Das Datum und die Uhrzeit sollten innerhalb von 1-2 Sekunden im Titel des Fensters angezeigt werden. Warten Sie eine Minute, um zu sehen, ob die Uhrzeit aktualisiert wird.

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

    python3 /path/to/show_datetime.py
  5. Wenn Sie beim Start Probleme beim Ausführen 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:

  • Die ID des vordersten Fensters
  • Der Name des vordersten Fensters
  • Die aktuelle Zeit (Minute)

Wenn sich eines davon ändert, wird das Datum / die Uhrzeit an das aktuell vorderste Fenster angehängt oder aktualisiert.

Warum den Namen -und- die ID des Fensters verwenden?

  • Die Fenster- ID wird verwendet, um den Titel des Fensters festzulegen , um zu verhindern, dass das falsche Fenster eingestellt wird (Terminalfenster können z. B. ähnlich benannt werden).
  • Der Fenstername ist tabbed Fenster zu schließen, zum Beispiel Firefox. Der Fenstername wird sich ändern , wenn eine andere Registerkarte ausgewählt oder geöffnet wird , während die Fenster - ID wird sich nicht ändern.
  • Die bedingte if any([]) ist das Fenster der Titel nur zu bearbeiten , wenn es einen Grund zu.
Jacob Vlijm
quelle
Funktioniert einwandfrei.
Mancvso
5

Es ist ein einfaches Shell-Skript:


Bedarf

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

Das ||ist das Trennzeichen zwischen dem Fenstertitel und dem Datum / Uhrzeit-Teil. Wenn Sie ein anderes benötigen, ändern Sie es, z.

#

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

Das Skript

#!/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
AB
quelle
sudo apt install wmctrlwurde benötigt. Funktioniert perfekt.
Mancvso
3

Hier ist ein Skript, das bash, xprop und wmctrl verwendet (wird nicht mit Ubuntu geliefert). Dieses Skript kann als Autostart-Eintrag hinzugefügt oder in eine .desktopDatei eingefügt werden. Die Grundidee besteht darin, die ID des aktuell aktiven Fensters abzurufen, den aktuellen Titel zu speichern und mithilfe der Ausgabe des Datumsbefehls und des Titels einen neuen Titel zu erstellen. Die if-Anweisung verhindert eine Endlosschleife des anhängenden Datums. Sie können erhalten wmctrlmit sudo apt-get install wmctrl. Ansonsten ist dieses Skript sehr simpel, macht aber die Arbeit 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
Sergiy Kolodyazhnyy
quelle
Erledigt die Arbeit. Der Fenstertitel geht jedoch verloren.
Mancvso
@ dael99 interessant. Ist es nur im Terminal verloren? oder auch in anderen Programmen? Bitte lassen Sie es mich wissen, damit ich meine Antwort verbessern kann
Sergiy Kolodyazhnyy
Auch in anderen Fenstern verloren (wie Firefox)
Mancvso
@ dael99 interessant. Ich habe dies mehrmals getestet, funktioniert immer noch auf allen Fenstern. Können Sie bitte set -xam Anfang des Skripts hinzufügen #!/bin/bashund mich wissen lassen, ob eine der Variablen nicht gesetzt ist?
Sergiy Kolodyazhnyy