Gaps no modo fibonacci do dwm

1. Gaps no modo fibonacci do dwm

Random
Rand0m

(usa Arch Linux)

Enviado em 29/10/2023 - 13:39h

Alguém sabe como adicionar gaps no modo fibonacci do dwm sem usar o patch vanitygaps? Eu uso o patch Gaps mas ele só funciona no modo tile


  


2. Re: Gaps no modo fibonacci do dwm

rafael
ogro33

(usa Debian)

Enviado em 29/10/2023 - 15:51h

Da uma olhada nesse link e vê se é isso que tu estas procurando:

https://dwm.suckless.org/patches/fibonacci/


3. Re: Gaps no modo fibonacci do dwm

Random
Rand0m

(usa Arch Linux)

Enviado em 29/10/2023 - 16:39h


ogro33 escreveu:

Da uma olhada nesse link e vê se é isso que tu estas procurando:

https://dwm.suckless.org/patches/fibonacci/


Isso é o patch para adicionar o modo fibonacci, que eu já tenho. Preciso saber algum modo de adicionar gaps no modo fibonacci


4. Re: Gaps no modo fibonacci do dwm

Buckminster
Buckminster

(usa Debian)

Enviado em 30/10/2023 - 16:56h

Não sei se seria alguma coisa assim:
https://github.com/plasmoduck/dwm-gaps/blob/master/fibonacci.c


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


5. Re: Gaps no modo fibonacci do dwm

Random
Rand0m

(usa Arch Linux)

Enviado em 05/11/2023 - 15:16h


Buckminster escreveu:

Não sei se seria alguma coisa assim:
https://github.com/plasmoduck/dwm-gaps/blob/master/fibonacci.c


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


Esse usa o vanitygaps, que eu quero evitar usar


6. Re: Gaps no modo fibonacci do dwm

Random
Rand0m

(usa Arch Linux)

Enviado em 05/11/2023 - 15:18h

Update:
Usando a ajuda do Bard eu consegui um código que adiciona gaps, e mexi um pouco nele pra tentar do jeito que quero. Funcionou 90%, o problema é que fica um gap no lado direito da tela quando abro mais de uma janela

Aqui uma foto de como fica: https://imgur.com/a/qDAvh5x

Eis aqui o código:


void
fibonacci(Monitor *mon, int s) {
unsigned int i, n, nx, ny, nw, nh, gap;
Client *c;

gap = 3; // gap size in pixels

for (n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++)
;
if (n == 0)
return;

nx = mon->wx;
ny = 0;
nw = mon->ww + gap;
nh = mon->wh + gap;

for (i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
if (((i % 2) && nh / 2 > 2 * c->bw) ||
((!(i % 2)) && nw / 2 > 2 * c->bw)) {
if (i < n - 1) {
if (i % 2)
nh /= 2;
else
nw /= 2;
if (((i % 4) == 2) && !s)
nx += nw;
else if (((i % 4) == 3) && !s)
ny += nh;
}
if ((i % 4) == 0) {
if (s)
ny += nh;
else
ny -= nh;
} else if ((i % 4) == 1)
nx += nw;
else if ((i % 4) == 2)
ny += nh;
else if ((i % 4) == 3) {
if (s)
nx += nw;
else
nx -= nw;
}
if (i == 0) {
if (n != 1)
nw = mon->ww * mon->mfact;
ny = mon->wy;
} else if (i == 1)
nw = mon->ww - nw;
i++;
}
resize(c, nx, ny, nw - 2 * c->bw - gap, nh - 2 * c->bw - gap, False);
}
}


void
dwindle(Monitor *mon) {
fibonacci(mon, 1);
}

void
spiral(Monitor *mon) {
fibonacci(mon, 0);
}


Alguém saberia como arrumar isso?


7. Re: Gaps no modo fibonacci do dwm

Buckminster
Buckminster

(usa Debian)

Enviado em 06/11/2023 - 14:22h

O código que tu fez no Brad é praticamente igual ao código do link que te enviei antes.
Mas enfim, veja se assim fica melhor:

void
fibonacci(Monitor *mon, int s) {
unsigned int i, n, nx, ny, nw, nh, gap;
Client *c;

gap = 3; // gap size in pixels

for (n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++)
;
if (n == 0)
return;

nx = mon->wx;
ny = mon->wy;
nw = mon->ww - 2 * gap; // Remove gap das extremidades
nh = mon->wh - 2 * gap; // Remove gap das extremidades

for (i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
if (((i % 2) && nh / 2 > 2 * c->bw) ||
((!(i % 2)) && nw / 2 > 2 * c->bw)) {
if (i < n - 1) {
if (i % 2)
nh /= 2;
else
nw /= 2;
if (((i % 4) == 2) && !s)
nx += nw + gap; // Adiciona gap entre as janelas
else if (((i % 4) == 3) && !s)
ny += nh + gap; // Adiciona gap entre as janelas
}
if ((i % 4) == 0) {
if (s)
ny += nh + gap; // Adiciona gap entre as janelas
else
ny -= nh + gap; // Adiciona gap entre as janelas
} else if ((i % 4) == 1)
nx += nw + gap; // Adiciona gap entre as janelas
else if ((i % 4) == 2)
ny += nh + gap; // Adiciona gap entre as janelas
else if ((i % 4) == 3) {
if (s)
nx += nw + gap; // Adiciona gap entre as janelas
else
nx -= nw + gap; // Adiciona gap entre as janelas
}
if (i == 0) {
if (n != 1)
nw = mon->ww * mon->mfact - gap; // Adiciona gap à direita
ny = mon->wy;
} else if (i == 1)
nw = mon->ww - nw - gap; // Adiciona gap à direita
i++;
}
resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
}
}

Não testei aqui, pois estou sem os parangolés para compilar, mas qualquer coisa tu adapta ajustando o valor do gap como tu quer e modificando cálculo da largura (nw) e da posição X (nx)


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


8. Re: Gaps no modo fibonacci do dwm

Random
Rand0m

(usa Arch Linux)

Enviado em 06/11/2023 - 16:51h


Buckminster escreveu:

O código que tu fez no Brad é praticamente igual ao código do link que te enviei antes.
Mas enfim, veja se assim fica melhor:

void
fibonacci(Monitor *mon, int s) {
unsigned int i, n, nx, ny, nw, nh, gap;
Client *c;

gap = 3; // gap size in pixels

for (n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++)
;
if (n == 0)
return;

nx = mon->wx;
ny = mon->wy;
nw = mon->ww - 2 * gap; // Remove gap das extremidades
nh = mon->wh - 2 * gap; // Remove gap das extremidades

for (i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
if (((i % 2) && nh / 2 > 2 * c->bw) ||
((!(i % 2)) && nw / 2 > 2 * c->bw)) {
if (i < n - 1) {
if (i % 2)
nh /= 2;
else
nw /= 2;
if (((i % 4) == 2) && !s)
nx += nw + gap; // Adiciona gap entre as janelas
else if (((i % 4) == 3) && !s)
ny += nh + gap; // Adiciona gap entre as janelas
}
if ((i % 4) == 0) {
if (s)
ny += nh + gap; // Adiciona gap entre as janelas
else
ny -= nh + gap; // Adiciona gap entre as janelas
} else if ((i % 4) == 1)
nx += nw + gap; // Adiciona gap entre as janelas
else if ((i % 4) == 2)
ny += nh + gap; // Adiciona gap entre as janelas
else if ((i % 4) == 3) {
if (s)
nx += nw + gap; // Adiciona gap entre as janelas
else
nx -= nw + gap; // Adiciona gap entre as janelas
}
if (i == 0) {
if (n != 1)
nw = mon->ww * mon->mfact - gap; // Adiciona gap à direita
ny = mon->wy;
} else if (i == 1)
nw = mon->ww - nw - gap; // Adiciona gap à direita
i++;
}
resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
}
}

Não testei aqui, pois estou sem os parangolés para compilar, mas qualquer coisa tu adapta ajustando o valor do gap como tu quer e modificando cálculo da largura (nw) e da posição X (nx)


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


Foi mal, não devo ter visto direito então, peço desculpas.
Also, com o código que você enviou ele fica com um gap na direita e embaixo, exceto quando eu abro mais de uma janela, aí os gaps ficam certos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts