Möchten Sie Ihre Stimmung mit einem hellen Thema am Tag und einem dunklen Thema am Abend auffrischen, da Sie es leid sind, ständig auf das Terminalbildschirm mit demselben Farbschema zu schauen? Es ist jedoch mühsam, die Themen jeden Morgen und Abend manuell zu wechseln. Lassen Sie Python dies tun.
Python API Ab iTerm2 Version 3.3.0, die im Juli 2019 veröffentlicht wurde, ist die Python-API verfügbar (Gibt es vorher eine API namens AppleScript?). Sie können die API auch von außerhalb von iTerm2 aufrufen, indem Sie "pip install iterm2" ausführen.
Um die API zu verwenden, aktivieren Sie ** Python-API aktivieren ** unter ** Einstellungen> Allgemein> Magie **.
Wenn Sie Ihr eigenes Skript vorbereiten möchten, wählen Sie ** Skripte> Verwalten> Neues Python-Skript **. Eine Anleitung wird angezeigt und eine Vorlage für Sie erstellt. Der erstellte Python-Code wird in "~ / Library / Application Support / iTerm2 / Scripts" gespeichert. Wenn Sie jedoch möchten, dass er beim Start der App automatisch geladen wird, klicken Sie auf den Ordner "AutoLaunch" unter den oben genannten "Scripts" Und dort aufbewahren.
Tatsächlich muss das automatische Skript zum Umschalten des Farbschemas nicht vollständig zerkratzt werden, und die offiziellen Beispielskripte sind fast vollständig. Es gibt.
Im ursprünglichen Beispielcode musste iTerm2 beim Umschalten des Farbschemas gestartet werden, daher wurde es so geändert, dass beim Starten der Anwendung mit Bezug auf die aktuelle Uhrzeit umgeschaltet wird. Speichern Sie den folgenden Code als "~ / Library / Application Support / iTerm2 / Scripts / AutoLaunch / change_color.py".
change_color.py
#!/usr/bin/env python3.7
import asyncio
import datetime
import iterm2
# Clock time to change colors.
LIGHT_TIME = (7, 0)
DARK_TIME = (17, 0)
# Color presets to use
LIGHT_PRESET_NAME = "material"
DARK_PRESET_NAME = "onedark"
# Profiles to update
PROFILES = ["Default"]
def get_datetime(t, time):
return datetime.datetime(t.year, t.month, t.day, time[0], time[1])
def datetime_after(t, time):
today = get_datetime(t, time)
if today > t:
return today
# Same time tomorrow
return today + datetime.timedelta(1)
def next_deadline_after(t):
light_deadline = datetime_after(t, LIGHT_TIME)
dark_deadline = datetime_after(t, DARK_TIME)
if light_deadline < dark_deadline:
return (LIGHT_PRESET_NAME, light_deadline)
return (DARK_PRESET_NAME, dark_deadline)
def get_duration():
now = datetime.datetime.now()
preset_name, deadline = next_deadline_after(now)
duration = (deadline - now).seconds
print("Sleep for {} seconds until {}".format(duration, deadline))
return duration, preset_name
async def set_colors(connection, preset_name):
print("Change to preset {}".format(preset_name))
preset = await iterm2.ColorPreset.async_get(connection, preset_name)
for partial in (await iterm2.PartialProfile.async_query(connection)):
if partial.name in PROFILES:
await partial.async_set_color_preset(preset)
async def main(connection):
now = datetime.datetime.now()
begin = get_datetime(now, LIGHT_TIME)
end = get_datetime(now, DARK_TIME)
if (now > begin and now < end):
await set_colors(connection, LIGHT_PRESET_NAME)
else:
await set_colors(connection, DARK_PRESET_NAME)
while True:
duration, preset_name = get_duration()
await asyncio.sleep(duration)
await set_colors(connection, preset_name)
await asyncio.sleep(1)
iterm2.run_forever(main)
Zuerst 5 Konstanten definiert
--LIGHT_TIME = (7, 0)
: Zeit zum Umschalten auf das Lichtthema (HH, MM)
--DARK_TIME = (16, 0)
: Zeit, zum dunklen Thema zu wechseln (HH, MM)
--LIGHT_PRESET_NAME = "..."
: Name des Lichtthemas (Standardthema ist Lichthintergrund
)
--DARK_PRESET_NAME = "..."
: Dunkler Themenname (Standardthema ist Dunkler Hintergrund
)
--PROFILES = ["..."]
: Profilname zum Ändern des Themas (Mehrfachauswahl zulässig)
Bitte ändern Sie nach Ihren Wünschen. Wählen Sie den Profilnamen aus der von Ihnen erstellten Profilliste aus und wählen Sie den Namen der Themenvoreinstellung im Menü ** Farbvoreinstellungen ... ** unten rechts aus.
Übrigens werden Fehler wie die Standardausgabe von "print (...)" oder die Angabe eines nicht vorhandenen voreingestellten Namens an ** Scripts> Manage> Console ** ausgegeben. ![Screenshot 2020-03-31 um 22.28.30-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274429/86fa67b6-3702-ebcc -8a86-ddd50ad7a7aa.png)
Psycho, Python das langweilige Ding machen zu lassen ~ ~ ~ ~ ~
Recommended Posts