Xmonad + nitrogenで壁紙を設定する
- ~/Pictures/wallpaper/以下にある画像をランダムに表示
- ディスプレイサイズは1920x1080 + 1200x800
- 使用する画像サイズは1920x1200
- WMはXmonad
こういう壁紙設定をしたかった。
壁紙集め
こっから一括ダウンロードさせてもらいました。
ダウンロードにはブラウザのアドオン使いました。
硬派な方はwgetでオプション駆使してください。
【2ch】ニュー速クオリティ:[壁紙]壁紙画像スレ
1920x1200サイズのものを抽出する
1920x1080のディスプレイ使ってるからそれよりサイズ小さいと絵が伸びたりでいや。
1920x1200のものを抽出します。
画像のサイズの取得ですが、PHPにgetimagesize()っていう関数がありました。PHP△
PHP: getimagesize - Manual
で、こんな感じのスクリプト書いて、1920x1200サイズのファイルを抽出しました。
<?php $home = "/home/toshi"; $src_dir = $home . "/Downloads/wallpaper"; $dest_dir = $home . "/Pictures/wallpaper"; $d = opendir($src_dir); if ($d === false) { print("Error"); exit(1); } while (false !== ($file = readdir($d))) { if ($file === "." || $file === ".." ) continue; $src = $src_dir . "/" . $file; $dest = $dest_dir . "/" . $file; list($height, $width) = getimagesize($src); if ($height === 1920 && $width === 1200) { if (copy($src, $dest) === false) { print "Error\n"; exit(1); } } } closedir($d);
nitrogenを使う
壁紙の設定アプリはいくつか試した中からnitrogenというものを使うことにしました。
マルチディスプレイに対応しているのが決め手。
インストールはyumでできます。
# yum -y install nitrogen
使い方はこう。
$ nitrogen ~/Pictures/wallpaper
引数はファイルではなくディレクトリです。
これでGUIの設定パネルが立ち上がります。
設定方法はぽちぽちやればわかると思うので割愛します。
nitrogenの設定ファイル
現在の設定は ~/.config/nitrogen/bg-saved.cfg に保持されています。
[xin_0] file=/home/toshi/Pictures/wallpaper/tmp.jpg mode=5 bgcolor=#000000 [xin_1] file=/home/toshi/Pictures/wallpaper/tmp.jpg mode=5 bgcolor=#000000
この設定を再読込するには--restoreオプションを使います。
だからCUIから設定したいときは壁紙変えたいときはfileの値を変えて
$ nitrogen --restore
ってやればできます。
shuffleスクリプト
雰囲気はだいたいこんな感じです
nitrogenの設定で壁紙はtmp.jpgを使うようにしておく。
180秒ごとにwallpaperディレクトリからランダムに一枚画像を選び、コピーしてtmp.jpg新しいものにする。
その後すぐnitrogen --restoreで新しいtmp.jpgが読み込まれる。
ファイル名は同じだけど実体は変わっているので画像が切り替わる。
簡単に言うとアンパンマンの顔みたいな感じです。(え
#!/bin/sh DIR=$HOME/Pictures/wallpaper while :; do NUM_JPG=`ls $DIR | wc -l` TIMESTAMP=`date +%s` RAND=`expr $TIMESTAMP % $NUM_JPG` TMP=`ls $DIR | head -$RAND | tail -1` SLEEP=180 cp -f $DIR/$TMP $DIR/tmp.jpg nitrogen --restore sleep $SLEEP; done
名前はshuffle_wallpaperとでもしておきましょうか。
問題点
設定したは良いけどXmonadだと壁紙とか全然見えねえよっ!