Если что, всё это собирается из-под деривации в nixos. В дебиане это всё работает. Почему не хочет в nixos - понятия не имею :)
echo "// shiftview.c" >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_bracketleft, shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_bracketright, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_Left, shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_Right, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
Далее я подключаю инклюд в config.h
echo "// shiftview.c" >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_bracketleft, shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_bracketright, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_Left, shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
echo '{ MODKEY, XK_Right, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
А самом файле
// shiftview.c
{ MODKEY, XK_bracketleft, shiftview, {-1} },
{ MODKEY, XK_bracketright, shiftview, {1} },
{ MODKEY, XK_Left, shiftview, {-1} },
{ MODKEY, XK_Right, shiftview, {1} },
В конфиге строки инклюда выглядят так:
static const Key keys[] = {
...
TAGKEYS( XK_9, 8)
#include "config_my_bind.h"
};
И получаю ошибку:
In file included from config.h:236,
from dwm.c:383:
config_my_bind.h:2:38: error: 'shiftview' undeclared here (not in a function)
2 | { MODKEY, XK_bracketleft, shiftview, {-1} },
| ^~~~~~~~~
make: *** [Makefile:18: dwm.o] Error 1
Хотя, изначально в config.h были строки(я их закомментил) и dwm с этими строками нормально собирается. Т.е, если в самом конфиге config.h есть shiftview, то компилятор собирает код, а если вынести эти же строки в include, то нет
{ MODKEY|ShiftMask, XK_Tab, shiftview, { .i = -1 } },
{ MODKEY|ShiftMask, XK_backslash, shiftview, { .i = +1 } },


