Fatigué de regarder l'écran du terminal avec la même palette de couleurs tout le temps, voulez-vous rafraîchir votre humeur avec un thème clair pendant la journée et un thème sombre le soir? Cependant, il est difficile de changer manuellement de thème chaque matin et chaque soir, alors laissez Python le faire.
Python API
À partir de la version 3.3.0 d'iTerm2 publiée en juillet 2019, l'API Python est disponible (existe-t-il une API appelée AppleScript avant cela?). Vous pouvez également accéder à l'API depuis l'extérieur d'iTerm2 en faisant pip install iterm2
.
Pour utiliser l'API, cochez ** Activer l'API Python ** dans ** Préférences> Général> Magic **.
Si vous souhaitez préparer votre propre script, sélectionnez ** Scripts> Gérer> Nouveau script Python ** et un guide sortira pour créer un modèle pour vous.
Le code Python créé est enregistré dans ~ / Library / Application Support / iTerm2 / Scripts
, mais si vous voulez qu'il soit chargé automatiquement au lancement de l'application, le dossier ʻAutoLaunch sous les
Scripts` ci-dessus Et stockez-le là-bas.
En fait, le script de changement de schéma de couleurs automatique n'a pas besoin d'être complètement effacé, et les [Exemples de scripts] officiels (https://www.iterm2.com/python-api/examples/index.html) sont presque terminés. Il y a.
Dans l'exemple de code d'origine, iTerm2 devait être démarré lors du changement de jeu de couleurs, il a donc été modifié afin qu'il basculera en référence à l'heure actuelle lors du démarrage de l'application. Enregistrez le code suivant sous ~ / 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)
Première définition de 5 constantes
--LIGHT_TIME = (7, 0)
: Il est temps de passer au thème clair (HH, MM)
--DARK_TIME = (16, 0)
: Il est temps de passer au thème sombre (HH, MM)
--LIGHT_PRESET_NAME = "..."
: Nom du thème clair (le thème par défaut est Fond clair
)
--DARK_PRESET_NAME = "..."
: Nom du thème sombre (le thème par défaut est Fond sombre
)
--PROFILES = ["..."]
: Nom du profil pour changer le thème (plusieurs sélections sont autorisées)
Veuillez changer à votre goût. Sélectionnez le nom du profil dans la liste des profils que vous avez créée, puis sélectionnez le nom du thème prédéfini dans le menu ** Color Presets ... ** en bas à droite.
À propos, des erreurs telles que la sortie standard de print (...)
ou lorsque vous spécifiez un nom prédéfini qui n'existe pas seront affichées dans ** Scripts> Gérer> Console **. ![Capture d'écran 2020-03-31 à 22.28.30-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274429/86fa67b6-3702-ebcc -8a86-ddd50ad7a7aa.png)
Psycho pour laisser Python faire la chose ennuyeuse ~ ~ ~ ~ ~
Recommended Posts