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:
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 firefox
odergnome-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
Das Skript verwendet
xdotool
sudo apt-get install xdotool
Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es unter
show_datetime.py
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.
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
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 .desktop
eine 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 wmctrl
mit 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