aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/inactive-windows-transparency.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/inactive-windows-transparency.py')
-rwxr-xr-xcontrib/inactive-windows-transparency.py69
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
8import argparse
9import i3ipc
10import signal
11import sys
12from functools import partial
13
14def 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
34def 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
42if __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