トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2007-03-11(日) [長年日記]

Vista時代の壁紙術

タイトルは「○○時代の××術」って書いてみたかっただけですすみませんすみません。Vistaなんて、ヨドバシのPC売り場でちょこっと触ったことがあるだけです。IT業界にいてそれもどうかと思うけど。

「サイドペーパー」領域の図 で、(ワイド液晶ディスプレイを持っているわけでもないのに)Yahoo! Widgetsを使っている関係で、画面の右端をちょっと空けているのである。残りの部分はPoderosaをほとんど全画面化して使っているので、この下の画面は目にすることがない。つまり、せっかく壁紙を設定していても、目に入るのは右端のほんの100ピクセル程度ということになる。

これはもったいない。

そこで、この領域を「サイドペーパー」を名づけ、この大きさにフィットする壁紙を設定してはどうかという話。

四コママンガのタイトル部分を使ってみる まず思いついた縦長の絵は、『ぴっぴら帳』を読んでいて気づいた「四コママンガのタイトル」。これをスキャナで取り込んでトリミング、設定してみた。『ぴっぴら帳』は7年も続いたから、季節感あふれる図柄には事欠かないし。

もっとも幅100ピクセルにすると縦がぜんぜん足らないので、ちょっとマヌケか。……というか、やってみたものの一気にオタクくさくなったのでこの案は却下。

風車は縦長に合う 次のアイデアは風車。ブレードをカットしてよければ、縦長の領域によく合う。これはいいですな。

やはり縦長といえばロケット しかし、やはり縦長といえばロケット。これはいいかもしんない(←アリアン好き)。どっちがオタクやねん、と言えばこっちかも知れないが。


ぴっぴら帳(ノート) (1) (ACTION COMICS)
こうの 史代
双葉社
¥131

ぴっぴら帳 (完結編) (Action comics)
こうの 史代
双葉社
¥420

Tags: wallpaper

「サイドペーパー」設定スクリプト: 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で使っている記事もあるから間違ってはいなさそうである。うーん……。

Tags: vbs sidepaper
本日のツッコミ(全8件) [ツッコミを入れる]
向井 (2007-03-11(日) 15:42)

ターミナルを透過させればサイドに拘らなくてもいいのでは……という気がしてしまうのですが、どうでしょう。いや、 Poderosa に(というか Windows のアプリケーションで)そういうことが簡単に出来るのかは知らないのですが、それこそ Vista 時代には可能になっててもおかしくなさそうにも思えます。

ただただし (2007-03-11(日) 16:03)

それは、ターミナルの背景が透けていても良い、という前提の話ですね。私は嫌いです、邪魔くさいし。昔GnomeだかKDEでやってみたけど、馴染めなかったな。

ちなみにPoderosaは背景画像を指定できます。4.xではもっと機能拡張しているかもしれない。あとWindowsには、任意のウィンドウを透けさせるソフトもありますね。

arton (2007-03-12(月) 22:46)

bmpしか即時反映はできないらしいですよ。
http://www.msfn.org/board/index.php?showtopic=52720
(このフォーラムだとコンバートするのが解決方法となってます)

arton (2007-03-12(月) 23:02)

理屈がわかったので一応。
次のURLを、ConvertedWallpaper Last WriteTime かConvertedWallpaperをキーにして検索すると理由がわかります。結局、壁紙のプロパティ設定がbmp変換もしているということです。で、たださんのスクリプトは変換していないので、古いbmpがそのまま利用されているということではないかと。
http://www.virtualplastic.net/fresh/html/ui_registry.html

ただただし (2007-03-13(火) 00:00)

あぁ〜、ConvertedWallpaperというキーは実装中に発見していて、そんな気がしていたんですが、やはりそうですか。
でも、そう予想してbmpファイルを使ってもダメだったんですよねぇ。WallpaperOriginXも反映されないし。うちの環境だけ?

arton (2007-03-13(火) 00:34)

XPSP2で試しましたが、BMPはWindowsの下にあるのは一応全部OKでした(色数とかに依存するのかなぁ?)。Vista時代って、もしかしてVistaですか?

ただただし (2007-03-13(火) 12:34)

Windowsの下は試してないけど、自作のフルカラーおよび256色BMPはダメですねぇ。オフセットどころか、中央にも表示されない……なんでだろう。

>もしかしてVistaですか?
めめめめ、めっそうもない!

Yui. (2007-03-14(水) 23:06)

亀ツッコミですがVistaで試したら,絵がすぐには切り替わりませんでした.レジストリには確かに値がセットされていて,何かの拍子あるいは再ログインするとそれが反映されました.最後のUpdatePer...がくさそうですが…….


トップ «前日 最新 翌日» 編集
RSS feed