This commit is contained in:
Dylan Araps 2019-10-11 20:33:03 +03:00
parent 9cf2ce8736
commit 9fb183c11a
2 changed files with 48 additions and 55 deletions

40
catwm.c
View File

@ -49,29 +49,29 @@ struct desktop{
client *current; client *current;
}; };
static void add_window(Window w); static void win_add(Window w);
static void buttonpress(XEvent *e); static void buttonpress(XEvent *e);
static void buttonrelease(XEvent *e); static void buttonrelease(XEvent *e);
static void center_window(); static void win_mid();
static void fullscreen_toggle(); static void win_fs();
static void change_desktop(const Arg arg); static void change_desktop(const Arg arg);
static void client_to_desktop(const Arg arg); static void win_to_ws(const Arg arg);
static void configurerequest(XEvent *e); static void configurerequest(XEvent *e);
static void destroynotify(XEvent *e); static void destroynotify(XEvent *e);
static void grabkeys(); static void grabkeys();
static void init(); static void init();
static void keypress(XEvent *e); static void keypress(XEvent *e);
static void kill_client(); static void win_kill();
static void maprequest(XEvent *e); static void maprequest(XEvent *e);
static void motionnotify(XEvent *e); static void motionnotify(XEvent *e);
static void next_win(); static void win_next();
static void remove_window(Window w); static void win_del(Window w);
static void save_desktop(int i); static void save_desktop(int i);
static void select_desktop(int i); static void select_desktop(int i);
static void send_kill_signal(Window w); static void send_kill_signal(Window w);
static void setup(); static void setup();
static void sigchld(int unused); static void sigchld(int unused);
static void spawn(const Arg arg); static void sh(const Arg arg);
static void update_current(); static void update_current();
#include "config.h" #include "config.h"
@ -100,7 +100,7 @@ static void (*events[LASTEvent])(XEvent *e) = {
[MotionNotify] = motionnotify [MotionNotify] = motionnotify
}; };
void add_window(Window w) { void win_add(Window w) {
client *c, *t; client *c, *t;
if (!(c = (client *)calloc(1,sizeof(client)))) if (!(c = (client *)calloc(1,sizeof(client))))
@ -143,7 +143,7 @@ void change_desktop(const Arg arg) {
update_current(); update_current();
} }
void center_window() { void win_mid() {
XGetWindowAttributes(dis, current->win, &attr); XGetWindowAttributes(dis, current->win, &attr);
int x = (sw / 2) - (attr.width / 2); int x = (sw / 2) - (attr.width / 2);
@ -152,7 +152,7 @@ void center_window() {
XMoveWindow(dis, current->win, x, y); XMoveWindow(dis, current->win, x, y);
} }
void fullscreen_toggle() { void win_fs() {
if (current->f != 1) { if (current->f != 1) {
XGetWindowAttributes(dis, current->win, &attr); XGetWindowAttributes(dis, current->win, &attr);
@ -173,7 +173,7 @@ void fullscreen_toggle() {
} }
} }
void client_to_desktop(const Arg arg) { void win_to_ws(const Arg arg) {
client *tmp = current; client *tmp = current;
int tmp2 = curr_desk; int tmp2 = curr_desk;
@ -182,13 +182,13 @@ void client_to_desktop(const Arg arg) {
// Add client to desktop // Add client to desktop
select_desktop(arg.i); select_desktop(arg.i);
add_window(tmp->win); win_add(tmp->win);
save_desktop(arg.i); save_desktop(arg.i);
// Remove client from current desktop // Remove client from current desktop
select_desktop(tmp2); select_desktop(tmp2);
XUnmapWindow(dis,tmp->win); XUnmapWindow(dis,tmp->win);
remove_window(tmp->win); win_del(tmp->win);
save_desktop(tmp2); save_desktop(tmp2);
update_current(); update_current();
} }
@ -220,7 +220,7 @@ void destroynotify(XEvent *e) {
if(i == 0) if(i == 0)
return; return;
remove_window(ev->window); win_del(ev->window);
update_current(); update_current();
} }
@ -285,7 +285,7 @@ void buttonrelease(XEvent *e) {
start.subwindow = None; start.subwindow = None;
} }
void kill_client() { void win_kill() {
if(current != NULL) { if(current != NULL) {
//send delete signal to window //send delete signal to window
XEvent ke; XEvent ke;
@ -313,12 +313,12 @@ void maprequest(XEvent *e) {
return; return;
} }
add_window(ev->window); win_add(ev->window);
XMapWindow(dis,ev->window); XMapWindow(dis,ev->window);
update_current(); update_current();
} }
void next_win() { void win_next() {
client *c; client *c;
if (current != NULL && head != NULL) { if (current != NULL && head != NULL) {
@ -332,7 +332,7 @@ void next_win() {
} }
} }
void remove_window(Window w) { void win_del(Window w) {
client *c; client *c;
for(c=head;c;c=c->next) { for(c=head;c;c=c->next) {
@ -435,7 +435,7 @@ void sigchld(int unused) {
while(0 < waitpid(-1, NULL, WNOHANG)); while(0 < waitpid(-1, NULL, WNOHANG));
} }
void spawn(const Arg arg) { void sh(const Arg arg) {
if (fork() == 0) { if (fork() == 0) {
if (fork() == 0) { if (fork() == 0) {
if (dis) close(ConnectionNumber(dis)); if (dis) close(ConnectionNumber(dis));

View File

@ -11,45 +11,38 @@
#ifndef CONFIG_H #ifndef CONFIG_H
#define CONFIG_H #define CONFIG_H
// Mod (Mod1 == alt) and master size #define MOD Mod4Mask
#define MOD Mod4Mask
#define MASTER_SIZE 0.5
// Colors const char* menu[] = {"dmenu_run",NULL};
#define FOCUS "rgb:bc/57/66" const char* term[] = {"st",NULL};
#define UNFOCUS "rgb:88/88/88" const char* voldown[] = {"amixer","sset","Master","5\%-",NULL};
const char* volup[] = {"amixer","sset","Master","5\%+",NULL};
const char* dmenucmd[] = {"dmenu_run",NULL}; #define DESKTOP(K,N) \
const char* urxvtcmd[] = {"st",NULL}; { MOD, K, change_desktop, {.i = N}}, \
const char* voldown[] = {"amixer","sset","Master","5\%-",NULL}; { MOD|ShiftMask, K, win_to_ws, {.i = N}},
const char* volup[] = {"amixer","sset","Master","5\%+",NULL};
// Avoid multiple paste
#define DESKTOPCHANGE(K,N) \
{ MOD, K, change_desktop, {.i = N}}, \
{ MOD|ShiftMask, K, client_to_desktop, {.i = N}},
// Shortcuts
static struct key keys[] = { static struct key keys[] = {
// MOD KEY FUNCTION ARGS {MOD, XK_q, win_kill, {NULL}},
{ MOD, XK_q, kill_client, {NULL}}, {MOD, XK_c, win_mid, {NULL}},
{ MOD, XK_c, center_window, {NULL}}, {MOD, XK_f, win_fs, {NULL}},
{ MOD, XK_f, fullscreen_toggle, {NULL}}, {Mod1Mask, XK_Tab, win_nex, {NULL}},
{ Mod1Mask, XK_Tab, next_win, {NULL}},
{ 0, XF86XK_AudioLowerVolume, spawn, {.com = voldown}}, {0, XF86XK_AudioLowerVolume, sh, {.com = voldown}},
{ 0, XF86XK_AudioRaiseVolume, spawn, {.com = volup}}, {0, XF86XK_AudioRaiseVolume, sh, {.com = volup}},
{ MOD, XK_d, spawn, {.com = dmenucmd}}, {MOD, XK_d, sh, {.com = menu}},
{ MOD, XK_Return, spawn, {.com = urxvtcmd}}, {MOD, XK_Return, sh, {.com = term}},
DESKTOPCHANGE( XK_0, 0)
DESKTOPCHANGE( XK_1, 1) DESKTOP( XK_0, 0)
DESKTOPCHANGE( XK_2, 2) DESKTOP( XK_1, 1)
DESKTOPCHANGE( XK_3, 3) DESKTOP( XK_2, 2)
DESKTOPCHANGE( XK_4, 4) DESKTOP( XK_3, 3)
DESKTOPCHANGE( XK_5, 5) DESKTOP( XK_4, 4)
DESKTOPCHANGE( XK_6, 6) DESKTOP( XK_5, 5)
DESKTOPCHANGE( XK_7, 7) DESKTOP( XK_6, 6)
DESKTOPCHANGE( XK_8, 8) DESKTOP( XK_7, 7)
DESKTOPCHANGE( XK_9, 9) DESKTOP( XK_8, 8)
DESKTOP( XK_9, 9)
}; };
#endif #endif