summaryrefslogtreecommitdiff
path: root/src/sxwm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sxwm.c')
-rw-r--r--src/sxwm.c45
1 files changed, 35 insertions, 10 deletions
diff --git a/src/sxwm.c b/src/sxwm.c
index 843b133..8a16b11 100644
--- a/src/sxwm.c
+++ b/src/sxwm.c
@@ -89,6 +89,7 @@ void remove_scratchpad(int n);
/* void resize_stack_add(void); */
/* void resize_stack_sub(void); */
void run(void);
+void reset_opacity(Window w);
void scan_existing_windows(void);
void select_input(Window w, Mask masks);
void send_wm_take_focus(Window w);
@@ -96,6 +97,7 @@ void setup(void);
void setup_atoms(void);
void set_frame_extents(Window w);
void set_input_focus(Client *c, Bool raise_win, Bool warp);
+void set_opacity(Window w, double opacity);
void set_win_scratchpad(int n);
int snap_coordinate(int pos, int size, int screen_size, int snap_dist);
void spawn(const char * const *argv);
@@ -1106,7 +1108,7 @@ void hdl_map_req(XEvent *xev)
}
if (open_windows == MAX_CLIENTS) {
- printf("sxwm: max clients reached, ignoring map request\n");
+ fprintf(stderr, "sxwm: max clients reached, ignoring map request\n");
return;
}
@@ -1458,13 +1460,13 @@ Bool is_child_proc(pid_t parent_pid, pid_t child_pid)
snprintf(path, sizeof(path), "/proc/%d/stat", current_pid);
f = fopen(path, "r");
if (!f) {
- printf("sxwm: could not open %s\n", path);
+ fprintf(stderr, "sxwm: could not open %s\n", path);
return False;
}
int ppid = 0;
if (fscanf(f, "%*d %*s %*c %d", &ppid) != 1) {
- printf("sxwm: failed to read ppid from %s\n", path);
+ fprintf(stderr, "sxwm: failed to read ppid from %s\n", path);
fclose(f);
return False;
}
@@ -1476,7 +1478,7 @@ Bool is_child_proc(pid_t parent_pid, pid_t child_pid)
if (ppid <= 1) {
/* Reached init or kernel */
- printf("sxwm: reached init/kernel, no relationship found\n");
+ fprintf(stderr, "sxwm: reached init/kernel, no relationship found\n");
break;
}
current_pid = ppid;
@@ -1720,7 +1722,7 @@ void quit(void)
XFreeCursor(dpy, cursor_move);
XFreeCursor(dpy, cursor_normal);
XFreeCursor(dpy, cursor_resize);
- printf("quitting...\n");
+ puts("quitting...");
running = False;
}
@@ -2174,6 +2176,27 @@ void set_win_scratchpad(int n)
scratchpads[n].enabled = False;
}
+void reset_opacity(Window w)
+{
+ Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False);
+ XDeleteProperty(dpy, w, atom);
+}
+
+
+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);
+}
+
int snap_coordinate(int pos, int size, int screen_size, int snap_dist)
{
if (UDIST(pos, 0) <= snap_dist) {
@@ -2659,10 +2682,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);
@@ -3014,7 +3039,7 @@ void xev_case(XEvent *xev)
evtable[xev->type](xev);
}
else {
- printf("sxwm: invalid event type: %d\n", xev->type);
+ fprintf(stderr, "sxwm: invalid event type: %d\n", xev->type);
}
}
@@ -3023,7 +3048,7 @@ int main(int ac, char **av)
if (ac > 1) {
if (strcmp(av[1], "-v") == 0 || strcmp(av[1], "--version") == 0) {
printf("%s\n%s\n%s\n", SXWM_VERSION, SXWM_AUTHOR, SXWM_LICINFO);
- exit(0);
+ return EXIT_SUCCESS;
}
else if (strcmp(av[1], "-b") == 0 || strcmp(av[1], "--backup") == 0) {
puts("sxwm: using backup keybinds");
@@ -3033,11 +3058,11 @@ int main(int ac, char **av)
puts("usage:\n");
puts("\t[-v || --version]: See the version of sxwm\n");
puts("\t[-b || --backup]: Use backup set of keybinds with sxwm\n");
- exit(0);
+ return EXIT_SUCCESS;
}
}
setup();
- printf("sxwm: starting...\n");
+ puts("sxwm: starting...");
run();
- return 0;
+ return EXIT_SUCCESS;
}