aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorLibravatar Thorben Günther <admin@xenrox.net>2019-12-05 13:15:41 +0100
committerLibravatar Drew DeVault <sir@cmpwn.com>2019-12-06 15:52:33 -0500
commit6235423544b7e3feab5a6775cd4d06a3b171dd54 (patch)
treec2d2db345f6874274d28f078ee4ffeebea21a604 /contrib
parentconfig: apply input type configs on reload (diff)
downloadsway-6235423544b7e3feab5a6775cd4d06a3b171dd54.tar.gz
sway-6235423544b7e3feab5a6775cd4d06a3b171dd54.tar.zst
sway-6235423544b7e3feab5a6775cd4d06a3b171dd54.zip
Improve transparency script
Transparency gets reset when the script is terminated. Added command line option to set transparency strength without changing the script. Added support for multiple displays.
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/inactive-windows-transparency.py70
1 files changed, 53 insertions, 17 deletions
diff --git a/contrib/inactive-windows-transparency.py b/contrib/inactive-windows-transparency.py
index af26c017..15e2a91b 100755
--- a/contrib/inactive-windows-transparency.py
+++ b/contrib/inactive-windows-transparency.py
@@ -3,26 +3,62 @@
3# This script requires i3ipc-python package (install it from a system package manager 3# This script requires i3ipc-python package (install it from a system package manager
4# or pip). 4# or pip).
5# It makes inactive windows transparent. Use `transparency_val` variable to control 5# It makes inactive windows transparent. Use `transparency_val` variable to control
6# transparency strength in range of 0…1. 6# transparency strength in range of 0…1 or use the command line argument -o.
7 7
8import argparse
8import i3ipc 9import i3ipc
10import signal
11import sys
9 12
10transparency_val = '0.8';
11ipc = i3ipc.Connection()
12prev_focused = None
13 13
14for window in ipc.get_tree(): 14def on_window_focus(ipc, event):
15 if window.focused:
16 prev_focused = window
17 else:
18 window.command('opacity ' + transparency_val)
19
20def on_window_focus(ipc, focused):
21 global prev_focused 15 global prev_focused
22 if focused.container.id != prev_focused.id: # https://github.com/swaywm/sway/issues/2859 16 global prev_workspace
23 focused.container.command('opacity 1') 17
24 prev_focused.command('opacity ' + transparency_val) 18 focused = event.container
25 prev_focused = focused.container 19 workspace = ipc.get_tree().find_focused().workspace().num
20
21 if focused.id != prev_focused.id: # https://github.com/swaywm/sway/issues/2859
22 focused.command("opacity 1")
23 if workspace == prev_workspace:
24 prev_focused.command("opacity " + transparency_val)
25 prev_focused = focused
26 prev_workspace = workspace
27
28
29def remove_opacity(ipc):
30 for workspace in ipc.get_tree().workspaces():
31 for w in workspace:
32 w.command("opacity 1")
33 ipc.main_quit()
34 sys.exit(0)
35
36
37if __name__ == "__main__":
38 transparency_val = "0.80"
39
40 parser = argparse.ArgumentParser(
41 description="This script allows you to set the transparency of unfocused windows in sway."
42 )
43 parser.add_argument(
44 "--opacity",
45 "-o",
46 type=str,
47 default=transparency_val,
48 help="set opacity value in range 0...1",
49 )
50 args = parser.parse_args()
51
52 ipc = i3ipc.Connection()
53 prev_focused = None
54 prev_workspace = ipc.get_tree().find_focused().workspace().num
26 55
27ipc.on("window::focus", on_window_focus) 56 for window in ipc.get_tree():
28ipc.main() 57 if window.focused:
58 prev_focused = window
59 else:
60 window.command("opacity " + args.opacity)
61 for sig in [signal.SIGINT, signal.SIGTERM]:
62 signal.signal(sig, lambda signal, frame: remove_opacity(ipc))
63 ipc.on("window::focus", on_window_focus)
64 ipc.main()