Запись рабочего стола в C [закрыто]

Я совершенно новичок в написании программ для Ubuntu и использовании доступных api. Но я хочу написать собственный чейнджер рабочего стола на C. Есть ли доступный api, который поможет мне написать мой код. Я хочу, чтобы направление сделало первый шаг. Любая помощь в этом отношении будет принята с благодарностью:)

Спасибо за ваше чтение !!

0
задан 17 February 2012 в 11:23

2 ответа

Вот содержание принятого ответа для того же вопроса на SO:

Вы должны иметь дело с корневым окном (которое обои на самом деле ), изучая источник xsetroot.c, наиболее интересную часть которого я копирую здесь:

static void
SetBackgroundToBitmap(Pixmap bitmap, unsigned int width, unsigned int height)
{
    Pixmap pix;
    GC gc;
    XGCValues gc_init;

    gc_init.foreground = NameToPixel(fore_color, BlackPixel(dpy, screen));
    gc_init.background = NameToPixel(back_color, WhitePixel(dpy, screen));
    if (reverse) {
        unsigned long temp=gc_init.foreground;
        gc_init.foreground=gc_init.background;
        gc_init.background=temp;
    }
    gc = XCreateGC(dpy, root, GCForeground|GCBackground, &gc_init);
    pix = XCreatePixmap(dpy, root, width, height,
                        (unsigned int)DefaultDepth(dpy, screen));
    XCopyPlane(dpy, bitmap, pix, gc, 0, 0, width, height, 0, 0, (unsigned long)1);
    XSetWindowBackgroundPixmap(dpy, root, pix);
    XFreeGC(dpy, gc);
    XFreePixmap(dpy, bitmap);
    if (save_colors)
        save_pixmap = pix;
    else
        XFreePixmap(dpy, pix);
    XClearWindow(dpy, root);
    unsave_past = 1;
}
2
ответ дан 25 July 2018 в 19:53

Вот содержание принятого ответа для того же вопроса на SO:

Вы должны иметь дело с корневым окном (которое обои на самом деле ), изучая источник xsetroot.c, наиболее интересную часть которого я копирую здесь:

static void
SetBackgroundToBitmap(Pixmap bitmap, unsigned int width, unsigned int height)
{
    Pixmap pix;
    GC gc;
    XGCValues gc_init;

    gc_init.foreground = NameToPixel(fore_color, BlackPixel(dpy, screen));
    gc_init.background = NameToPixel(back_color, WhitePixel(dpy, screen));
    if (reverse) {
        unsigned long temp=gc_init.foreground;
        gc_init.foreground=gc_init.background;
        gc_init.background=temp;
    }
    gc = XCreateGC(dpy, root, GCForeground|GCBackground, &gc_init);
    pix = XCreatePixmap(dpy, root, width, height,
                        (unsigned int)DefaultDepth(dpy, screen));
    XCopyPlane(dpy, bitmap, pix, gc, 0, 0, width, height, 0, 0, (unsigned long)1);
    XSetWindowBackgroundPixmap(dpy, root, pix);
    XFreeGC(dpy, gc);
    XFreePixmap(dpy, bitmap);
    if (save_colors)
        save_pixmap = pix;
    else
        XFreePixmap(dpy, pix);
    XClearWindow(dpy, root);
    unsave_past = 1;
}
2
ответ дан 2 August 2018 в 01:53

Другие вопросы по тегам:

Похожие вопросы: