博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 修改桌面背景
阅读量:6880 次
发布时间:2019-06-27

本文共 3379 字,大约阅读时间需要 11 分钟。

  hot3.png

        本文适用于想把自己收藏的图片放到系统目录中的同学,因为如果直接把图片放系统目录中,在设置界面中是看不到新添加的图片的。

环境及相关目录文件说明:

系统:centos7(这个应该不是重点,基本所有的系统应该都适用的)。

linux默认背景图片存放位置:/usr/share/backgrounds/gnome目录

背景图片的配置文件目录:/usr/share/gnome-background-properties

用于生成配置的脚本文件名:create_back_ground.sh

简单介绍:

       用以识别出背景图片的配置文件目录:/usr/share/gnome-background-properties,系统自带的背景图片都在该目录的gnome-backgrounds.xml文件中有登记。我们可以按照相应的格式,创建新的配置文件,添加自己收藏图片的相关定义。下面会提供一个脚本,用于生成这种文件。

示例:

        在/usr/share/backgrounds/目录中创建一个文件夹,比如Wallpapers,把自己收藏的图片放到这个文件夹中,然后执行./create_back_ground.sh /usr/share/backgrounds/Wallpapers  > windows.xml,生成配置文件。本示例中从windows系统中拷贝相关图片,你也可以从mac中拷贝壁纸,放到Wallpaper目录中。然后把生成的windows.xml文件移动到/usr/share/gnome-background-properties目录中,之后打开系统设置,就应该可以找到新添加的图片了。

用到的脚本create_back_ground.sh:

#!/bin/bashif [ $# -ge 1 ];then    paths=$1    length=`expr length $paths`    endwith=`echo $paths |cut -c $length-$length`    if [ ! $endwith = "/" ];then        paths=$paths/    fielse    paths="/usr/share/backgrounds/gnome/"fiecho "
"echo ""echo -n "
"for i in $paths* ;do    fnamext=`basename $i`    ext=`echo $fnamext |awk -F \. '{print $NF}'`    fname=`basename $i .$ext`        echo -n "      
        
$fname
        
$fname        
$fname        
$paths$fnamext
        
zoom
        
#ffffff
        
#000000
    "doneecho ""echo "
"

如果不指定目录,默认根据/usr/share/backgrounds/gnome目录中的图片,生成配置文件。

脚本自适应扩展名,如果你放一个*.txt的文档,脚本同样会生成相关记录,这肯定不是你想要的,所以要避免放非图片格式到相应文件夹中。

目录要使用绝对路径指定。

        如果有需要设置动态切换壁纸,可以修改/usr/share/backgrounds/default.xml文件,指定在那些图片中切换,及持续时间。我们可以用来指定上午、下午和晚上使用的桌面背景,以适应环境,还是很不错的。同样完成之后,可以在系统设置界面中,选择设定的自动切换方案。右下角带有时钟图标,说明选中后,会根据时间变化自动更新壁纸,如图:

221754_IlMb_1011578.png

另附一个C语言实现的小程序,功能、用法和脚本完全相同,需要在linux系统中编译,大致计算了下运算时间,比脚本要快35倍左右。

#include 
#include 
#include 
#include 
#include 
#include 
typedef struct name_ext{    char* name;    char* ext;}name_ext;char* path;name_ext* splitstr(const char* str){    if(str[0] == '.' || strlen(str)<=2)      return NULL;    int len,sublen,n;    name_ext* basic=(name_ext*)malloc(sizeof(name_ext));    basic->ext=rindex(str,'.');    if(basic->ext == NULL)       return NULL;    else{      len=strlen(str);      sublen=strlen(basic->ext);      n=len-sublen;      basic->name=(char*)malloc(n+1);      strncpy(basic->name,str,n);      basic->name[++n]='\0';      return basic;    }     return NULL;}void formatdata(name_ext* afile){  printf("    
\n");  printf("\t
%s
\n",afile->name);  printf("\t
%s\n",afile->name);  printf("\t
%s\n",afile->name);  printf("\t
%s%s%s
\n",path,afile->name,afile->ext);  printf("\t
zoom
\n");  printf("\t
#ffffff
\n");  printf("\t
#000000
\n");  printf("    \n");}int main(int argc,char* argv[]){       char* newpath;    name_ext* af;    struct dirent *dircontent;    if(argc >= 2)      path=argv[1];    else      path="/usr/share/backgrounds/gnome/";    int length=strlen(path);    if(path[length-1] != '/'){        newpath=(char*)malloc(length+1);        strcpy(newpath,path);        path=strcat(newpath,"/");    }    DIR* dir=opendir(path);    if(dir == NULL){        if(newpath)free(newpath);        return;      }    printf("
\n");    printf("\n");    printf("
\n");    while(dircontent=readdir(dir))     {       af=splitstr(dircontent->d_name);       if(af){            formatdata(af);            free(af->name);        }     }    printf("
\n");    closedir(dir);    if(newpath)free(newpath);    return 0;}

转载于:https://my.oschina.net/sskxyz/blog/304923

你可能感兴趣的文章
简单入门Buffer
查看>>
OO第四阶段总结
查看>>
javascript总结02
查看>>
创建windows服务
查看>>
HTML5 入门基础
查看>>
【转载】读懂IL代码就这么简单(二)
查看>>
C++文件操作(fstream)
查看>>
用main函数传参做简单的计算器的代码
查看>>
python中struct.unpack的用法
查看>>
体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)...
查看>>
Python实践之(七)逻辑回归(Logistic Regression)
查看>>
PAT (Advanced Level) 1107. Social Clusters (30)
查看>>
【开源社群系统研发日记五】ThinkSNS+ 是如何计算字符显示长度的
查看>>
Nodejs日志管理log4js
查看>>
Bat 脚本实现监控进程功能
查看>>
Js判断是否联网引入不同js
查看>>
pwnable.kr bof之write up
查看>>
Sql语句查询某列A相同值的另一列B最大值的数据
查看>>
技术串讲 CAS 有用
查看>>
怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
查看>>