Вы можете выяснить, какие файлы являются источником, отследив, какие файлы открывает bash:
strace -e open bash -l
Это должно распечатать все файлы, которые bash пытается открыть (многие из которых являются библиотеками C, которые вы можете использовать ). Это должно дать вам подсказки о том, где искать. (Параметр « -l» для bash запрашивает его запуск в качестве оболочки «входа», что обычно заставляет bash анализировать еще несколько файлов запуска.)
Это простой пример, который напечатает размер дисплея и переместит окно эмулятора терминала, в котором он работает (, если в переменной окружения WINDOWID
)правильно установлено значение ширины / 4, высоты / 4.:
#include <X11/Xlib.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
int main(int ac, char **av){
char *wid; Display *dpy; Window w;
int width, height, snum;
if(!(dpy = XOpenDisplay(0)))
errx(1, "cannot open display '%s'", XDisplayName(0));
snum = DefaultScreen(dpy);
width = DisplayWidth(dpy, snum);
height = DisplayHeight(dpy, snum);
printf("display size is %d x %d\n", width, height);
if((wid = getenv("WINDOWID")) && (w = strtoul(wid, 0, 0))){
XMoveWindow(dpy, w, width / 4, height / 4);
XSync(dpy, False);
}
return 0;
}
Я бы посоветовал копию Руководства по программированию X11 , которое представляет собой HTML-страницу на одной странице, по которой вы можете осуществлять поиск и которая содержит все о программировании для X11.
Обратите внимание, что могут быть более дружественные или переносимые библиотеки, такие как gtk, qt, sdl и т. д. Вы можете использовать одну из них вместо прямой libX11.