LINUX.ORG.RU

Не работает смена layout'a

 


0

1

Есть вот такой код, который на определенных тегах включает monocle. Он работает на 6.1, Но не работает на 6.2. Есть патч cyclelayouts, который циклически переключает layout. Так вот, он в 6.2 перестал переключать layout. Т.е панельке отображается, что я переключил из монокля в tile, а фактически стоит monocle. Как это пофиксить?

Monitor *
createmon(void)
{
	Monitor *m;
	unsigned int i;

	m = ecalloc(1, sizeof(Monitor));
	m->tagset[0] = m->tagset[1] = 1;
	m->mfact = mfact;
	m->nmaster = nmaster;
	m->showbar = showbar;
	m->topbar = topbar;
	m->lt[0] = &layouts[0];
	m->lt[1] = &layouts[1 % LENGTH(layouts)];
	strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
	m->pertag = ecalloc(1, sizeof(Pertag));
	m->pertag->curtag = m->pertag->prevtag = 1;

	for (i = 0; i <= LENGTH(tags); i++) {
          m->pertag->nmasters[i] = m->nmaster;
          m->pertag->mfacts[i] = m->mfact;
		
          // change layout in tags & hide bar
          if(i == 1 || i == 4 || i == 9) {
            // set monocle
            m->pertag->ltidxs[i][0] = m->lt[1]; // set monocle
          } else {
            m->pertag->ltidxs[i][0] = m->lt[0];
          }
          
          m->pertag->ltidxs[i][1] = m->lt[1];
          m->pertag->sellts[i] = m->sellt;
          m->pertag->showbars[i] = m->showbar;
	}

	return m;
}
★★★★

Последнее исправление: bryak (всего исправлений: 1)

Как это пофиксить?

Иди в job’у.

anonymous
()
20 февраля 2021 г.

так что ты хочешь пофиксить, приведенный код или cyclelayouts? на suckless есть патч конкретно под 6.2? уверен что в config.h совпадают названия лейаутов и их количество?

anonymous
()

пошли на dwm, говорили они, он проще и suck less, говорили они

anonymous
()

Вот так нужно

if(i == 1 || i == 4 || i == 9) {
  m->pertag->ltidxs[i][0] = &layouts[1]; // set monocle
} else {
    m->pertag->ltidxs[i][0] = &layouts[0]; // set tile
}

Нашел вот такое, но оно конечно же не работает

static const int initlayouts[] = { 0, 2, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 2, 0 };

m->pertag->ltidxs[i][0] = &layouts[initlayouts[i-1]];
m->pertag->ltidxs[i][1] = m->lt[1];

Т.е вот так не работает:

static const int initlayouts[] = { 0, 1, 0, 0, 1, 0, 0, 0, 0, 1 };

m->pertag->ltidxs[i][0] = &layouts[initlayouts[i]];
m->pertag->ltidxs[i][1] = m->lt[1];
bryak ★★★★
() автор топика
Последнее исправление: bryak (всего исправлений: 3)
Ответ на: комментарий от bryak

Кстати, cyclelayouts не переключает монокль на tile при таких манипуляциях(самый первый кусок кода в предыдущем ответе

bryak ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.