summaryrefslogtreecommitdiff
path: root/src/sxwm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sxwm.c')
-rw-r--r--src/sxwm.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/sxwm.c b/src/sxwm.c
index 843b133..1b3902b 100644
--- a/src/sxwm.c
+++ b/src/sxwm.c
@@ -2630,6 +2630,22 @@ void toggle_floating_global(void)
update_borders();
}
+void set_opacity(Window w, double opacity)
+{
+ unsigned long op = (unsigned long)(opacity * 0xFFFFFFFF);
+ Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False);
+
+ if (opacity < 0.0) opacity = 0.0;
+ if (opacity > 1.0) opacity = 1.0;
+ XChangeProperty(dpy, w, atom, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&op, 1);
+}
+
+void reset_opacity(Window w)
+{
+ Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False);
+ XDeleteProperty(dpy, w, atom);
+}
+
void toggle_fullscreen(void)
{
if (!focused) {
@@ -2659,10 +2675,12 @@ void toggle_fullscreen(void)
XSetWindowBorderWidth(dpy, focused->win, 0);
XMoveResizeWindow(dpy, focused->win, fs_x, fs_y, fs_w, fs_h);
XRaiseWindow(dpy, focused->win);
+ set_opacity(focused->win, 100);
}
else {
XMoveResizeWindow(dpy, focused->win, focused->orig_x, focused->orig_y, focused->orig_w, focused->orig_h);
XSetWindowBorderWidth(dpy, focused->win, user_config.border_width);
+ reset_opacity(focused->win);
if (!focused->floating) {
focused->mon = get_monitor_for(focused);