2007-03-11(日) [長年日記]
■ Vista時代の壁紙術
タイトルは「○○時代の××術」って書いてみたかっただけですすみませんすみません。Vistaなんて、ヨドバシのPC売り場でちょこっと触ったことがあるだけです。IT業界にいてそれもどうかと思うけど。
で、(ワイド液晶ディスプレイを持っているわけでもないのに)Yahoo! Widgetsを使っている関係で、画面の右端をちょっと空けているのである。残りの部分はPoderosaをほとんど全画面化して使っているので、この下の画面は目にすることがない。つまり、せっかく壁紙を設定していても、目に入るのは右端のほんの100ピクセル程度ということになる。
これはもったいない。
そこで、この領域を「サイドペーパー」を名づけ、この大きさにフィットする壁紙を設定してはどうかという話。
まず思いついた縦長の絵は、『ぴっぴら帳』を読んでいて気づいた「四コママンガのタイトル」。これをスキャナで取り込んでトリミング、設定してみた。『ぴっぴら帳』は7年も続いたから、季節感あふれる図柄には事欠かないし。
もっとも幅100ピクセルにすると縦がぜんぜん足らないので、ちょっとマヌケか。……というか、やってみたものの一気にオタクくさくなったのでこの案は却下。
次のアイデアは風車。ブレードをカットしてよければ、縦長の領域によく合う。これはいいですな。
しかし、やはり縦長といえばロケット。これはいいかもしんない(←アリアン好き)。どっちがオタクやねん、と言えばこっちかも知れないが。
■ 「サイドペーパー」設定スクリプト: sitepaper.vbs
こないだ書いたディスプレイの解像度を知りたいという話は、この「サイドペーパー」を楽に設定するためのスクリプトが欲しかったからなのだ。
で、できたのはコレなんだけど:
' ' sidepaper.vbs: set wallpaper on right-bottom side. ' Copyright (C) 2007 by TADA Tadashi <sho@spc.gr.jp>. ' Distributed under GPL. ' Function HiMetric2Pixel( himetric, logPixel ) HiMetric2Pixel = CInt( (himetric * 567 * logPixel) / (1440 * 1000) ) End Function Dim args Dim picture Dim shell Dim wmi Dim disps Set shell = CreateObject( "Wscript.Shell" ) Set args = Wscript.Arguments If args.Length < 1 Then shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginX", "0", "REG_SZ" shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginY", "0", "REG_SZ" Wscript.Echo( "Setting wallpaper offset to zero." ) Wscript.Quit End If Set picture = LoadPicture( args( 0 ) ) shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperStyle", "0", "REG_SZ" shell.RegWrite "HKCU\Control Panel\Desktop\TileWallpaper", "0", "REG_SZ" shell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", args( 0 ), "REG_SZ" Set wmi = GetObject( "winmgmts:\\.\root\cimv2" ) Set disps = wmi.ExecQuery( "Select * from Win32_DisplayConfiguration", , 48 ) For Each disp in disps width = HiMetric2Pixel( picture.Width, disp.LogPixels ) height = HiMetric2Pixel( picture.Height, disp.LogPixels ) offx = CStr( disp.PelsWidth - width ) offy = CStr( disp.PelsHeight - height ) shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginX", offx, "REG_SZ" shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginY", offy, "REG_SZ" shell.Run "RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters",0,True Wscript.Quit Next
これを「sidepaper.vbs」というファイルに保存し、その上に好きな画像ファイルをドラッグ&ドロップすればデスクトップの右下にフィットするように壁紙を設定してくれる……はずなんだけど、実は動かない。
レジストリ上の値はちゃんと設定されているはずで、何かの拍子に期待通りの表示になったりもするんだが、少なくともおれの環境では実行直後には壁紙が切り替わらない。
最近のWindowsではWallpaperOriginXが使えなくなったんだろうか(おれの知識はWindows 3.1時代のものである)と思ったが、XPで使っている記事もあるから間違ってはいなさそうである。うーん……。
2007-03-10(土) [長年日記]
■ 日経新聞土曜版
日経土曜版に、おれのデスクの一部が登場。記事の署名を見ればわかるように、家内制手工業みたいな話だが……。写真にはR1200GSの1/10モデルが入っているが、一緒に並んでいたはずのASIMOとかイングラムとか、オタクっぽいフィギュアは事前に排除されました。とほほ。
本当は、コンテッサに座りカメラに向かってにっこり、なんて写真も撮ったのだけど、そっちは没になったらしい。おれのファンにとっては残念な話である(いねーよ)。
2007-03-09(金) [長年日記]
■ Googleに行ってきた
「Andrew Mortonが来日講演するから聞きにこない?」とGoogleから誘われたので、物見遊山で行ってみた。
ただでさえ専門外のネタなのに、Andrewのスライドがプロジェクタに出力できず、英語の講演をスライドなしで聴くという拷問状態に。「Linuxマシンでプレゼンする人はプロジェクタに出力できない(ことが多い)法則」がおれの中で固まったよ。それはさておき、講演自体はごく短く(その後の質疑応答は面白かった)、Andrewと濃い話がしたい人はカーネル読書会に行ったほうがいいかも。
それにしても、知り合いがitojunしかいなかった。ジャンルが違うとこうまで顔ぶれが変わるんだから、IT業界も広いなぁ。
Before...
◆ arton [bmpしか即時反映はできないらしいですよ。 http://www.msfn.org/board/index.php?..]
◆ arton [理屈がわかったので一応。 次のURLを、ConvertedWallpaper Last WriteTime かCon..]
◆ ただただし [あぁ〜、ConvertedWallpaperというキーは実装中に発見していて、そんな気がしていたんですが、やはりそう..]
◆ arton [XPSP2で試しましたが、BMPはWindowsの下にあるのは一応全部OKでした(色数とかに依存するのかなぁ?)。V..]
◆ ただただし [Windowsの下は試してないけど、自作のフルカラーおよび256色BMPはダメですねぇ。オフセットどころか、中央にも..]
◆ Yui. [亀ツッコミですがVistaで試したら,絵がすぐには切り替わりませんでした.レジストリには確かに値がセットされていて,..]