aboutsummaryrefslogblamecommitdiffstats
path: root/simple_scratchpad.c
blob: ee012e23a21d69b95c00ce9a0acbb936fe9eca68 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                                                



















                                                                                     
 



                                          
                            












                                                                         

                                               
                                                                           



                                    




                                
                                                                                 
                          





                                          
                            





                                                                         



                                                               



                                       
 
 
/* ************************************************************************** */
/*                                                 @@@            @@@@@@@@    */
/*                                                  @@@          @@@@@@@@@@   */
/*                                                   @@!         @@!   @@@@   */
/*                                                    !@!        !@!  @!@!@   */
/*   simple_scratchpad.c                               @!!       @!@ @! !@!   */
/*                                                      !!!      !@!!!  !!!   */
/*   By: julmajustus <julmajustus@tutanota.com>          !!:     !!:!   !!!   */
/*                                                        ::!    :!:    !:!   */
/*   Created: 2024/12/19 19:35:02 by jmakkone           ::    ::::::: ::   */
/*   Updated: 2026/05/20 23:58:16 by julmajustus            : :   : : :  :    */
/*                                                                            */
/* ************************************************************************** */

void draw_scratchpad(void) {
	Client *c;
	Monitor *m = selmon;

	if (scratchpad_visible[scratchpad_sel]) {
		wl_list_for_each(c, &scratchpad_clients[scratchpad_sel], link_temp) {
			c->mon = m;
			c->tags = m->tagset[m->seltags];
			arrange(m);
			focusclient(c, 1);
		}
	} else {
		wl_list_for_each(c, &scratchpad_clients[scratchpad_sel], link_temp) {
			c->tags = 0;
			focusclient(focustop(m), 1);
			arrange(m);
		}
	}
}


void
addscratchpad(const Arg *arg)
{
	Client *cc, *c = focustop(selmon);
	Monitor *m = selmon;

	if (!c)
		return;
	/* Check if the added client is already a scratchpad client */
	for (int i = 0; i < SCRATCHPAD_COUNT; i++) {
		wl_list_for_each(cc, &scratchpad_clients[i], link_temp) {
			if (cc == c)
				return;
		}
	}
	if (!c->isfloating) {
		setfloating(c, 1);
	}
	scratchpad_visible[scratchpad_sel] = 0;
	draw_scratchpad();
	wl_list_insert(&scratchpad_clients[scratchpad_sel], &c->link_temp);
	c->tags = 0;
	arrange(m);	
	focusclient(focustop(m), 1);
	arrange(m);	
}

void
togglescratchpad(const Arg *arg)
{
	scratchpad_visible[scratchpad_sel] = !scratchpad_visible[scratchpad_sel];
	draw_scratchpad();
}

void
removescratchpad(const Arg *arg)
{
	Client *sc, *c = focustop(selmon);
	Monitor *m = selmon;
	if (!c)
		return;
	for (int i = 0; i < SCRATCHPAD_COUNT; i++) {
		/* Check if c is in scratchpad_clients */
		wl_list_for_each(sc, &scratchpad_clients[i], link_temp) {
			if (sc == c) {
				wl_list_remove(&sc->link_temp);
				setfloating(sc, 0);
				arrange(m);
				focusclient(sc, 1);
				return;
			}
		}
	}

}