मैं सी/सी ++ प्रोग्राम के भीतर लिनक्स डेस्कटॉप (गनोम का उपयोग करके) वॉलपेपर कैसे बदलूं? क्या ऐसा करने के लिए कोई सिस्टम एपीआई है?प्रोग्रामिंग पर लिनक्स पर वॉलपेपर बदलना
उत्तर
हालांकि सवाल GNOME विशेष था, वहाँ भी वॉलपेपर जाता है कि उच्च स्तर उपकरणकिटें पर depepndant नहीं से निपटने के लिए एक तरीका है। आप xsetroot.c, सबसे दिलचस्प हिस्सा के स्रोत का अध्ययन करके (वास्तव में, जो वॉलपेपर है) जड़ खिड़की से निपटने के लिए सक्षम होना चाहिए, जिनमें से मैं यहाँ copypaste:
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;
}
धन्यवाद। यह पूरी तरह से काम करता है। – computergeek6
और कुछ नहीं, तो आप शायद यहाँ का सुझाव दिया कमांड लाइन से एक को लागू करने की system()
इस्तेमाल कर सकते हैं, तो:
http://www.linuxquestions.org/questions/linux-general-1/change-background-via-command-line-350936/
आप gconf पुस्तकालय इस्तेमाल कर सकते हैं यह करने के लिए। gthumb परियोजना पर
// bkgmanage.c
#include <glib.h>
#include <gconf/gconf-client.h>
#include <stdio.h>
typedef enum {
WALLPAPER_ALIGN_TILED = 0,
WALLPAPER_ALIGN_CENTERED = 1,
WALLPAPER_ALIGN_STRETCHED = 2,
WALLPAPER_ALIGN_SCALED = 3,
WALLPAPER_NONE = 4
} WallpaperAlign;
gboolean set_as_wallpaper(const gchar *image_path, WallpaperAlign align)
{
GConfClient *client;
char *options = "none";
client = gconf_client_get_default();
// TODO: check that image_path is a file
if (image_path == NULL) options = "none";
else {
gconf_client_set_string(client,
"/desktop/gnome/background/picture_filename",
image_path,
NULL);
switch (align) {
case WALLPAPER_ALIGN_TILED: options = "wallpaper"; break;
case WALLPAPER_ALIGN_CENTERED: options = "centered"; break;
case WALLPAPER_ALIGN_STRETCHED: options = "stretched"; break;
case WALLPAPER_ALIGN_SCALED: options = "scaled"; break;
case WALLPAPER_NONE: options = "none"; break;
}
}
gboolean result = gconf_client_set_string(client,
"/desktop/gnome/background/picture_options",
options,
NULL);
g_object_unref(G_OBJECT(client));
return result;
}
int main(int argc, const char* argv[])
{
if (argc > 1) {
printf("Setting %s as wallpaper... ", argv[1]);
if (set_as_wallpaper(argv[1], WALLPAPER_ALIGN_STRETCHED)) printf("Ok\n");
else printf("Failed\n");
} else printf("Usage: ./bkgmanage <filename>\n");
return 0;
}
स्रोत ऊपर आधारित है: निम्न नमूना पृष्ठभूमि को बदलने के लिए एक पूरा कार्यक्रम है। यह निम्नलिखित तार के साथ संकलित किया जा सकता है:
gcc -Wall -g `pkg-config --libs --cflags glib-2.0 gconf-2.0` bkgmanage.c -o bkgmanage
- 1. लिनक्स पर फ्लैश प्रोग्रामिंग
- 2. लिनक्स पर प्रोग्रामिंग वेबकैम
- 3. प्रोग्राम पर बंद बैच फ़ाइल के साथ वॉलपेपर बदलना। मुमकिन?
- 4. यूनिक्स/लिनक्स सॉकेट प्रोग्रामिंग पर अच्छी रीडिंग्स?
- 5. उद्देश्य-सी और लिनक्स पर गेम प्रोग्रामिंग
- 6. लिनक्स पर नया से सी प्रोग्रामिंग, टाइपकास्टिंग पर अटक गया
- 7. क्या लिनक्स पर नामित पाइप का आकार बदलना संभव है?
- 8. लिनक्स प्रोग्रामिंग:
- 9. समय-समय पर डेस्कटॉप वॉलपेपर को प्रोग्रामिक रूप से बदलें
- 10. लिनक्स सिस्टम प्रोग्रामिंग
- 11. होम स्क्रीन पर प्रोग्रामिंग
- 12. स्क्रीन पर प्रोग्रामिंग
- 13. बटन पर चयनित विकल्प बदलना
- 14. ओएस एक्स 10.7 शेर में सभी डेस्कटॉप पर वॉलपेपर बदलें?
- 15. लिनक्स यूएसबी प्रोग्रामिंग
- 16. लिनक्स ड्राइवर प्रोग्रामिंग
- 17. लिनक्स डिवाइस ड्राइवर प्रोग्रामिंग
- 18. लिनक्स शैल: वीएलसी प्रोग्रामिंग
- 19. प्रोग्रामिंग रूप से आईफोन वॉलपेपर (लॉक स्क्रीन पृष्ठभूमि) सेट करना?
- 20. लिनक्स पर क्रैश विश्लेषण
- 21. लिनक्स पर रूबीमाइन
- 22. लिनक्स पर प्रदर्शन प्रोफाइलिंग
- 23. लिनक्स पर सॉफ्टवेयर वितरित?
- 24. वर्तमान वॉलपेपर प्राप्त करें
- 25. Xbox 360 पर GPU प्रोग्रामिंग
- 26. सीयूडीए प्रोग्रामिंग पर साक्षात्कार प्रश्न?
- 27. विंडोज सिस्टम पर आईओएस प्रोग्रामिंग
- 28. फेसबुक प्रोग्रामिंग पर अच्छे संसाधन
- 29. आईफोन पर एक UIWebView में फ्लाई पर सीएसएस बदलना
- 30. लिनक्स कर्नेल डिवाइस ड्राइवर प्रोग्रामिंग
यदि आप यह पता लगाने कैसे, कृपया यह, मैं कुछ समय के लिए ऐसा करने में सक्षम होना चाहता था। – fauxCoder