summaryrefslogtreecommitdiff
path: root/shared/home-manager/iterm2/auto_theme.py
diff options
context:
space:
mode:
Diffstat (limited to 'shared/home-manager/iterm2/auto_theme.py')
-rw-r--r--shared/home-manager/iterm2/auto_theme.py31
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)