Antworten:
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:
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 firefox
oder angnome-terminal
#!/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
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
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.
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
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"
Das Skript behält drei Dinge im Auge:
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?
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.if any([])
ist das Fenster der Titel nur zu bearbeiten , wenn es einen Grund zu.xdotool
sudo apt-get install xdotool
wmctrl
sudo apt-get install wmctrl
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")"
#!/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
sudo apt install wmctrl
wurde benötigt. Funktioniert perfekt.
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 .desktop
Datei 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 wmctrl
mit 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
set -x
am Anfang des Skripts hinzufügen #!/bin/bash
und mich wissen lassen, ob eine der Variablen nicht gesetzt ist?