dwm

Kris's build of dwm
git clone git clone https://git.krisyotam.com/krisyotam/dwm.git
Log | Files | Refs | README | LICENSE

dwmc.c (2403B)


      1 void
      2 setlayoutex(const Arg *arg)
      3 {
      4 	setlayout(&((Arg) { .v = &layouts[arg->i] }));
      5 }
      6 
      7 void
      8 viewex(const Arg *arg)
      9 {
     10 	view(&((Arg) { .ui = 1 << arg->ui }));
     11 }
     12 
     13 void
     14 viewallex(const Arg *arg)
     15 {
     16 	#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
     17 	view(&((Arg){.ui = ~SPTAGMASK}));
     18 	#else
     19 	view(&((Arg){.ui = ~0}));
     20 	#endif // SCRATCHPADS_PATCH
     21 }
     22 
     23 void
     24 toggleviewex(const Arg *arg)
     25 {
     26 	toggleview(&((Arg) { .ui = 1 << arg->ui }));
     27 }
     28 
     29 void
     30 tagex(const Arg *arg)
     31 {
     32 	tag(&((Arg) { .ui = 1 << arg->ui }));
     33 }
     34 
     35 void
     36 toggletagex(const Arg *arg)
     37 {
     38 	toggletag(&((Arg) { .ui = 1 << arg->ui }));
     39 }
     40 
     41 void
     42 tagallex(const Arg *arg)
     43 {
     44 	#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
     45 	tag(&((Arg){.ui = ~SPTAGMASK}));
     46 	#else
     47 	tag(&((Arg){.ui = ~0}));
     48 	#endif // SCRATCHPADS_PATCH
     49 }
     50 
     51 int
     52 fake_signal(void)
     53 {
     54 	char fsignal[256];
     55 	char indicator[9] = "fsignal:";
     56 	char str_sig[50];
     57 	char param[16];
     58 	int i, len_str_sig, n, paramn;
     59 	size_t len_fsignal, len_indicator = strlen(indicator);
     60 	Arg arg;
     61 
     62 	// Get root name property
     63 	if (gettextprop(root, XA_WM_NAME, fsignal, sizeof(fsignal))) {
     64 		len_fsignal = strlen(fsignal);
     65 
     66 		// Check if this is indeed a fake signal
     67 		if (len_indicator > len_fsignal ? 0 : strncmp(indicator, fsignal, len_indicator) == 0) {
     68 			paramn = sscanf(fsignal+len_indicator, "%s%n%s%n", str_sig, &len_str_sig, param, &n);
     69 
     70 			if (paramn == 1) arg = (Arg) {0};
     71 			else if (paramn > 2) return 1;
     72 			else if (strncmp(param, "i", n - len_str_sig) == 0)
     73 				#if IPC_PATCH
     74 				sscanf(fsignal + len_indicator + n, "%li", &(arg.i));
     75 				#else
     76 				sscanf(fsignal + len_indicator + n, "%i", &(arg.i));
     77 				#endif // IPC_PATCH
     78 			else if (strncmp(param, "ui", n - len_str_sig) == 0)
     79 				#if IPC_PATCH
     80 				sscanf(fsignal + len_indicator + n, "%lu", &(arg.ui));
     81 				#else
     82 				sscanf(fsignal + len_indicator + n, "%u", &(arg.ui));
     83 				#endif // IPC_PATCH
     84 			else if (strncmp(param, "f", n - len_str_sig) == 0)
     85 				sscanf(fsignal + len_indicator + n, "%f", &(arg.f));
     86 			else if (strncmp(param, "v", n - len_str_sig) == 0)
     87 				arg.v = &(fsignal[len_indicator + n + 1]);
     88 			else return 1;
     89 
     90 			// Check if a signal was found, and if so handle it
     91 			for (i = 0; i < LENGTH(signals); i++)
     92 				if (strncmp(str_sig, signals[i].sig, len_str_sig) == 0 && signals[i].func)
     93 					signals[i].func(&(arg));
     94 
     95 			// A fake signal was sent
     96 			return 1;
     97 		}
     98 	}
     99 
    100 	// No fake signal was sent, so proceed with update
    101 	return 0;
    102 }
    103