linux设置用户默认桌面背景,linux 修改桌面背景

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

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

系统: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/bash

if [ $# -ge 1 ];then

paths=$1

length=`expr length $paths`

endwith=`echo $paths |cut -c $length-$length`

if [ ! $endwith = "/" ];then

paths=$paths/

fi

else

paths="/usr/share/backgrounds/gnome/"

fi

echo ""

echo "wallpapers SYSTEM \"gnome-wp-list.dtd\">"

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

"

done

echo ""

echo ""

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

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

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

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

0818b9ca8b590ca3270a3433284dd417.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("\tzoom\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("wallpapers SYSTEM \"gnome-wp-list.dtd\">\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;

}

你可能感兴趣的:(linux设置用户默认桌面背景)