Chinaunix首页 | 论坛 | 博客
  • 博客访问: 462856
  • 博文数量: 137
  • 博客积分: 3874
  • 博客等级: 中校
  • 技术积分: 1475
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-05 10:50
文章分类

全部博文(137)

文章存档

2011年(37)

2010年(100)

分类: LINUX

2011-03-05 01:46:58

发现ubuntu不能自定义更换背景,感觉很郁闷。于是查了点资料:
-----------------------------------------------------------------------------
ubuntu karmic的桌面背景里面有个定时切换的,名称叫做cosmos,路径位于/usr/share/backgrounds/cosmos,这个路径下面 有些壁纸以及控制更换壁纸的脚本文件:background-1.xml。 如果你想新建一个自己喜欢的壁纸, 同时让这些壁纸可以定时更换,那么就需要先建立一个目录,然后把你心仪的壁纸以及控制脚本复制到这个目录下面:
sudo mkdir -p /usr/share/backgrounds/my
sudo cp /usr/share/backgrounds/cosmos/background-1.xml /usr/share/backgrounds/my/
sudo cp /your/image /usr/share/backgrounds/my
然后编辑控制脚本:
sudo vi /usr/share/backgrounds/my/background-1.xml
将里面的路径和文件名替换成你自己的即可。 做完这些,还不能让你自己的背景图片出现在背景列表里,还需要建立一个控制gnome背景属性的脚本。
sudo cp /usr/share/gnome-background-properties/cosmos.xml /usr/share/gnome-background-properties/my.xml
再把my.xml中的background-1.xml的路径修改成你的即可。
sudo vi /usr/share/gnome-background-properties/my.xml

>>>
/usr/share/backgrounds/my/background-1.xml
小结:其中图片不一定要复制到上面所说的文件夹,只要写对路经即可

1795.0


5.0
使用时间和专换时间,单位为秒,默认30分钟(1800秒),如要修改为10分钟,两个数字加起来为600就是了,比如 595.0 和 5.0 或 598.0 和 2.0 。

--------------------------------------------------------------------------------------
于是写了几个小代码实现了,是用c++/shell写的,比较简单。后来发现有人。
把我的简单代码 也贴过来吧。
  1. #!/bin/bash
  2. #功能:把src的图片软链接到dest目录下。可以递归访问图片。此程序名:copy_pic.sh
  3. src="$1"
  4. dest="$2"

  5. copy_file()
  6. {
  7.     for file in *
  8.     do
  9.     if [ -d "$file" ]
  10.     then
  11.      #echo $file is a dir
  12.      cd "$file"
  13.      copy_file
  14.      cd ..
  15.     else
  16.      if echo "$file"| grep 'jpg$' >/dev/null
  17.      then
  18.         echo $file
  19.         ln -s "$(pwd)/$file" "$dest"
  20.      fi
  21.     fi
  22.     done
  23. }

  24. if [ -d "$src" ]
  25. then
  26.     cd "$src"
  27.     copy_file
  28. fi
然后是生成xml的程序,用c++写的:generate_background_xml.cpp
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <assert.h>
  5. using namespace std;

  6. string path="/usr/share/backgrounds/";
  7. void print_head(ofstream & ofs)
  8. {
  9.   ofs<<""<<endl;
  10.   ofs<<" "<<endl;
  11.   ofs<<" 2009"<<endl;
  12.   ofs<<" 08"<<endl;
  13.   ofs<<" 04"<<endl;
  14.   ofs<<" 00"<<endl;
  15.   ofs<<" 00"<<endl;
  16.   ofs<<" 00"<<endl;
  17.   ofs<<" "<<endl;
  18.   ofs<<""<<endl;
  19.   return ;
  20. }

  21. void print_static(string name, ofstream &ofs)
  22. {
  23.   // string fullpath = path+name;
  24.   ofs<<" "<<endl;
  25.   ofs<<" 1795.0"<<endl;
  26.   ofs<<" "+name+""<<endl;
  27.   ofs<<" "<<endl;
  28.   return ;
  29. }

  30. void print_transition(string from, string to, ofstream &ofs)
  31. {
  32.   ofs<<" "<<endl;
  33.   ofs<<" 5.0"<<endl;
  34.   ofs<<" "+from+""<<endl;
  35.   ofs<<" "+to+""<<endl;
  36.   ofs<<" "<<endl;
  37.   return ;
  38. }

  39. void print_end(ofstream &ofs)
  40. {
  41.   ofs<<"";
  42.   return ;
  43. }


  44. int main(int argc , char** argv)
  45. {
  46.   
  47.   assert(argc>=1);
  48.   ofstream ofs;
  49.   string pre="";
  50.   string now;

  51.   ofs.open(argv[1]);
  52.   
  53.   print_head(ofs);
  54.   
  55.   while(cin>>now)
  56.   {
  57.     if(pre != string(""))
  58.     {
  59.       print_transition(path+pre,path+ now, ofs);
  60.     }
  61.     print_static(path+now, ofs);

  62.     pre=now;
  63.   }
  64.   print_end(ofs);
  65.   return 0;

  66. }
用法:sudo ./copy_pic.sh src /usr/share/backgounds/ | ./gen tem.xml
然后拷贝生成的xml就行了。

阅读(1520) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~