diff --git a/sway/.config/sway/config b/sway/.config/sway/config index cb930af..dcebc1f 100644 --- a/sway/.config/sway/config +++ b/sway/.config/sway/config @@ -1,5 +1,6 @@ exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway exec_always autotiling -l 2 +exec_always ~/.config/sway/scripts/workspace-colors.py exec_always eww daemon && (eww open bar0 || true) && (eww open bar1 || true) exec_always mako diff --git a/sway/.config/sway/scripts/workspace-colors.py b/sway/.config/sway/scripts/workspace-colors.py new file mode 100755 index 0000000..3969813 --- /dev/null +++ b/sway/.config/sway/scripts/workspace-colors.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +import i3ipc +import os +import signal + +PID_FILE = '/tmp/workspace-colors.pid' + +COLORS = { + '1': '#69C3FF', + '2': '#FF69C3', + '3': '#69FFC3', + '4': '#C369FF', + '5': '#FFC369', +} + +# Kill any previous instance +try: + old_pid = int(open(PID_FILE).read()) + os.kill(old_pid, signal.SIGTERM) +except (OSError, ValueError): + pass + +with open(PID_FILE, 'w') as f: + f.write(str(os.getpid())) + +def apply_color(conn, ws_name): + color = COLORS.get(ws_name) + if color: + conn.command(f'client.focused {color} {color} {color} {color} {color}') + +def on_workspace_focus(conn, event): + apply_color(conn, event.current.name) + +conn = i3ipc.Connection() + +focused = next((w for w in conn.get_workspaces() if w.focused), None) +if focused: + apply_color(conn, focused.name) + +conn.on(i3ipc.Event.WORKSPACE_FOCUS, on_workspace_focus) +conn.main()