Upload files to ".suckless/patch"

This commit is contained in:
coast 2025-05-29 22:44:03 +02:00
parent a4f72ccb0e
commit ed373fd5c1
5 changed files with 244 additions and 0 deletions

Binary file not shown.

130
.suckless/patch/dwmc Normal file
View file

@ -0,0 +1,130 @@
#!/usr/bin/env bash
signal() {
xsetroot -name "fsignal:$*"
}
case $# in
1)
case $1 in
focusurgent) ;&
mirrorlayout) ;&
mpdcontrol) ;&
pushdown) ;&
pushup) ;&
self_restart) ;&
setlayout) ;&
setcfact) ;&
switchcol) ;&
view) ;&
viewall) ;&
viewtoleft) ;&
viewtoright) ;&
tagtoleft) ;&
tagtoright) ;&
tagandviewtoleft) ;&
tagandviewtoright) ;&
transfer) ;&
transferall) ;&
togglealttag) ;&
togglebar) ;&
togglefloating) ;&
togglefullscreen) ;&
fullscreen) ;&
togglefakefullscreen) ;&
togglesticky) ;&
togglehorizontalmax) ;&
toggleverticalmax) ;&
togglemax) ;&
togglegaps) ;&
defaultgaps) ;&
unfloatvisible) ;&
winview) ;&
xrdb) ;&
zoom) ;&
killclient) ;&
quit)
signal $1
;;
*)
echo "Unknown command ($1) or missing one argument."
exit 1
;;
esac
;;
2)
case $1 in
cyclelayout) ;&
explace) ;&
moveplace) ;&
mpdchange) ;&
setkeymode) ;&
switchtag) ;&
togglescratch) ;&
view)
signal $1 ui $2
;;
viewex) ;&
toggleviewex) ;&
tagallmon) ;&
tagswapmon) ;&
tagex) ;&
toggletagex) ;&
setborderpx) ;&
setgaps) ;&
setlayoutex) ;&
setlayoutaxisex) ;&
swapfocus) ;&
focusstack) ;&
pushstack) ;&
inplacerotate) ;&
rotatestack) ;&
rotatelayoutaxis) ;&
incnmaster) ;&
incnstack) ;&
incrgaps) ;&
incrigaps) ;&
incrogaps) ;&
incrihgaps) ;&
incrivgaps) ;&
incrohgaps) ;&
incrovgaps) ;&
movestack) ;&
shiftview) ;&
shiftviewclients) ;&
focusmon) ;&
tagmon)
signal $1 i $2
;;
setcfact) ;&
setmfact)
signal $1 f $2
;;
*)
echo "Unknown command ($1) or too many arguments"
exit 1
;;
esac
;;
5)
case $1 in
setgaps)
# Expects "setgaps oh ov ih iv" where -1 means to keep existing values
[ $2 = -1 ] && oh=128 || oh=$2
[ $3 = -1 ] && ov=128 || ov=$3
[ $4 = -1 ] && ih=128 || ih=$4
[ $5 = -1 ] && iv=128 || iv=$5
signal $1 i $(((oh << 24) + (ov << 16) + (ih << 8) + iv))
;;
*)
echo "Unknown command ($1) or too many arguments"
exit 1
;;
esac
;;
*)
echo "Unknown command ($1) or too many arguments"
exit 1
;;
esac

85
.suckless/patch/dwmc.c Normal file
View file

@ -0,0 +1,85 @@
void
setlayoutex(const Arg *arg)
{
setlayout(&((Arg) { .v = &layouts[arg->i] }));
}
void
viewex(const Arg *arg)
{
view(&((Arg) { .ui = 1 << arg->ui }));
}
void
viewallex(const Arg *arg)
{
view(&((Arg){.ui = ~SPTAGMASK}));
}
void
toggleviewex(const Arg *arg)
{
toggleview(&((Arg) { .ui = 1 << arg->ui }));
}
void
tagex(const Arg *arg)
{
tag(&((Arg) { .ui = 1 << arg->ui }));
}
void
toggletagex(const Arg *arg)
{
toggletag(&((Arg) { .ui = 1 << arg->ui }));
}
void
tagallex(const Arg *arg)
{
tag(&((Arg){.ui = ~SPTAGMASK}));
}
int
fake_signal(void)
{
char fsignal[256];
char indicator[9] = "fsignal:";
char str_sig[50];
char param[16];
int i, len_str_sig, n, paramn;
size_t len_fsignal, len_indicator = strlen(indicator);
Arg arg;
// Get root name property
if (gettextprop(root, XA_WM_NAME, fsignal, sizeof(fsignal))) {
len_fsignal = strlen(fsignal);
// Check if this is indeed a fake signal
if (len_indicator > len_fsignal ? 0 : strncmp(indicator, fsignal, len_indicator) == 0) {
paramn = sscanf(fsignal+len_indicator, "%s%n%s%n", str_sig, &len_str_sig, param, &n);
if (paramn == 1) arg = (Arg) {0};
else if (paramn > 2) return 1;
else if (strncmp(param, "i", n - len_str_sig) == 0)
sscanf(fsignal + len_indicator + n, "%i", &(arg.i));
else if (strncmp(param, "ui", n - len_str_sig) == 0)
sscanf(fsignal + len_indicator + n, "%u", &(arg.ui));
else if (strncmp(param, "f", n - len_str_sig) == 0)
sscanf(fsignal + len_indicator + n, "%f", &(arg.f));
else return 1;
// Check if a signal was found, and if so handle it
for (i = 0; i < LENGTH(signals); i++)
if (strncmp(str_sig, signals[i].sig, len_str_sig) == 0 && signals[i].func)
signals[i].func(&(arg));
// A fake signal was sent
return 1;
}
}
// No fake signal was sent, so proceed with update
return 0;
}

14
.suckless/patch/dwmc.h Normal file
View file

@ -0,0 +1,14 @@
typedef struct {
const char * sig;
void (*func)(const Arg *);
} Signal;
static void setlayoutex(const Arg *arg);
static void viewex(const Arg *arg);
static void viewallex(const Arg *arg);
static void toggleviewex(const Arg *arg);
static void tagex(const Arg *arg);
static void toggletagex(const Arg *arg);
static void tagallex(const Arg *arg);
static int fake_signal(void);

View file

@ -0,0 +1,15 @@
Layout *last_layout;
void
fullscreen(const Arg *arg)
{
int monocle_pos = 0;
if (selmon->showbar || last_layout == NULL) {
for (last_layout = (Layout *)layouts; last_layout != selmon->lt[selmon->sellt]; last_layout++);
setlayout(&((Arg) { .v = &layouts[monocle_pos] }));
} else {
setlayout(&((Arg) { .v = last_layout }));
}
togglebar(arg);
}