Add callscreen DWM plugin for incoming and active voice calls
This commit is contained in:
@@ -160,6 +160,39 @@ static int try_send_plugin_fifo(const char *plugin_name, int sub_argc, char **su
|
||||
} else if (strcmp(plugin_name, "dmenu") == 0 && sub_argc >= 2 && sub_argv[1] &&
|
||||
strcmp(sub_argv[1], "close") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "CLOSE\n");
|
||||
} else if (strcmp(plugin_name, "callscreen") == 0) {
|
||||
if (sub_argc >= 2 && sub_argv[1] && sub_argv[1][0]) {
|
||||
const char *verb = sub_argv[1];
|
||||
const char *a1 = (sub_argc >= 3 && sub_argv[2]) ? sub_argv[2] : "";
|
||||
const char *a2 = (sub_argc >= 4 && sub_argv[3]) ? sub_argv[3] : "";
|
||||
if (strcasecmp(verb, "incoming") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "INCOMING %s %s\n", a1[0] ? a1 : "-", a2);
|
||||
} else if (strcasecmp(verb, "outgoing") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "OUTGOING %s %s\n", a1[0] ? a1 : "-", a2);
|
||||
} else if (strcasecmp(verb, "active") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "ACTIVE %s %s\n", a1[0] ? a1 : "-", a2);
|
||||
} else if (strcasecmp(verb, "accept") == 0 || strcasecmp(verb, "pickup") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "ACCEPT\n");
|
||||
} else if (strcasecmp(verb, "hangup") == 0 || strcasecmp(verb, "reject") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "HANGUP\n");
|
||||
} else if (strcasecmp(verb, "mute") == 0 || strcasecmp(verb, "mute_ring") == 0 ||
|
||||
strcasecmp(verb, "ignore") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "MUTE_RING\n");
|
||||
} else if (strcasecmp(verb, "ended") == 0 || strcasecmp(verb, "end") == 0) {
|
||||
len = a1[0] ? snprintf(cmd, sizeof(cmd), "ENDED %s\n", a1)
|
||||
: snprintf(cmd, sizeof(cmd), "ENDED\n");
|
||||
} else if (strcasecmp(verb, "close") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "CLOSE\n");
|
||||
} else if (strcasecmp(verb, "record") == 0 || strcasecmp(verb, "toggle_rec") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "TOGGLE_REC\n");
|
||||
} else if (strcasecmp(verb, "mic") == 0 || strcasecmp(verb, "toggle_mic") == 0) {
|
||||
len = snprintf(cmd, sizeof(cmd), "TOGGLE_MIC\n");
|
||||
} else {
|
||||
len = snprintf(cmd, sizeof(cmd), "OPEN %s\n", verb);
|
||||
}
|
||||
} else {
|
||||
len = snprintf(cmd, sizeof(cmd), "OPEN\n");
|
||||
}
|
||||
} else if (sub_argc >= 2 && sub_argv[1] && strcmp(sub_argv[1], "newcontact") == 0) {
|
||||
const char *num = (sub_argc >= 3 && sub_argv[2]) ? sub_argv[2] : "";
|
||||
len = snprintf(cmd, sizeof(cmd), "OPEN new:%s\n", num);
|
||||
@@ -203,6 +236,9 @@ static const char *resolve_plugin_name_from_argv0(const char *argv0) {
|
||||
if (strcasecmp(base, "xcalllog") == 0 || strcasecmp(base, "calllog") == 0) {
|
||||
return "calllog";
|
||||
}
|
||||
if (strcasecmp(base, "xcallscreen") == 0 || strcasecmp(base, "callscreen") == 0) {
|
||||
return "callscreen";
|
||||
}
|
||||
if (strcasecmp(base, "xcontacts") == 0 || strcasecmp(base, "contacts") == 0) {
|
||||
return "contacts";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user