diff options
Diffstat (limited to 'shared/home-manager/iterm2/auto_theme.py')
-rw-r--r-- | shared/home-manager/iterm2/auto_theme.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/shared/home-manager/iterm2/auto_theme.py b/shared/home-manager/iterm2/auto_theme.py new file mode 100644 index 0000000..0970304 --- /dev/null +++ b/shared/home-manager/iterm2/auto_theme.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import asyncio +import iterm2 + +async def update(connection, theme): + # Themes have space-delimited attributes, one of which will be light or dark. + parts = theme.split(" ") + if "dark" in parts: + preset = await iterm2.ColorPreset.async_get(connection, "Dark Background") + else: + preset = await iterm2.ColorPreset.async_get(connection, "Light Background") + + # Update the list of all profiles and iterate over them. + profiles=await iterm2.PartialProfile.async_query(connection) + for partial in profiles: + # Fetch the full profile and then set the color preset in it. + profile = await partial.async_get_full_profile() + await profile.async_set_color_preset(preset) + +async def main(connection): + app = await iterm2.async_get_app(connection) + await update(connection, await app.async_get_variable("effectiveTheme")) + async with iterm2.VariableMonitor(connection, iterm2.VariableScopes.APP, "effectiveTheme", None) as mon: + while True: + # Block until theme changes + theme = await mon.async_get() + await update(connection, theme) + + +iterm2.run_forever(main) |