grab some window function from client.c and move them in window.c
This commit is contained in:
parent
40e7654925
commit
ddf64e9db2
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
include config.mk
|
include config.mk
|
||||||
|
|
||||||
SRC = client.c draw.c event.c layout.c awesome.c tag.c util.c config.c screen.c statusbar.c uicb.c tab.c
|
SRC = client.c draw.c event.c layout.c awesome.c tag.c util.c config.c screen.c statusbar.c uicb.c tab.c window.c
|
||||||
OBJ = ${SRC:.c=.o} ${LAYOUTS:.c=.o}
|
OBJ = ${SRC:.c=.o} ${LAYOUTS:.c=.o}
|
||||||
|
|
||||||
all: options awesome
|
all: options awesome
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "statusbar.h"
|
#include "statusbar.h"
|
||||||
#include "uicb.h"
|
#include "uicb.h"
|
||||||
|
#include "window.h"
|
||||||
|
|
||||||
#define CONTROL_FIFO_PATH ".awesome_ctl"
|
#define CONTROL_FIFO_PATH ".awesome_ctl"
|
||||||
#define CONTROL_UNIX_SOCKET_PATH ".awesome_so_ctl"
|
#define CONTROL_UNIX_SOCKET_PATH ".awesome_so_ctl"
|
||||||
|
|
84
client.c
84
client.c
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
#include <X11/Xutil.h>
|
|
||||||
#include <X11/extensions/shape.h>
|
#include <X11/extensions/shape.h>
|
||||||
|
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
@ -31,6 +30,7 @@
|
||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "statusbar.h"
|
#include "statusbar.h"
|
||||||
|
#include "window.h"
|
||||||
#include "layouts/floating.h"
|
#include "layouts/floating.h"
|
||||||
|
|
||||||
/** Get a Client by its window
|
/** Get a Client by its window
|
||||||
|
@ -159,42 +159,6 @@ isprotodel(Display *disp, Window win)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set client WM_STATE property
|
|
||||||
* \param c the client
|
|
||||||
* \param state no idea
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
window_setstate(Display *disp, Window win, long state)
|
|
||||||
{
|
|
||||||
long data[] = { state, None };
|
|
||||||
|
|
||||||
XChangeProperty(disp, win, XInternAtom(disp, "WM_STATE", False),
|
|
||||||
XInternAtom(disp, "WM_STATE", False), 32,
|
|
||||||
PropModeReplace, (unsigned char *) data, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set client transparency using composite
|
|
||||||
* \param c client
|
|
||||||
* \param opacity opacity percentage
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
window_settrans(Display *disp, Window win, double opacity)
|
|
||||||
{
|
|
||||||
unsigned int real_opacity = 0xffffffff;
|
|
||||||
|
|
||||||
if(opacity >= 0 && opacity <= 100)
|
|
||||||
{
|
|
||||||
real_opacity = ((opacity / 100.0) * 0xffffffff);
|
|
||||||
XChangeProperty(disp, win,
|
|
||||||
XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False),
|
|
||||||
XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &real_opacity, 1L);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
XDeleteProperty(disp, win, XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False));
|
|
||||||
|
|
||||||
XSync(disp, False);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Swap two client in the linked list clients
|
/** Swap two client in the linked list clients
|
||||||
* \param c1 first client
|
* \param c1 first client
|
||||||
* \param c2 second client
|
* \param c2 second client
|
||||||
|
@ -245,52 +209,6 @@ ban(Client * c)
|
||||||
window_setstate(c->display, c->win, IconicState);
|
window_setstate(c->display, c->win, IconicState);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Configure client
|
|
||||||
* \param c the client
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
window_configure(Display *disp, Window win, int x, int y, int w, int h, int border)
|
|
||||||
{
|
|
||||||
XConfigureEvent ce;
|
|
||||||
|
|
||||||
ce.type = ConfigureNotify;
|
|
||||||
ce.display = disp;
|
|
||||||
ce.event = win;
|
|
||||||
ce.window = win;
|
|
||||||
ce.x = x;
|
|
||||||
ce.y = y;
|
|
||||||
ce.width = w;
|
|
||||||
ce.height = h;
|
|
||||||
ce.border_width = border;
|
|
||||||
ce.above = None;
|
|
||||||
ce.override_redirect = False;
|
|
||||||
XSendEvent(disp, win, False, StructureNotifyMask, (XEvent *) & ce);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get a window state (WM_STATE)
|
|
||||||
* \param disp Display ref
|
|
||||||
* \param w Client window
|
|
||||||
* \return state
|
|
||||||
*/
|
|
||||||
long
|
|
||||||
window_getstate(Display *disp, Window w)
|
|
||||||
{
|
|
||||||
int format, status;
|
|
||||||
long result = -1;
|
|
||||||
unsigned char *p = NULL;
|
|
||||||
unsigned long n, extra;
|
|
||||||
Atom real;
|
|
||||||
status = XGetWindowProperty(disp, w, XInternAtom(disp, "WM_STATE", False),
|
|
||||||
0L, 2L, False, XInternAtom(disp, "WM_STATE", False),
|
|
||||||
&real, &format, &n, &extra, (unsigned char **) &p);
|
|
||||||
if(status != Success)
|
|
||||||
return -1;
|
|
||||||
if(n != 0)
|
|
||||||
result = *p;
|
|
||||||
p_delete(&p);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Attach client after another one
|
/** Attach client after another one
|
||||||
* \param client to attach to
|
* \param client to attach to
|
||||||
* \param c the client
|
* \param c the client
|
||||||
|
|
2
client.h
2
client.h
|
@ -33,8 +33,6 @@ inline void client_attach(Client **, Client *);
|
||||||
inline void client_detach(Client **, Client *);
|
inline void client_detach(Client **, Client *);
|
||||||
void client_reattach_after(Client *, Client *);
|
void client_reattach_after(Client *, Client *);
|
||||||
void ban(Client *);
|
void ban(Client *);
|
||||||
void window_configure(Display *, Window, int, int, int, int, int);
|
|
||||||
long window_getstate(Display *, Window);
|
|
||||||
void focus(Client *, Bool, awesome_config *);
|
void focus(Client *, Bool, awesome_config *);
|
||||||
void manage(Window, XWindowAttributes *, awesome_config *);
|
void manage(Window, XWindowAttributes *, awesome_config *);
|
||||||
void resize(Client *, int, int, int, int, awesome_config *, Bool);
|
void resize(Client *, int, int, int, int, awesome_config *, Bool);
|
||||||
|
|
1
event.c
1
event.c
|
@ -32,6 +32,7 @@
|
||||||
#include "draw.h"
|
#include "draw.h"
|
||||||
#include "statusbar.h"
|
#include "statusbar.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "window.h"
|
||||||
#include "layouts/tile.h"
|
#include "layouts/tile.h"
|
||||||
#include "layouts/floating.h"
|
#include "layouts/floating.h"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
* window.c - window handling functions
|
||||||
|
*
|
||||||
|
* Copyright © 2007 Julien Danjou <julien@danjou.info>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <X11/Xatom.h>
|
||||||
|
|
||||||
|
#include "window.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
/** Set client WM_STATE property
|
||||||
|
* \param disp Display ref
|
||||||
|
* \param win Window
|
||||||
|
* \param state state
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
window_setstate(Display *disp, Window win, long state)
|
||||||
|
{
|
||||||
|
long data[] = { state, None };
|
||||||
|
|
||||||
|
return XChangeProperty(disp, win, XInternAtom(disp, "WM_STATE", False),
|
||||||
|
XInternAtom(disp, "WM_STATE", False), 32,
|
||||||
|
PropModeReplace, (unsigned char *) data, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get a window state (WM_STATE)
|
||||||
|
* \param disp Display ref
|
||||||
|
* \param w Client window
|
||||||
|
* \return state
|
||||||
|
*/
|
||||||
|
long
|
||||||
|
window_getstate(Display *disp, Window w)
|
||||||
|
{
|
||||||
|
int format;
|
||||||
|
long result = -1;
|
||||||
|
unsigned char *p = NULL;
|
||||||
|
unsigned long n, extra;
|
||||||
|
Atom real;
|
||||||
|
if(XGetWindowProperty(disp, w, XInternAtom(disp, "WM_STATE", False),
|
||||||
|
0L, 2L, False, XInternAtom(disp, "WM_STATE", False),
|
||||||
|
&real, &format, &n, &extra, (unsigned char **) &p) != Success)
|
||||||
|
return -1;
|
||||||
|
if(n != 0)
|
||||||
|
result = *p;
|
||||||
|
p_delete(&p);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status
|
||||||
|
window_configure(Display *disp, Window win, int x, int y, int w, int h, int border)
|
||||||
|
{
|
||||||
|
XConfigureEvent ce;
|
||||||
|
|
||||||
|
ce.type = ConfigureNotify;
|
||||||
|
ce.display = disp;
|
||||||
|
ce.event = win;
|
||||||
|
ce.window = win;
|
||||||
|
ce.x = x;
|
||||||
|
ce.y = y;
|
||||||
|
ce.width = w;
|
||||||
|
ce.height = h;
|
||||||
|
ce.border_width = border;
|
||||||
|
ce.above = None;
|
||||||
|
ce.override_redirect = False;
|
||||||
|
return XSendEvent(disp, win, False, StructureNotifyMask, (XEvent *) & ce);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
window_settrans(Display *disp, Window win, double opacity)
|
||||||
|
{
|
||||||
|
unsigned int real_opacity = 0xffffffff;
|
||||||
|
|
||||||
|
if(opacity >= 0 && opacity <= 100)
|
||||||
|
{
|
||||||
|
real_opacity = ((opacity / 100.0) * 0xffffffff);
|
||||||
|
XChangeProperty(disp, win, XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False),
|
||||||
|
XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &real_opacity, 1L);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
XDeleteProperty(disp, win, XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False));
|
||||||
|
|
||||||
|
XSync(disp, False);
|
||||||
|
}
|
||||||
|
|
||||||
|
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* window.h - window handling functions header
|
||||||
|
*
|
||||||
|
* Copyright © 2007 Julien Danjou <julien@danjou.info>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AWESOME_WINDOW_H
|
||||||
|
#define AWESOME_WINDOW_H
|
||||||
|
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
|
int window_setstate(Display *, Window, long);
|
||||||
|
long window_getstate(Display *, Window);
|
||||||
|
Status window_configure(Display *, Window, int, int, int, int, int);
|
||||||
|
void window_settrans(Display *, Window, double);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99
|
Loading…
Reference in New Issue