WSL Bash PowerShell Timer-App Erstellen

Eine einfache Timer-App mit WSL Bash und PowerShell erstellen

Dieser Artikel stellt vor, wie man eine einfache Timer-App mit WSL Bash und PowerShell erstellt. Es ist ein Timer, der Sie mit Sprache benachrichtigt. Er zeigt die verstrichene Zeit an, wenn der Timer abläuft.

Shou Arisaka
4 Min. Lesezeit
17. Nov. 2025

Dieser Artikel stellt vor, wie man eine einfache Timer-App mit WSL Bash und PowerShell erstellt.

Es ist ein Timer, der Sie mit Sprache benachrichtigt. Er zeigt die verstrichene Zeit an, wenn der Timer abläuft.

z.B. ttstimer "15m" "cooking" benachrichtigt Sie nach 15 Minuten mit Sprache und sagt cooking timer fired. 15 m passed.

Dieses Programm setzt einen Timer für ein angegebenes Zeitintervall, und wenn der Timer endet, liest es den angegebenen Text mit Sprachsynthese vor. Es benachrichtigt auch über die verstrichene Zeit. Unten füge ich Kommentare zu jeder Zeile hinzu und erkläre dann die Funktionsweise des Programms Schritt für Schritt.

ttstimer(){

# Beginn der Funktion zum Setzen des Timers

: e.g. ttstimer "15m" "cooking"

# Beispiel-Funktionsaufruf: Rufe diese Funktion mit Argumenten wie ttstimer "15m" "cooking" auf

json=
ttstimer_d=
ttstimer_w=

# Initialisiere json-Variable, ttstimer_d-Variable, ttstimer_w-Variable

[ -z "${1}" ] && return 1

# Wenn das erste Argument leer ist, beende Funktion als Fehler

json="$(python3 - $@ <<EOF
# -*- coding: utf-8 -*-

import sys
args = sys.argv

import re
import json

text = """${1}"""
result = re.match(r'(\d+)([a-z]{1})', text, re.M)
print (json.dumps(list(result.groups())))

EOF
)"

# Führe Python-Skript aus und speichere Ergebnis in json-Variable

[ -z "${json}" ] && return 1

# Wenn json-Variable leer ist, beende Funktion als Fehler

ttstimer_d="$( echo $json | parsejson '[0]' )"
ttstimer_w="$( echo $json | parsejson '[1]' )"

# Parse json-Inhalt und speichere in ttstimer_d und ttstimer_w

# sleep ${1} && tts "${2} timer fired. ${ttstimer_d} ${ttstimer_w} passed." && termdown
    sleep ${1} && ( tts "${2} timer fired. ${ttstimer_d} ${ttstimer_w} passed." & termdown )

# Warte für angegebene Zeit, lies angegebenen Text mit Sprachsynthese vor und benachrichtige verstrichene Zeit
# Führe im Hintergrund mit & aus
}

Die Hauptarbeitsschritte dieses Programms sind wie folgt:

  1. Die ttstimer-Funktion startet.

  2. Die Funktion empfängt ein Zeitintervall (z.B. “15m”) und Text (z.B. “cooking”) als Argumente.

  3. Initialisiere die Variablen json, ttstimer_d und ttstimer_w.

  4. Wenn das erste Argument leer ist, beende die Funktion als Fehler.

  5. Ein Python-Skript wird ausgeführt, das angegebene Zeitintervall (z.B. “15m”) wird mit regulären Ausdrücken aufgelöst und das Ergebnis wird im JSON-Format in der json-Variable gespeichert.

  6. Wenn die json-Variable leer ist, beende die Funktion als Fehler.

  7. Der Inhalt der json-Variable wird geparst und in den Variablen ttstimer_d und ttstimer_w gespeichert. Dies sind Werte, die das Zeitintervall in Zahl und Einheit aufteilen.

  8. Schlafe für das angegebene Zeitintervall (z.B. “15m”), dann lies den angegebenen Text (z.B. “cooking”) mit Sprachsynthese vor. Es benachrichtigt auch über die verstrichene Zeit. Diese Verarbeitung wird im Hintergrund ausgeführt.

Es begann als nur 3 Zeilen, aber wuchs, bevor ich es wusste.

Anderer Code

Der Zweck der folgenden Skripte ist, JSON-Daten mit der parsejson-Funktion in .bashrc zu parsen und die geparsten Daten mit Sprachsynthese mittels der tts-Funktion vorzulesen. Die tts-Funktion im PowerShell-Skript wird für denselben Zweck verwendet, führt aber Sprachsynthese innerhalb von PowerShell aus.

// .bashrc

parsejson(){
    : e.g. parsejson '[0]["title"]'
    python3 -c "import json,sys;print(json.load(sys.stdin)${1})"
}

tts(){
powershell.exe - <<EOF
tts "${1}"
EOF
}

// Microsoft.PowerShell_profile.ps1

function tts(){

Add-Type -AssemblyName System.speech
$tts = New-Object System.Speech.Synthesis.SpeechSynthesizer

$Phrase = @"
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-US">
<voice xml:lang="en-US">
<prosody rate="1">
<p>$($args[0])</p>
</prosody>
</voice>
</speak>
"@
$tts.SpeakSsml($Phrase)

}

.bashrc-Datei:

  1. parsejson-Funktion: Eine Funktion zum Extrahieren bestimmter Werte aus JSON-Daten. Zum Beispiel extrahiert der Aufruf parsejson '[0]["title"]' den Wert an der angegebenen Stelle in den JSON-Daten. Verwendet Python zum Parsen der JSON-Daten.

  2. tts-Funktion: Ruft PowerShell auf, um den angegebenen Text mit Sprachsynthese vorzulesen.

Microsoft.PowerShell_profile.ps1-Datei:

  1. tts-Funktion: Eine Funktion zum Ausführen von Sprachsynthese innerhalb von PowerShell. Verwendet die Klasse System.Speech.Synthesis.SpeechSynthesizer, um den angegebenen Text mit Sprachsynthese vorzulesen. Der Text wird im SSML-Format (Speech Synthesis Markup Language) bereitgestellt, und Spracheigenschaften (rate usw.) können konfiguriert werden.

Diesen Artikel teilen

Shou Arisaka 17. Nov. 2025

🔗 Links kopieren