diff options
| author | tslil clingman <> | 2022-04-06 16:20:11 -0400 |
|---|---|---|
| committer | tslil clingman <> | 2022-04-06 16:20:11 -0400 |
| commit | 4af79f764d31692ce5146f5c9a00355c3b35f654 (patch) | |
| tree | 28d657b7f648c376deecb7bcf6ca4dba2dc7779c /sway/inactive-windows-transparency.py | |
| parent | c5224d827b34b9f63b5028d8ab4730cdf0b182b6 (diff) | |
| parent | 0b4aa5db57f3572feb97cadc61db3f69665989c8 (diff) | |
Merge branch 'master' of git.sr.ht:~tslil/dotfiles
Diffstat (limited to 'sway/inactive-windows-transparency.py')
| -rwxr-xr-x | sway/inactive-windows-transparency.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/sway/inactive-windows-transparency.py b/sway/inactive-windows-transparency.py new file mode 100755 index 0000000..b81134d --- /dev/null +++ b/sway/inactive-windows-transparency.py @@ -0,0 +1,69 @@ +#!/usr/bin/python + +# This script requires i3ipc-python package (install it from a system package manager +# or pip). +# It makes inactive windows transparent. Use `transparency_val` variable to control +# transparency strength in range of 0…1 or use the command line argument -o. + +import argparse +import i3ipc +import signal +import sys +from functools import partial + +def on_window_focus(inactive_opacity, ipc, event): + global prev_focused + global prev_workspace + + focused_workspace = ipc.get_tree().find_focused() + + if focused_workspace == None: + return + + focused = event.container + workspace = focused_workspace.workspace().num + + if focused.id != prev_focused.id: # https://github.com/swaywm/sway/issues/2859 + focused.command("opacity 1") + if workspace == prev_workspace: + prev_focused.command("opacity " + inactive_opacity) + prev_focused = focused + prev_workspace = workspace + + +def remove_opacity(ipc): + for workspace in ipc.get_tree().workspaces(): + for w in workspace: + w.command("opacity 1") + ipc.main_quit() + sys.exit(0) + + +if __name__ == "__main__": + transparency_val = "0.80" + + parser = argparse.ArgumentParser( + description="This script allows you to set the transparency of unfocused windows in sway." + ) + parser.add_argument( + "--opacity", + "-o", + type=str, + default=transparency_val, + help="set opacity value in range 0...1", + ) + args = parser.parse_args() + + ipc = i3ipc.Connection() + prev_focused = None + prev_workspace = ipc.get_tree().find_focused().workspace().num + + for window in ipc.get_tree(): + if window.focused: + prev_focused = window + else: + window.command("opacity " + args.opacity) + for sig in [signal.SIGINT, signal.SIGTERM]: + signal.signal(sig, lambda signal, frame: remove_opacity(ipc)) + ipc.on("window::focus", partial(on_window_focus, args.opacity)) + ipc.main()
\ No newline at end of file |
