Gnome background image transition xml creater (アニメーション壁紙作成)


戻る一つ前のメニューに戻る

Linux,Gnomeのデスクトップ壁紙(Desktop Wallpaper)は、自動切換(アニメーション)を標準機能として持っているが、好きな壁紙画像を使って自動切り替えさせる機能は持ってなさそうだ(Ubuntu 10.04時点で)。

壁紙切り替えの設定ファイル(XMLファイル)を作成するPerlスクリプトを作成してみたので、一応公開してみることにした。


目次

ソフトウエアのダウンロード


プログラムのスケルトン(version 0.1)

#!/usr/bin/perl
# GNU GPL Free Software
use strict;
use warnings;
use utf8;
use Getopt::Long;
use File::Basename;
 
my $dulation_sec = 300;     # それぞれの画像表示時間
my $transition_sec = 0;     # 画像切り替え時間(秒)。0 の場合は transition を用いない
 
# プログラム引数を取り込む
GetOptions('dulation|d=i' => \ $dulation_sec,
                'transition|t=i' => \ $transition_sec);
# プログラム引数よりオプションスイッチを読み込んだ残りは、ファイル名
if($#ARGV < 0){ sub_print_usage(); exit; }      # 画像ファイルが指定されないとき
my @arr_imagefile = @ARGV;      # 画像ファイル(アスタリスクの検索展開済み)リストを読み込む
 
# 画像ファイル配列中より、ファイル以外を配列から除外する
for(my $i=0; $i<=$#arr_imagefile; $i++){
    unless( -f $arr_imagefile[$i] ){
        splice(@arr_imagefile, $i, 1);
        $i--;   # ポジションを一つ戻す
    }
}
 
my $str = "<background>\n".
    " <starttime>\n".
    "  <year>2011</year>\n".
    "  <month>01</month>\n".
    "  <day>01</day>\n".
    "  <hour>00</hour>\n".
    "  <minute>00</minute>\n".
    "  <second>00</second>\n".
    " </starttime>\n";
for(my $i=0; $i<=$#arr_imagefile; $i++){
    $str = $str . " <static>\n".
        "  <duration>".$dulation_sec."</duration>\n".
        "  <file>".$arr_imagefile[$i]."</file>\n".
        " </static>\n";
 
    if($transition_sec != 0){
        $str = $str . " <transition>\n".
            "  <duration>".$transition_sec."</duration>\n".
            "  <from>".$arr_imagefile[$i]."</from>\n".
            "  <to>".($i+1<=$#arr_imagefile ? $arr_imagefile[$i+1] : $arr_imagefile[0])."</to>\n".
            " </transition>\n";
    }
}
$str .= "</background>\n";
 
print $str;
 
exit;
 
sub sub_print_usage {
    print(STDERR "NAME\n".
        "    ".basename($0, '.pl')." - Gnome background image transition xml creater\n\n".
        "SYNOPSIS\n".
        "   ".basename($0)." [options] [imagefile scan path]\n\n".
        "OPTIONS\n".
        "    -d=num, -dulation=num\n".
        "        image change interval (sec). if not specified, use default 300 sec\n".
        "    -t=num, -transition=num\n".
        "        image transition interval (sec). if not specified, use default 0 sec\n\n".
        "EXAMPLES\n".
        "    ".basename($0)." -t=2 /usr/share/backgrounds/*.jpg > background.xml\n\n");
 
}


動作状況のイメージ

soft-gback-slideshow.jpg
「背景の変更」で壁紙切り替えはこのように表示される

作成される壁紙切り替え設定のXMLファイル。このファイルを「背景の変更」ダイアログの「追加...」ボタンで追加指定する。

<background>
 <starttime>
  <year>2011</year>
  <month>01</month>
  <day>01</day>
  <hour>00</hour>
  <minute>00</minute>
  <second>00</second>
 </starttime>
 <static>
  <duration>300</duration>
  <file>/usr/share/backgrounds/BosqueTK.jpg</file>
 </static>
 <transition>
  <duration>2</duration>
  <from>/usr/share/backgrounds/BosqueTK.jpg</from>
  <to>/usr/share/backgrounds/BusquedaNocturna.jpg</to>
 </transition>
 <static>
  <duration>300</duration>
  <file>/usr/share/backgrounds/BusquedaNocturna.jpg</file>
 </static>
 
~ 途中省略 ~
 
 <transition>
  <duration>2</duration>
  <from>/usr/share/backgrounds/space-05.jpg</from>
  <to>/usr/share/backgrounds/BosqueTK.jpg</to>
 </transition>
</background>


参考資料


戻る一つ前のメニューに戻る