It's Automatic !-fvwm_vine1
最近古いPCにVineLinux6.0を入れた(CF-A1RにVineLinux6.0をインストール )ので、軽いウインドウマネージャーでも入れて試してみようと思いFVWM をインストールしてみた。(テスト用&カスタマイズ用として速いPCにw)

FVWMは昔とても好きで、このブログでも頑張って書いてました。
ずっと開発も止まっていて、古臭い感じだけど軽くカスタマイズ次第ではとてもかっこ良くなる素質を秘めていましたw
今年の4月に6年ぶりの安定版がリリースされたことはどこかで読んでいたんだけど、、、使ってみる機会がなかった。

実に良い!

apt-getでインストールするとGDMに登録されてる。ニコニコ
(これ大事なことなんだけど昔は手動だったw)
なんとインストールされたのは fvwm2-2.7.0 ドキドキ
現在2011年8月の本家サイト のLatestは 2.6.2 なんでsnapshot?

右ドラッグショートカットが最高!クラッカー
(マウス右押しながらドラッグするジェスチャー)
(マウスストロークと言うらしいです)
1 2 3
4 5 6
7 8 9
(例:マウス右押しで 3-5-7 とナナメにドラッグすると gnome-terminal が立ち上がる)
(何もないところで数回やると成功するかなって)

Vine5.0でのインストールについて詳しく書いてあったサイトがあったので、こちらのサイト(fvwm )を参考にしながらセットアップしました。
インストール後に ~/.fvwm/ 以下の設定をしなければ「素」のFVWMが立ち上がり、Vine仕様の「Blue-Vine」を見ることができませんので、要理解です。

というか書いておきますあせる

$ cd      (←自分のホームディレクトリへもどる)
$ mkdir .fvwm (←.fvwm/ディレクトリを作る)
$ ls -a     (←.fvwm/が出来たか確認)
$ cp /usr/share/fvwm/Blue-Vine-theme/* .fvwm/
$ cp /usr/share/fvwm/Blue-Vine-theme/.fvwm2rc .fvwm/
$ cp /usr/share/fvwm/Blue-Vine-theme/.fvwm2rc .fvwm/.fvwm2rc.my

$ ls -a .fvwm/* (←コピーされたか確認)

ログインしてみてこんな感じの「Blue-Vine」になれば成功です。

It's Automatic !-fvwm_vine1

その後はルートメニュー(マウスをクリックで表示)にある
0. Fvwm README 閲覧
0. Fvwm manual 閲覧
を見ながらカスタマイズでどんどん使いやすくなると思います。

右ドラッグショートカットいいな~~ラブラブ音譜


AD
FVWM_SS_1

FVWM_SS_2

.fvwm2rc 設定 壁紙(background)

FVWM2 で壁紙を設定するには、InitFunction で設定すれば良い。


壁紙を設定する

AddToFunc InitFunction   "I" module FvwmButtons
+ "I" exec display -window root "img/BACKGROUND.jpg" ←画像のパスを指定

display コマンド(ImageMagick)を使用して root に張り込んでいます。
画像のパスは .fvwm2rc から見たパスを指定します。

display コマンドが使用出来るか確認するには
$ display  ←コマンド入力
とコマンド入力して ImageMagick が立ち上がれば使用できます。
もし、使用出来ない場合は apt-get でインストールできます。
# apt-get install ImageMagick


Tips

InitFunction に書くと FVWM2 の起動時に反映されるので、一旦 FVWM2 を終了させなくてはならない。
これは、壁紙を選んでいる時には不都合だ。

AddToFunc RestartFunction "I" Module FvwmButtons  ←再起動時の設定
+ "I" exec display -window root "img/BACKGROUND.jpg"

再起動時の設定に使用する RestartFunction に一時的に書いて、FVWM2を再起動することで壁紙画像を変更できる。

本来 InitFunction (起動時の設定) にだけ書いておけば、再起動してもそのまま反映されるので記述はいらない。
設定が決まったら RestartFunction に書いた設定を、InitFunction にカットペーストすれば良い。

AD
Buttonbar_DockApp

ボタンバーに DockApp を表示させる

ここんとこ DockApp をいろいろ仕入れてましたが、FVWM2で使用するにはボタンバーへ追加して表示させよう。


ボタンバー設定

############# FvwmButtons button-bar #################
##
*FvwmButtonsBack gray40
*FvwmButtonsFore white
*FvwmButtonsFont -adobe-helvetica-medium-r-*--12-*-*-*-*-*-iso8859-1
*FvwmButtonsGeometry -1-1
#*FvwmButtonsColumns 1
*FvwmButtonsRows 1
#*FvwmButtonsPixmap none

## カレンダー ↓最初に Size 65 65 で1マスを指定
*FvwmButtons(Size 65 65, Frame -1, Swallow wmCalClockKbd \
'Exec exec wmCalClockKbd -tc white -24 -S -b 100 &')
## 天気温度
*FvwmButtons(Frame -1, Swallow wmWeather \
'Exec exec wmWeather -s RJCO -m -hPa -mps -delay 120 &')
## CPU
*FvwmButtons(Frame -1, Swallow bubblemon \
'Exec exec bubblemon &')
## Mem
*FvwmButtons(Frame -1, Swallow wmmemfree \
'Exec exec wmmemfree &')

#*FvwmButtons(Frame -1, Swallow "FvwmPager" "FvwmPager 0 0")
*FvwmButtons(2x1, Frame -1, Swallow "FvwmPager" "FvwmPager 0 0")

現在こんな感じです。
初期設定のボタンなどは全てとっぱらい。(行頭に"#"でコメントアウト)
はじめの1マス目に Size 65 65 で大きさを指定してます。
FvwmPager は、横に2xです。(DeskTopSize 3x2)

Swallow には option がつけられますが、してません。
(Respawn、NoHints、NoKill、NoClose、UseOld、など man FvwmButtons 参照。)

DockApp は左から
wmCalClockKbdwmWeatherbubblemonwmMemFree です。

Buttonbar_DockApp

AD

.fvwm2rc 設定 FvwmButtons

テーマ:
fvwm_button_bar2

.fvwm2rc 設定 FvwmButtons

ボタンバーのカスタマイズについてのメモ。
ボタンバー FvwmButtons について。
$ man FvwmButtons  ←コマンド入力
とすれば、ボタンバーの設定 man が見れる。


FvwmButtons ボタンバー全体の設定

*FvwmButtonsBack gray40  ←背景色
*FvwmButtonsFore white ←文字色
*FvwmButtonsFont -adobe-helvetica-medium-r-*--12-*-*-*-*-*-iso8859-1
↑フォント
*FvwmButtonsGeometry -1-1 ←位置
#*FvwmButtonsColumns 1 ←列(縦方向)
*FvwmButtonsRows 1 ←行(横方向)

↑これはVineLinuxのfvwm2rcの初期設定にあるものです。
簡単に変更してみます。

*FvwmButtonsGeometry -1+1  ←右上の位置に変更
*FvwmButtonsColumns 1 ←縦1列に変更(行頭"#"削除)
#*FvwmButtonsRows 1 ←行頭に"#"を追加

再起動すると、ボタンバーが右上、縦1列になってるはずです。

*FvwmButtonsPixmap none  ←none を指定

Pixmap に none を指定するとルートの壁紙を指定することになるので、ボタンバーが透明になります。


FvwmButtons(option) ボタンバー内の個々の設定

ボタンバーの中には、ボタン、ページャー、時計などのアプリが格納出来ます。
その個々を格納するには
*FvwmButtons(option)
で設定していきます。
通常のボタンであれば option = [title icon command] です。

*FvwmButtons(Title Sylpheed, Icon sylpheed.xpm, Action 'Exec exec sylpheed &')

例として Sylpheed を起動するボタンです。
指定するアイコンの大きさでボタンの大きさが決まります。
通常48x48などの大きさが良いでしょう。
ボタンが3つあり、ひとつに100x50の画像を指定すると、全てのボタンがその画像の大きさになってしまいます。

このボタン1個の大きさというのは重要です。
ボタンバー内に格納するもの全ての基準になります。
ボタン以外のものを格納する時にも、この基準の大きさになります。

ページャー(FvwmPager)を格納するときには
*FvwmButtons(Frame -1, Swallow "FvwmPager" "FvwmPager 0 0")
↑となります。
仮想デスクトップが 4x2 であればとても小さく表示されます。
基準の大きさの横に2倍の大きさで格納出来れば良さそうです。
DeskTopSize 4x2  ←デスクトップを 4x2

*FvwmButtons(Columns 2, Frame -1, Swallow "FvwmPager" "FvwmPager 0 0")
*FvwmButtons(2x1, Frame -1, Swallow "FvwmPager" "FvwmPager 0 0")
*FvwmButtons(Size 150 50, Frame -1, Swallow "FvwmPager" "FvwmPager 0 0")

↑ 3つの設定を書きました。どれか1行を設定する。
上2つは同じ内容です。
最後のように Size でピクセル指定できます。

ただし、やってみるとわかりますが Size で指定すると、全てのボタンがその大きさになってしまいます。

fvwm_buttonbar_new

.fvwm2rc 設定 ボタンバーをカスタマイズ

VineLinux の Fvwm2 の初期設定でのボタンバーは、現在では設定が古く登録されているコマンドが有効でない場合がある。
少し一般的に変更してみる。


ボタンバーの設定

315行目あたりから始まるボタンバーの設定をいじります。

まず、VineLinux のロゴマークのあるボタンはクリックすると mozilla が立ち上がるはずなのですが、起動しません。
これを直す。
 350行目あたり↓
*FvwmButtons(Title "Vine Linux", Icon vinelogo-nostr-48.xpm, Action 'Exec exec mozilla.sh &')
↑これの mozilla.sh & の .sh を削除

*FvwmButtons(Title "Vine Linux", Icon vinelogo-nostr-48.xpm, Action 'Exec exec mozilla &')
これで ロゴマークボタンをクリックすると mozilla が立ち上がります。

次に、検索のボタンを無くす。(w
このボタン、現在 Google などで検索することが多く、使用してません。(tknamazu さえインストールしてないかも。)
 351行目あたり↓
*FvwmButtons(Title 検索, Icon Info.xpm, Action 'Exec exec tknamazu &')
↑行頭に "#" を入れてコメントアウトする

#*FvwmButtons(Title 検索, Icon Info.xpm, Action 'Exec exec tknamazu &')
これで見えなくなります。
"#" を消すともとに戻ります。

VEdit のボタンは gedit に変更。
 352行目あたり↓
*FvwmButtons(Title VEdit, Icon clipboard.xpm, Action 'Exec exec vedit &')
↑の VEdit vedit を gedit に変更

*FvwmButtons(Title gedit, Icon clipboard.xpm, Action 'Exec exec gedit &')
これで gedit のボタンになります。
ただ、指定している clipboard.xpm が見当たらないので表示されません。
(VineLinux 3.1)

Sylpheed のボタンにアイコンを表示させる。
 353行目あたり↓
*FvwmButtons(Title Sylpheed, Icon writeletter.xpm, Action 'Exec exec sylpheed &')
↑の writeletter.xpm を sylpheed.xpm に変更

*FvwmButtons(Title Sylpheed, Icon sylpheed.xpm, Action 'Exec exec sylpheed &')
これで Sylpheed のアイコンが表示される。


gedit のボタンにアイコンを表示させる

gedit のアイコンは /usr/share/pixmaps/gedit-icon.png なので、"gedit-icon.png" を指定すれば表示できそうですが、実際指定してみると出来ませんでした。
これは fvwm2 のバージョンが古くボタンバーなどに "png" 画像を表示出来ない仕様のようです。"xpm" であれば表示出来ます。(最新バージョンでは"png"表示可能です)
古いVineのバージョンでも表示出来るように /usr/share/pixmaps/gedit-icon.png を "gedit-icon.xpm" に変換して表示させて見た。
変換には ImageMagick ($ display で起動させる) を使用した。
そのまま変換では影がまわりを黒くしてしまうので、gimp であらかじめ影の部分を取り除いてから変換するとキレイにいくかも。

fvwm_buttonbar_new

fvwm_button_bar


.fvwm2rc 設定 起動時に自動で起動させる(InitFunction)

Fvwm を起動した時、いつも自動で立ち上がっていて欲しいプログラムないですか?
いつも使う ターミナル や GKrellM など。

毎回起動時に立ち上がるように設定できます。


InitFunction の設定

########## 初期化関数(起動、再起動時の処理) ##########←130行目あたり
AddToFunc InitFunction "I" Module FvwmButtons
+ "I" exec xsetroot -mod 2 2 -fg \#554055 -bg \#705070
↑バックグラウンド(背景色)の設定

+ "I" exec gkrellm ←追加
+ "I" exec xterm -bg black -fg lightgray ←追加

例として gkrellm と xterm を毎回起動するように設定。
.fvwm に設定を追加して、一旦終了してから起動してみると、gkrellm と xterm が起動しているはずです。
(gkrellm がインストールされていないとダメです。
# apt-get install gkrellm してインストールしてください。)

自分のいつも使っているターミナルに設定すれば完了です。
その他、好きなアプリケーションを追加すれば良い。


知識

ウインドウの位置を指定して開始したい場合は、
xterm -geometry +30+30
のように指定すると良い。詳しくは $ man fvwm2 とコマンド入力して英語を読む。

fvwm_RootMenu

.fvwm2rc 設定 ルートメニュー(RootMenu)

ルートメニューには普段使用するターミナル(*term)や、アプリケーションを登録しておく。
初期状態では自分の使用しいるものが登録されていなかったり、使用していないものが登録されていたりします。
自分の使いやすいように変更します。


RootMenu の設定

################### 各メニュー設定 ####################←140行目あたり
AddToMenu RootMenu "ルート・メニュー" Title
+ "Eterm"%mini.xterm.xpm% Exec exec Eterm -b black -f lightgray -P no
+ "mlterm"%mini.xterm.xpm% Exec exec mlterm
+ "&Rxvt"%mini.xterm.xpm% Exec exec rxvt -bg black -fg lightgray
+ "xterm"%mini.xterm.xpm% Exec exec xterm -bg black -fg lightgray

.fvwm2rc 内に↑の設定をします。
Kterm の設定があると思いますが、現在 VineLinux 3.1 では kterm はデフォルトでインストールされていないので、変更した方が良いでしょう。
例では Eterm mlterm rxvt xterm を設定してみました。

AddToMenu RootMenu  "ルート・メニュー"  Title
↑ルートメニューの設定開始。

+ "mlterm"%mini.xterm.xpm% Exec exec mlterm
+ "&Rxvt"%mini.xterm.xpm% Exec exec rxvt -bg black -fg lightgray
↑設定内容は↓のようになります。

"メニューに表示する名前"
%メニューに表示されるアイコン%
Exec exec コマンド

コマンドにはオプションを設定できます。
rxvt のところに "&Rxvt" とありますが、これはショートカットを設定しています。
ルートメニューには "Rxvt" と下線付きで表示され、ショートカットが設定されていること表します。
ルートメニューが表示されている時に [r]キー を押してみてください。rxvt が立ち上がるはずです。

fvwm_RootMenu


その他

+     ""     Nop    ←罫線の挿入

+ "プログラム" Popup 設定名 ←サブメニューの定義

+ "Fvwmを終了する" Quit ←終了
+ "Fvwmを再起動" Restart fvwm ←再起動
+ "コマンドを再起動" Restart コマンド ←他を再起動

fvwm_Sticky

.fvwm2rc 設定 いつも同じ場所に表示(Sticky)

fvwm2 には仮想デスクトップと言われるものがあります。
マウスが画面の端まで行くと、次の仮想デスクトップに画面がスクロールするものです。(説明がむずかしいな)
この仮想デスクトップでスクロールさせると、通常ウインドウなどは元の位置から動きません。
しかし、初期設定のボタンバーなどは仮想デスクトップのスクロールと一緒についてきて(動いて)、いつも同じ場所に表示されます。

これを実現する設定が "Sticky" です。


Sticky の設定

例えば "GKrellM" などはいつも同じ場所にあって欲しい。
こういう DockApp 的なアプリはいつも画面の同じ場所にある方が都合が良い。
# その他一般的なプログラムのスタイル ←75行目付近に
Style "gkrellm" WindowListSkip, Sticky, ClickToFocus ←追加
↑ .fvwm2rc に追加します。
(VineLinux 3.1 の初期設定の場合の行数です)

fvwm2 を再起動すると、仮想デスクトップのスクロールの動きに GKrellM がついてくるようになります。

知識

$ jman fvwm2 ←コマンド入力
↑すると .fvwm2rc の設定などが詳しく英語で書かれています。(あれ? jmanなのに。。。)
-----------------------------------------
Sticky → いつも同じ場所に表示
WindowListSkip → WindowList に表示させない
ClickToFocus → クリックするとフォーカス
-----------------------------------------


StickyIcon の設定

"Sticky" と同じで "StickyIcon" という設定があります。
これは、"アイコン化された(Icon)ウインドウ"=アイコン がいつも同じ場所に表示される設定です。

# デフォルトのスタイル ←51行目付近
Style "*" StickyIcon ←追加
この設定はおすすめです。
仮想デスクトップをスクロールしてもアイコンがついてくる(同じ場所に表示される)ので、画面を広く使用したい時には大変便利です。
最小化(アイコンに)して画面をスクロール → 何も無いところでウインドウに戻す。(アイコンをダブルクリック)

この設定が fvwm2 を使う上での基本だと思ってます。


.fvwm2rc 設定 自動前面(FvwmAuto)を止める

VineLinuxのfvwm2の初期設定では、マウスカーソルがウインドウ上に0.5秒以上あると自動的にそのウインドウを最前面にします。
この設定、良いようであまり好きではなかったりします。

この設定が嫌いで自動前面をやめたい人は以下の設定でやめることが出来ます。


FvwmAuto を止める

# カーソルが500ms以上同じウィンドウにあればそのウィンドウを自動的にレイズする
#FvwmAuto 500 Raise Nop ←行頭に"#"を入れコメントアウトする
27行目付近の FvwmAuto からはじまる行をコメントアウトします。

fvwm2 を再起動すると設定が有効になり、マウスのカーソルが入っても最前面に上がって来ません。
フォーカスは入ります。
最前面に上げるにはタイトルバーをクリックします。


知識

ウインドウの端も(角ではない)タイトルバーと同じ設定になっています。
クリックで最前面。
ドラッグすると移動出来ます。

リサイズはウインドウの角(コーナー)だけ有効です。

.fvwm2rc 設定 [Alt]+[Tab]

テーマ:

.fvwm2rc 設定 [Alt]+[Tab]

さて、いよいよ .fvwm2rc のカスタマイズです。
初期設定で使っていて一番不都合に感じたのは、[Alt]+[Tab]でのウインドウ切替えが出来ないことでした。
まずは、ここから設定します。

".fvwm2rc" 内に以下↓の設定を追記します。(私は95~98行目あたりに追記しました。)


[Alt]+[Tab]の設定

その1

# Alt+ Tab の設定     ←設定の説明も書いておいた方が良い
Key Tab A M WindowList Root c c ←設定
おすすめです。
[Alt]+[Tab]を押した後にウインドウリスト(一覧)が出てきて、そこから選択します。
数字キー、矢印キー、マウスでの選択になります。

その2

# Alt+ Tab の設定
Key Tab A M WindowList Root c c NoDeskSort, SelectOnRelease Meta_L
その1の設定と同じですが、バージョンが新しいとWindowsと同じように動くようです。(実際試してないのでわかりません。新しいバージョン消しちゃったんだよな。)

その3

# Alt+ Tab の設定
AddToFunc focus-raise-warp
+ "I" Focus
+ "I" Raise
+ "I" WarpToWindow 50 50
Key Tab A M Next [*] focus-raise-warp
Key Tab A SM Prev [*] focus-raise-warp
こちらの設定はウインドウリストが出ません。
目的のウインドウまで[Alt]+[Tab]をしなくてはいけません。
ウインドウが最小化(アイコン化)されていたら開いてくれません。


設定を反映するには

設定が済んだら fvwm2 を再起動します。
[ルートメニュー]から [fvwmを終了]→[fvwm2を再起動] を選び再起動します。
これで設定が反映されます。