注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

linux gnome桌面平台下面壁纸自动换程序 如何实现  

2009-11-03 19:56:19|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

刚刚发现这个 GNOME Desktop Library Reference Manual 

http://library.gnome.org/devel/gnome-desktop/stable/GnomeBG.html

#include <libgnomeui/gnome-bg.h>

void gnome_bg_set_filename (GnomeBG *bg,
const char *filename);
应该是可以用来修改桌面背景的, 。
widebright 11月4日更新

==================================================================================

Google 一下,好像都是用gconf 设置以下键值

gconftool-2 -t string -s /desktop/gnome/background/picture_filename image_filename

写个简单的脚本来自动设置就可以了,好像已经有人用python写了的。

以下是转载的做同样的事的c++代码

// 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;

}

The source above is based on gthumb project. It could be compiled with the following string:

gcc -Wall -g `pkg-config --libs --cflags glib-2.0 gconf-2.0` bkgmanage.c -o bkgmanage

  评论这张
 
阅读(839)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017