summaryrefslogtreecommitdiffhomepage
path: root/patch/scratchpad.c
blob: 4edff52df265d2c4864a221f929195ce2457f43c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void
togglescratch(const Arg *arg)
{
       Client *c;
       unsigned int found = 0;
       unsigned int scratchtag = SPTAG(arg->ui);
       Arg sparg = {.v = scratchpads[arg->ui].cmd};

       for (c = selmon->clients; c && !(found = c->tags & scratchtag); c = c->next);
       if (found) {
               unsigned int newtagset = selmon->tagset[selmon->seltags] ^ scratchtag;
               if (newtagset) {
                       selmon->tagset[selmon->seltags] = newtagset;
                       focus(NULL);
                       arrange(selmon);
               }
               if (ISVISIBLE(c)) {
                       focus(c);
                       restack(selmon);
               }
       } else {
               selmon->tagset[selmon->seltags] |= scratchtag;
               spawn(&sparg);
       }
}