diff options
Diffstat (limited to 'contrib/inactive-windows-transparency.py')
-rwxr-xr-x | contrib/inactive-windows-transparency.py | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/contrib/inactive-windows-transparency.py b/contrib/inactive-windows-transparency.py deleted file mode 100755 index b81134dd..00000000 --- a/contrib/inactive-windows-transparency.py +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | #!/usr/bin/python | ||
2 | |||
3 | # This script requires i3ipc-python package (install it from a system package manager | ||
4 | # or pip). | ||
5 | # It makes inactive windows transparent. Use `transparency_val` variable to control | ||
6 | # transparency strength in range of 0…1 or use the command line argument -o. | ||
7 | |||
8 | import argparse | ||
9 | import i3ipc | ||
10 | import signal | ||
11 | import sys | ||
12 | from functools import partial | ||
13 | |||
14 | def on_window_focus(inactive_opacity, ipc, event): | ||
15 | global prev_focused | ||
16 | global prev_workspace | ||
17 | |||
18 | focused_workspace = ipc.get_tree().find_focused() | ||
19 | |||
20 | if focused_workspace == None: | ||
21 | return | ||
22 | |||
23 | focused = event.container | ||
24 | workspace = focused_workspace.workspace().num | ||
25 | |||
26 | if focused.id != prev_focused.id: # https://github.com/swaywm/sway/issues/2859 | ||
27 | focused.command("opacity 1") | ||
28 | if workspace == prev_workspace: | ||
29 | prev_focused.command("opacity " + inactive_opacity) | ||
30 | prev_focused = focused | ||
31 | prev_workspace = workspace | ||
32 | |||
33 | |||
34 | def remove_opacity(ipc): | ||
35 | for workspace in ipc.get_tree().workspaces(): | ||
36 | for w in workspace: | ||
37 | w.command("opacity 1") | ||
38 | ipc.main_quit() | ||
39 | sys.exit(0) | ||
40 | |||
41 | |||
42 | if __name__ == "__main__": | ||
43 | transparency_val = "0.80" | ||
44 | |||
45 | parser = argparse.ArgumentParser( | ||
46 | description="This script allows you to set the transparency of unfocused windows in sway." | ||
47 | ) | ||
48 | parser.add_argument( | ||
49 | "--opacity", | ||
50 | "-o", | ||
51 | type=str, | ||
52 | default=transparency_val, | ||
53 | help="set opacity value in range 0...1", | ||
54 | ) | ||
55 | args = parser.parse_args() | ||
56 | |||
57 | ipc = i3ipc.Connection() | ||
58 | prev_focused = None | ||
59 | prev_workspace = ipc.get_tree().find_focused().workspace().num | ||
60 | |||
61 | for window in ipc.get_tree(): | ||
62 | if window.focused: | ||
63 | prev_focused = window | ||
64 | else: | ||
65 | window.command("opacity " + args.opacity) | ||
66 | for sig in [signal.SIGINT, signal.SIGTERM]: | ||
67 | signal.signal(sig, lambda signal, frame: remove_opacity(ipc)) | ||
68 | ipc.on("window::focus", partial(on_window_focus, args.opacity)) | ||
69 | ipc.main() \ No newline at end of file | ||