2014年8月18日月曜日

javascriptnにチャレンジしてみた。

母「あんた大学でJava習ったんでしょ、ホームページ作りたいからjavascript教えてよ」
子「Javaとjavascriptはインドとインドネシアぐらいちがう」

このネタのインドとインドネシアの例えはうまいなぁと思って感動していたわけですが、どうやらネタにとどまってくれなかったようで。
お盆に実家に帰ったら父親が突然
「ホームページ作ってよ」
と行ってきたわけですね。

ほんとにわけわからないですよね。
とは言いつつ、サーバ運用はやってみたかったのでこれはうまく行けばサーバマシンを買ってもらえるかなとかそういった魂胆でとりあえず着手。

話を聞いてみるとノリで言ってみたところがあるみたいで、仕様が確定していないんですね。
このページを真似てみたいと見せられたサイトがあったので、とりあえずそれを参考にしようかと思ったのですが、HTMLを覗いてみると秘伝のたれ状態。
tableを幾重にもしていてスタイルが構築されていたので、とりあえずスタイルはCSSに投げることに。

ヘッダとナビとフッタを固定して記事だけ入れ替えるにはcgiやphpかなとも思ったのですが、実家に持ってきたノートPCは貧弱リソースなので仮想マシンを作ってサーバをあれこれいじることはできそうにない。

そこで、javascriptを使ってみることに。
 Get引数を使って、articleの内部を書き換えるという処理をすることに。

しかし、普段CやC++を使っているので、軽量言語にはあまり馴染みがなく。
動的型付やコンパイラがないことにかなり戸惑いを覚えました。

あと、関数の呼び出しに苦戦すると思いませんでした。

setTimeout(function(),1000);

なんでこれで動かないかなぁと悩み、解決するのに半日かかりました。

setTimeout('function()',1000);

シングルコーテーションでくくるのね。
しかも、jsってダブルコーテーションとシングルコーテーションの違いがあんまりないのね。
文字列と文字定数って印象があるからちょっと違和感。

しかも、変数に関数を代入するみたいな文とか出てくるし。
何が起きているのかさっぱりです。

とりあえず、形だけはできたので、あとは細かいバグを潰すことと、実際にサーバを建てることですが、父に聞いてみるとサーバを建てる気はないらしい。
でも、外部の無料のサービスでjsが自由に使えるところなんてあったっけな?

とりあえず、家に戻ったら仮想マシンでサーバを立ててみて、うまく言ったら父を言いくるめてサーバマシンを買ってもらおうかなぁと考えているので頑張ってみたいと思います。


そして、軽量言語を使いこなしている方々を尊敬しますわ。

2014年8月12日火曜日

ubuntuに壁紙を追加してみた

ubuntuの壁紙が

/usr/share/backgrounds/

に入っているから、そこに追加すればいいんじゃね?
って思って追加してみたんですが、
設定→外観→背景
のところにないんですよね...

なんでだろう?と思って調べてみると

~/.backgrounds.xml

を編集しろとか、設定のところに画像をドラッグ&ドロップしろとか書いてあるんですよ...

$ ls -a ~/

で見てみると、そんなファイルねぇよ!ってなったんですが、参考にしていたページを見てみると2010年。そりゃ違ってるわな。
で、いろいろ調べてみたら

/usr/share/gnome-background-properties/trusty-wallpapers.xml
を編集すればいいらしい。
というわけで、見様見真似で書いてみたらできたー!

できたから何だって話ですけどねー。
何かの参考になれば幸いです。

2014年6月28日土曜日

dmenuが便利だった。

テストも一段落したので、久しぶりにPCの環境をいじってみようかなぁなんて思い立ちました。
先日、大学で学内LANに接続しようとしたんですが、証明書をうまくもってこれずに入れず..

無線LANの設定はGUIからしか行ったことがないのですが、xmonadを使うならそれじゃ行けないなと思いまして、いろいろ調べていたんですね。
ネット上にはvimmerもいるようで喜んでいたのですが、偶然みつけたのがdmenuだったのです。
 さっそくインストール。

$sudo apt-get install dmenu

で、起動なんですが、xmonadで<mod-p>を押すみたいです。(modはaltキーがデフォルトかな)
アプリケーションの起動になかなか便利。
いままでは<mod-S-Enter>でターミナルを立ち上げて、そこからアプリを起動していたのですが、これはなかなか便利。
どのように便利かは使えばわかると思います。
みなさんもぜひ試してみてください!

2014年3月31日月曜日

僕がVim中毒者になるまで

はじめに

プログラマにとって相棒とも言える存在であるエディタ。
Sakura 秀丸、SublimeText, TeraPad, notepad++, gedit, Emacs, Vim,nanoなど、たくさんのエディタが存在します。

そんな中でも、今の俺のお気に入りにエディタはVim←タイトル見りゃわかるわ

まずはじめに、俺のエディタ履歴を書いてみたいと思います。

2010年4月授業でプログラムを初めて使う。言語はC。授業ではTerapadを使っていたが、家族共用のPCしか持っていなかった俺はメモ帳でコーディングする。
同年8月父に頼んでTeraPadをインストールしてもい、TeraPadを使うようになる。
2011年3月PHPをいじるようになる。Sakuraエディタと出会うも、そんなに使わず。
2012年10月Linux(Ubuntu)を初めて使う。geditと出会い使いはじめる。windowsでは相変わらずTeraPad。
2013年1月Notepad++と出会う。スペースでインデントを取る人間なのでインデント崩れが気に食わないが便利なのでwindowsでは使う。
2013年3月研究室のUbuntuを破壊し、先生にviエディタを教えてもらう。使いにくいエディタだと思った。
2013年4月Windows版のgeditがあることを知る。晴れてgedit厨となる。
2014年1月マウスレスでコーディングをしようとEmacsを使う。慣れれば奇跡的なコーディングが出来るというあこがれを糧に頑張る
1日後Vimの存在を知り、そちらに移行する。こっちのほうが相性がいい気がしたというただそれだけの理由で。
2014年3月31日この記事を書いている。今は立派なVim中毒者だ。

僕がVimに惹かれたきっかけとなった記事がこれだ!



Vimと出会った頃の俺はgedit厨であったため、やろうとしていることはまさにこの人と同じなのだ。
しかも、この人の文章の書き方、なかなか気に入っている。

ちなみに、Vimを知ったきっかけはUbuntu Serverを使ったことである。
今までは
$vi
って打つとUbuntuの標準でインストールされているvim-tiny(であってるよね?)が起動されていて、これの機能が少なくて使いにくいのなんのって。
これがUbuntuServerではvimが起動される。
色分けされていて見やすいなと思ったので、
"vi 色分け"でぐぐったら、どうやらviとvimというのがあるらしいと知ったのである。
そして、"vim 機能"でググってこのブログに出会ったというわけである。

Vimに対する認識もこの著者と同じで、この人がやったとおりにやればVimを使えると思った具合である。

実際、Vimを使いこなすまでの手順が具体的に書いてあり、すごくわかりやすい。
このブログの中で紹介されているこの記事の訳も言葉の選び方のセンスをとても気に入っている。
それより何より、わかりやすい。

さて、これで俺も晴れてVimデビューを果たしたわけだが、使いにくいのなんのってw
だいたい、ESCが遠い。
それで、使い始めたのがCtrl + [。
これもESCと同様の動作をしてくれるが、ESCを押すよりも大きく手を動かさなくて済むので重宝している。
はじめのうちはhjklを連打するのに必死で。
インサートモードでコマンド打ってみたりw
まぁ、しゃあないよね。
そして、このブログ中に紹介されている動画
でも紹介されているように、VimってUSキーボードで使うように設計されてるんじゃね?って変なことを考えだしてしまったため、とてもUSキーボードが欲しくなりました。←この頃には$とか0とかの移動をするようになったためカーソルの連打数も減りました。
また、動画中で紹介されているcitとかci",cwを使うようになり、Vimってちょっと便利かもって思い始めました。

そしてVim中毒者へ


そんな時に出会ってしまった記事が日本語キーボードを英字配列風にするである。
そして、この記事を理解するにあたって同時に参考にしたのがXmodmapでお好みのキーバインドである。
これらのお陰でVimを何倍心地よく使えたのかわからない。
それと同時に、HHKのUS配列のキーボードがすごく欲しくなってしまった。
この配列である。
カーソルキーが無い上にEscキーが近くにある。Ctrlキーも押しやすい。
まさにVimmerのためにあるキーボードではないかと思ってしまったのである。
この頃から、僕は研究室で「こいつ怖い」と言われ始めるようになったのである。

更に僕はVimを使い続け、ついにExcelでhjklを連打し、間違えたと思ったらCtrl + [を押すようになったのである!
これは立派なVim病の症状である。

まず手始めに使い始めたのがvichromeである。
これはChromeの拡張機能で、要はChromeをVimっぽくするってやつである。

そして、僕にトドメをさしたのはこの記事だろう。
Vim以外でVimする

ちなみに、これを見つける数日前にHappy Hacking Keyboard Liteを餞別として頂いたのである。
このキーボード、カーソルキーがFnを押しながらであれば使えるが、通常は使えないのでVim以外のエディタではイライラの原因以外の何物でも無いことを発見してしまったのである。

窓嫌いではあるが、Excel VBAでプログラミングしていた時に、エディタの仕様が違うとイライラして仕方がなかったので一度Vimで書いてコピペという非効率的なことをしていた時に出会ってしまった。
これ、マジで便利。
各ソフトごとにいちいちVimライクにするプラグインを入れなくていいし、そもそもプラグインが存在しない奴すらVimライクにできるのである。
↑これを後輩に教えたら、Vimmerやばいって返ってきたw

Vim中毒者になって思うこと


Vim中毒者になり始めの頃に
Emacsユーザが「実践Vim」を読んだ感想
という記事を読んだ。
現在は、この記事以上に最高のレビューは無いのでは無いかと思っている。

僕は、この記事を読んでいこう"."コマンドを多様することになり、そのちっぽけな点の威力に驚愕している。
また、この記事で触れられていますが、「え、そこへまず移動するの」といったように、EmacsユーザとVimユーザではカーソル移動ですら感覚が違います。
Emacsでカーソルを動かすとき, 1文字単位かword単位か, シンボル単位で目を動かして移動を行っています. それは Emacsがそのような移動を提供をしているからだということに気付かされました.」とこの方も書いていますが、コーディングの時の思考がエディタによって形成されていくんだなと感じました。

先日、この事の意味を痛感する出来事がありました。
研究室の引き継ぎで俺が作ったヘッダファイルの使い方を教えるためにプログラムの簡単な練習問題をやってもらいました。
geditを使ってコーディングしている後輩の画面を見ていたのですが、感覚が全然違うんですよね。
今回使ったのが行列演算のプログラムなのですが、行列を初期化するとき、その後輩は

obj.setMatrix(0,0,1);
obj.setMatrix(0,1,2);
obj.setMatrix(0,2,3);

obj.setMatrix(1,0,4);
obj.setMatrix(1,1,5);
obj.setMatrix(1,2,6);

obj.setMatrix(2,0,7);
obj.setMatrix(2,1,8);
obj.setMatrix(2,2,9);

みたいにしてたんですね。(まぁ、俺だったらそもそも配列を一つ用意してそれを初期化し、for文でset関数を呼び出しますが)

これを書くのに、まず
obj.setMatrix(0,0,1);
を書き、それをコピペして8回貼り付ける。
この時点でvimと違うのはC-pを連打しなければならない点です。
まず、連打ということに大きな違和感を覚えました。

次に、数字を変更していくために一つづつ消して変えていく。
当たり前っちゃ当たり前ですが、VimmerとしてはC-aやC-xが無いことに煩わしさを覚えますよね。


さて、次にVimでこれを実行する方法ですが、
obj.setMatrix(0,0,1);
と記述するまでは一緒。
次に、qaYp$hh<C-a>hh.q
と入力し、2行目が完成します。
更にそのまま@aと打てば3行目も完成します。
改行は普通に入れときます。
次に先頭の行に戻り、
qa4Y3jp$hh<C-a>4h.j.4l.j.4h.2k0q
って打てば次の三行が出来上がりです。
↑5,6,7行目の処理が重複してるからもっといいのがあるかも

残りの3行は@aって打てば出来上がり。
Vimなら行数や列数の変更があってもこの機能でなんとでもできます←そもそも、配列を用意せずにこれを行うことはおすすめしませんが。

このように、geditを使っている時とは「思考」のレベルで違うんです。
編集に対する考え方が違う。

Vim中毒とは、単に手がVimの動きをしてしまうだけでなく、Vimに思考を支配されることではないのかなと感じています。

2014年3月30日日曜日

yamyで窓でもVimる-part2-

前回、Vimライクな動作の仕様を大雑把に(厳格に決めてないところはエンジニアとして致命的だと思うんだ)決めたわけですが、今回はそれを実装すべく、具体的に設定ファイルを書いていこうと思います。

まず、ファイル名は.mayuならなんでも良さそうなのでmyVim.mayuにしました。
そして、前回同様、Vimedit.mayuを参考に書いていきましょう。

まず、モードなんですが、ロック機能を使います。
L0 Normal Mode
L1 Insert Mode
L2 Overwrite Once
L3 Overwrite Continously
L4 Character-wise Visual Mode
L5 Block-wise Visual Mode
L6 Line-wise Visual mode

にしました。
ここまでパクって怒られないものかと...
ちなみに言いますと、Overwrite Onceを&Prefixを使って再現しようとして失敗しました。

keymap2 OverwirteOnce : Global
    key L0-*S-i = Delete *S-i #a~z,数字キー、記号キーも同様に定義してあるよ!
keymap Global
    key L0-r = &Prefix(OverwriteOnce)
    key L0-i = &Toggle(Lock1,on)

なんて書くと、一件よさそに見えるのですが、

abcdefg

のcとdの間でriって押すとするじゃないですか、すると

abciefg

ってなってくれるところまでは嬉しいのですが、本来はここでノーマルモードでなきゃいけないのですがインサートモードになってしまうんです。


この問題が解決できずに結局vimedit.mayuを参考にする結果となりました。

ちなみに、L0はVimモードのON,Offも兼ねるようにしてあります。
VimモードのOn,Offの切り替えにはAlt + 左ダイヤモンドキーを割り当てました。右ダイヤモンドキーはWindowsキーとして使います。
また、左ダイヤモンドキーを単独で押した場合にはL0~L9のすべてをOffにするようにしました。
すべてのロックを解除したいときに助かるかなと。

次に、と言ってもまたVimedit.mayuをパクるだけですが、安全のためにすべてのキーを無効にするんだそうです。
とは言っても、挿入モードと上書きモードはそのまま出力されたほうが嬉しいので、
key L0-~L1-~L2-~L3-*a = &Ignore
と言った感じで記述していきました。


そして、次に書いたのがキーでバッグです。
何がL0~L9のどれがOnでどれがOffかわからない時に重宝します。
一度、左ダイヤモンドキーのキーコードを間違えたがためにL0がOnになりっぱなしの自体に陥りましたが、この機能に救われて何とか原因を発見することができました。
  key ~L0-*L1-*L2-*L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_0 = Space S-L o c k S-O f f _0 Space
  key *L0-~L1-*L2-*L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_1 = Space S-L o c k S-O f f _1 Space
  key *L0-*L1-~L2-*L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_2 = Space S-L o c k S-O f f _2 Space
  key *L0-*L1-*L2-~L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_3 = Space S-L o c k S-O f f _3 Space
  key *L0-*L1-*L2-*L3-~L4-*L5-*L6-*L7-*L8-*L9-C-S-_4 = Space S-L o c k S-O f f _4 Space
  key *L0-*L1-*L2-*L3-*L4-~L5-*L6-*L7-*L8-*L9-C-S-_5 = Space S-L o c k S-O f f _5 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-~L6-*L7-*L8-*L9-C-S-_6 = Space S-L o c k S-O f f _6 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-*L6-~L7-*L8-*L9-C-S-_7 = Space S-L o c k S-O f f _7 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-*L6-*L7-~L8-*L9-C-S-_8 = Space S-L o c k S-O f f _8 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-*L6-*L7-*L8-~L9-C-S-_9 = Space S-L o c k S-O f f _9 Space
  key L0-*L1-*L2-*L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_0 = Space S-L o c k S-O n _0 Space
  key *L0-L1-*L2-*L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_1 = Space S-L o c k S-O n _1 Space
  key *L0-*L1-L2-*L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_2 = Space S-L o c k S-O n _2 Space
  key *L0-*L1-*L2-L3-*L4-*L5-*L6-*L7-*L8-*L9-C-S-_3 = Space S-L o c k S-O n _3 Space
  key *L0-*L1-*L2-*L3-L4-*L5-*L6-*L7-*L8-*L9-C-S-_4 = Space S-L o c k S-O n _4 Space
  key *L0-*L1-*L2-*L3-*L4-L5-*L6-*L7-*L8-*L9-C-S-_5 = Space S-L o c k S-O n _6 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-L6-*L7-*L8-*L9-C-S-_6 = Space S-L o c k S-O n _6 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-*L6-L7-*L8-*L9-C-S-_7 = Space S-L o c k S-O n _7 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-*L6-*L7-L8-*L9-C-S-_7 = Space S-L o c k S-O n _8 Space
  key *L0-*L1-*L2-*L3-*L4-*L5-*L6-*L7-*L8-L9-C-S-_9 = Space S-L o c k S-O n _9 Space

これは便利でした。

次に記述したのはEscとかCtrl + [を押した時にノーマルモードに戻る支持。
key L0-*ESC = &Toggle(Lock1,off) &Toggle(Lock2,off) &Toggle(Lock3,off) &Toggle(Lock4,off) &Toggle(Lock5,off)
  key L0-C-*LeftSquareBracket = &Toggle(Lock1,off) &Toggle(Lock2,off) &Toggle(Lock3,off) &Toggle(Lock4,off) &Toggle(Lock5,off)

次に、ノーマルモードでの命令をテキトーに書いてみましょう。
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_0 = Home
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-_4 = End
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-h = Left
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-j = Down
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-k = Up
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-l = Right
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-y = C-c
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-y = Up End S-Down S-End C-c Right
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-p = C-v
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-p = Up End C-v
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-x = Delete
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-C-f = PageDown
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-C-b = PageUp
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-C-d = &Variable(0,10) &Repeat((Up))
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-C-u = &Variable(0,10) &Repeat((Down))
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-u = C-z
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-C-r = C-y
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-Tab = Space Space Space Space


keymap2 DeletePre : Global
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-_4 = S-End C-x
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_0 = S-Home C-x
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-d = Up End S-Down S-End C-x

keymap2 LeftIndentPre : Global
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-Comma = Home &Variable(0,4) &Repeat((Delete))

keymap2 RightIndentPre : Global
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-Period = Home &Variable(0,4) &Repeat((Space))


keymap2 ChangePre : Global
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-_4 = S-End C-x &Toggle(Lock1,on)
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_0 = S-Home C-x &Toggle(Lock1,on)

keymap Global
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-d = &Prefix(DeletePre)
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-Comma = &Prefix(LeftIndentPre)
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-Period = &Prefix(RightIndentPre)
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-c = &Prefix(ChangePre)

ただこれだけ。
大したことはありませんね。

あとは、コロンで始まる命令たちをどうしてあげるかですが、とりあえず放置する方向で。

次に、モードの切り替えはこんなもんで大丈夫でしょうか?
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-*S-i = &Toggle(Lock1,on)          
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-o = End Enter &Toggle(Lock1,on)    
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-o = Home Enter Up &Toggle(Lock1,on)
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-*S-a = &Toggle(Lock1,on)          
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-r = &Toggle(Lock2,on)
  key L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-S-r = &Toggle(Lock3,on)

インサートモードは多分何も記述しなくても大丈夫なのでは無いかと思うんですがどうなんでしょうね?

次に、上書き(1回)モードですが、
右辺をDelete *S-a &Toggle(Lock2,off)みたいにすれば大丈夫なんじゃないかな。
もう一個の方の上書きモードは最後の&Toggleをなくすことと、
ESC or Ctrl + [が押された時に&Toggle(Lock3,off)を発生させればいいのかなと。

あとはVisualモードですが、どうやるんだろうこれ(´・ω・`)
せっせとVimedit.mayuを参考にします。
それにしても、この設定ファイル綺麗だなぁと。
俺の作ってるファイルのベタ書き具合がひどいのなんのってwww
まぁ、とりあえずは動けばいいやで行くので。

矩形選択は...TeraPadのショートカットキーらしい。
なので実装しない方向で。

そして、基本的にノーマルモードの動きにシフトをつけているだけみたいなので、せっせとコピペして完成!

しかし、こんな設定ではVimライクとはなかなか言えないですね。
回数指定でコマンド実行とか、.コマンドが使えないあたりはなんというか...
しかも、矩形選択からの挿入ができないのも辛い。
やっぱりVimって優秀なんですよ。
しばらくはこれで使ってみて、見えてきた改善点を修正しながらバージョン2,バージョン3と作っていこうかなと思います。

最後に触れておきますが、今回俺が頑張って作ったように書いていますけれども、基本的にvimedit.mayuのパクリなので。
このブログの方には感謝です。





2014年3月29日土曜日

yamyで窓をVimにする

普段Pear OSを使っているのですが、最近Excel VBAを使って母の要望に特化した家計簿を作ろうというプロジェクトを始動さました(この時期に始めると、この春から大学に入学し忙しくなるのでおじゃんになってしまいそうですが)。

ここで、Excel VBAに対する愚痴になってしまうのですが、エディタにVimが使えないのはいかがなものかと思うんですね。

最近、Vimの使えない環境に追いやられると発狂してしまう俺は標準のエディタを使っているとキーボードを叩き割りたくなるので、コードを一旦Vimにコピペして編集。編集が終わったら今度はExcelにコピペといった具合に非効率的な作業をしています。
Vim歴2,3ヶ月でこの症状がでるんですから、Vimって恐ろしいほどの中毒性があるんだなと思います((((;゚Д゚))))ガクガクブルブル

そこでなんとかならないかと調べていたら、このような素晴らしい記事を見つけました。
そこで、この記事中で紹介されているvimedit.mayuをコピペしてみたのですが動かない。

なんでかと思い、説明をじっくり読んでちょっとずつ自分で設定ファイルを書いてみたら動くじゃありませんか!

たぶん、どこかの仕様がこの著者と違うかそのたぐいだろうと思うのですが、カーソルをhjklで動かせるようにしただけで、だいぶストレスが解消されました。

そこで、もうちょっと読み進めていると、このマニュアル、最高ですね!
曖昧なところがなく、例もあるため読みやすい。
素晴らしいなものと出会ったなと感動で涙が出そう(嘘)です。
あ、でも感動したところまではほんとです。

そこで、ここまで素晴らしいマニュアルと、vimedit.mayuを参考にしながら書けば、自分仕様のVimemulatorができるのでは無いかと何故か思ってしまったため、作ってみたいと思います。

それにしても、このvimedit、よく出来ているなと思います。
Lock機能を使ってVim風にするなんて発想がまず思いつきませんでした。
それに、コメントもきっちりと書いてあって開発者の鏡だなと思いました。
しかも、2バイト文字が使われていない!
コードって人格が現れるんですね!
そして、そんな尊敬できる方の素晴らしい発想を早速ですが、ものすごく申し訳ないと思いながらパクらせていただきます。←大丈夫なのかな?非常に恐れ多いのですが


まずは想定する動作環境から。
このPCしか使わないつもりなので、以下の環境でのみ動けば十分ということで。
PCはDellのInspilon 620-s
CPUはIntel(R) Core(TM) i5-2320
メモリは8.00GB
キーボードは先日ボランティア先の方から、大学に行く餞別として頂いたHappy Hacking Keyboard Lite US配列(その方も前の職場を離れるときに餞別として頂いたものらしく、Lite2ではなくLite。端子もPS-2だったので、変換コードを探すのに数軒電気屋を回りました。なかなか気に入っています。)
マウスは何でもいいよね?いちおう今使ってるのはPC買った時についてきたちゃっちーやつ。
ディスプレイの仕様もどうでもいいことにしちゃおう。

とりあえず、動作環境はこんなもんでOKでしょうか?

そして、次に仕様を考えていきたいと思います。


必要なモードは
  • ノーマルモード
  • 挿入モード
  • 上書きモード
    • r押すとなるやつ
    • <S-r>押すとなるやつ
  • ヴィジュアルモード
    • v押すとなるやつ
    • <S-v>押すとなるやつ
    • <C-v>押すとなるやつ
にします。
コマンドモードは、一回一回':'から初めて押すことにします。

さて、ここで大事なのは「妥協」です。
ほとんどのエディタでは"Home"キーを押すと行頭にジャンプしますが、もしそれがファイルの先頭に移動するようなエディタがあったら、yamyを使って0を押した時にファイル先頭に飛んでしまったとしてもそれは仕様なのです。
仕様のとおりに設定ファイルを作るのではなく、設定ファイルが仕様なのです←それでいいのか?ww

まぁ、メーラとかExcel VBAで使えれば十分なわけで。
想定する環境外で動かす必要性に迫られたらまた別途作っていきましょうといったところです。

それでは、「俺が」Vimで多用するコマンドたちを以下に記してみます。




hjkl←これがなきゃvimどころかviとすら言えない
0,^,$,(g_ってあんまり使わないけど、使うことあるのかな?)
v,<S-v>,<C-v>
y,Y
p,P
dd,x
i,r,R,o,O,c
<C-f>,<C-b>,<C-d>,<C-u>
zz
w,b,e,f
u,<C-r>
=,>>,<<





そして、連ねながら思った、再現するのが難しそうなので今回諦めるコマンドたちをいかに
q←マクロ
zf←折りたたみ。もちろんスペースキーで展開するコマンドも
<C-n>,<C-p>←補完
~
<C-a>,<C-x>



そして、再現したいコロンで始まるコマンドたち
w←上書き
e←開く
q←閉じる
wq←名前をつけて閉じる(wとqの組み合わせだが一応)


再現できないであろう転んで始まるコマンドたち
new,tabnew,gt,split...←絶対無理だろと思う。できる方がいたら教えて下さい。尊敬します。そしてできたらコードもください。



さて、こんなことを始めてしまったら、家計簿ができるのはいつになるのかと思ってしまいますが、今日はこんなところでやめておきます。

それでは。


2014年2月13日木曜日

mintをテキストベースログインにしてGUIを自動起動させてみた

今回使ったのはLinuxMint15Mate
USBにインストールしてみようという回でやった設定に近い設定を施して見ました。

違うのはopenbox+wbarの組み合わせをxmonadにしてみたことです。

$ sudo vi /etc/default/grub


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
って書いてあるところを
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"
と書き換えます。

で、設定を読みこませるために

$ sudo update-grub

です。
これでとりあえず次回からログイン画面がCUIになります。
ユーザ名を忘れないように気をつけてくださいね(忘れかけてあせりました)

これでログインした後に

$ startx

とか打てば実行GUIが起動するんですが、いちいち打ってたらめんどくさい。
というわけで~/.profileにstartxを追記してみました。

すると見事にmateが起動してしまいました。

せっかくxmonadを入れたのに台無しですね。
調べてみると、startxに引数を与えればいいんだとか。

$ startx /usr/bin/xmonad

と試しに打ってみるとxmonadが起動したじゃありませんか!

というわけで、~/.profileにはこの一行を追記しました。
USB起動ではやはり軽量環境であると嬉しいですよね。

みなさんも、CUIログインを試してみてはいかがでしょうか?

2014年2月11日火曜日

vimって最強のエディタだと思うんですけど、みなさんはどう思いますか

vimっていいですよ。
まぁ、Emacsもいいと思うんですけど(使ったことあんまないですけど)、私はなんかvimの方が好きなんですね。
なんていうか、完全に気分で好きなだけなんですけど。

私は、メモ帳、TeraPad、サクラ、秀丸、notepad++、geditとエディタを転々としていたわけですが、vimはいいなって思うんです。
まず、コマンドラインで動くこと。この点ではEmacsもそうですね。
次に、マウスレスであること。この点もEmacsと同じ。
技術者たるもの、技術は手に染み付けて覚えるものだと思ってるんです。
手に染み着けるという点ではEmacsもvimも同じで、どっちも手で覚えられたらいいなとは思ってるんですけど、今はとりあえずvimを使ってます。
てか、EmacsはLispで拡張ができるのが最大の特長ですよね。

そして、私がvimを使う後押しをしてくれたサイトがこちらです。
このサイトのおかげで、どのようにvimを学べばいいのかがわかりました。
そもそも、大半のエディタって直感的に操作ができるせいで、「エディタを学ぶ」って言葉が無いですよね。
その点、vimもemacsも学ばないと使えないことが大半の人が挫折してしまう原因だと思うんです。
だって、vimもemacsも機能だけを聞けば誰もが飛びつくエディタじゃないですか。
そんなエディタの学び方がよく書かれたものなので、これからvimを使ってみようという方は、ぜひそちらを参考にしてみてください!

2014年2月9日日曜日

日本語配列のキーボードを英字配列っぽくして使う。

主に、こちらこちらの記事を参考にさせてもらいました。
hhkb pro2のUS配列いいなーって思ってですね、でも高いなぁと思うわけですよ。
貧乏学生には手が出ません(´・ω・`)ショボーン
それで、友人にこれに似た配列で安いやつしらない?って聞いたら、hhkb lite2を教えてくれたんですね。
これならカーソルキー引っこ抜いてパテ埋めれば良さそうだし、何より値段が嬉しいよね。
メンブレン式だから安いんだそうです。
キーボードにもこんなに種類があるんだそうで。

でもですね、貧乏性の俺は、もしこれを買ってみて使いにくかったらどうするんだろうと思ってしまったわけですよ。
そこで、キーマッピングでなんとかusキーボード風にできないかと考えていたら、先人がいましたね。
今回は日本語キーボードの設定のままキーマッピングを変更してみたいと思います。
早速やってみましょう!

$ xev

これで、キーコードを調べます。
A~Zに関してはそのままでいいので、1~0と記号を調べて見ました。

1!→10
2"→11
3#→12
4$→13
5%→14
6&→15
7'→16
8(→17
9)→18
0→19
-=→20
^~→21
\|→132
@`→34
[{→35
;+→47
:*→48
]}→51
,<→59
.>→60
/?→61
\_→97
back space→22
enter→36
変換→100
無変換→102

とりあえず、このぐらい調べればいいかな。
じゃあ、早速変更してみましょう!
......うん。めんどくさい。
やっぱり先人の知恵って大事ね。
usキーボードとして読み込ませましょう!
(たいていはGUIで変えられると思いますが、/etc/default/keyboardのレイアウトってところをusに直すといいと思います。)

いいねこれ!
というわけで、今使ってるxmodmapを上げてみます。

remove lock = Caps_Lock
remove control = Control_L
remove mod1 = Alt_L

! Caps_Lock = Control_L
keycode 66 = Control_L
! Contlol_L = Alt_L
keycode 37 = Alt_L
! Alt_L = Mode_switch
keycode 64 = Mode_switch
!Escape = Zenkaku_Hankaku
keycode 9 = Zenkaku_Hankaku
!Zenkaku_Hankaku = Escape
keycode 49 = Escape

keycode 43 = h H Left Left
keycode 44 = j J Down Down
keycode 45 = k K Up Up
keycode 46 = l L Right Right

add control = Control_L
add mod1 = Alt_L

keycode 51 = grave asciitilde grave asciitilde
keycode 97 = backslash underscore backslash underscore
keycode 132 = backslash bar backslash bar
keycode 22 = Delete BackSpace BackSpace Delete

!Henkan Key
keycode 100 = Mode_switch
!Muhenkan Key
keycode 102 = Mode_switch

こんな感じになってます。
あとは、キートップの表示を変えなきゃわからんくなりそうでだからどうしようかなぁって感じです。
みなさんも、お好みのキーマッピングで快適なpcライフを過ごしてはいかがでしょうか。

2014年2月5日水曜日

キーマッピングを変更してみた。

こちらのサイトを主に参考にさせてもらいました。

いや、vimとかxmonadとかを使っていると、色々とctrlとaltの位置が使いづらいなぁとおもうわけですよ。
そこで、.xmodmapでキーマッピングを変更しちゃえって発想に至ったわけです。

とりあせず、

$ xev

で変えたいキーのキーコードを探すでしょ。
すると、

左Alt 64
Caps Lock 66
左Ctrl 37

というわけで、

----[~/.xmodmap]----
remove lock = Caps_Lock
remove control = Control_L
remove mod1 = Alt_L

! Caps_Lock = Control_L
keycode 66 = Control_L
! Contlol_L = Alt_L
keycode 37 = Alt_L
! Alt_L = Mode_switch
keycode 64 = Mode_switch

keycode 43 = h H Left Left
keycode 44 = j J Down Down
keycode 45 = k K Up Up
keycode 46 = l L Right Right

add control = Control_L
add mod1 = Alt_L
--------

とうふうにしてみた。

$ xmodmap ~/.xmodmap

で適応できるみたいだが、~/.profileとかそういったファイルがみつからないので、どこで自動適応させればいいのかがわからなくてこまってるんだなぁww
Pear7を使ってるわけだが、PearってUbuntu派生だと思ってたけど違うのかなぁ。
だれかわかる人がいたら教えてください。

2014年1月11日土曜日

USBにLinuxMint15をインストールしよう第3弾~Xfce~

さて、第1弾ではCinnamonを試して、第2弾ではKDEを試そうとしたらダメなことがわかったのでクビにしてMATEを試して見ました。

今回は最後にXfceを仮想マシンで試してみて、最終的にどれをインストールするか決めようと思います。
まず、Xfceを仮想マシンにインストール。必要容量は6.2GBだそうでこれも大丈夫そうですね。
なぜKDEだけあんなにでかかったのか(´・ω・`)

さて、個人的に好きなXfceなのですが、この見た目ってXPっぽいなぁとか思いながら今年(2014年)4/9にサポートが切れるんだからみんなMintのXfceを使えばいいのになんて考えていました。
Openbox入れちゃうので今回は全く関係ないけどね。

まぁ、openbox+wbarってtiny coreの仕様だから軽いわけなんだが(それを全く知らずに軽いからって選んでたらtiny coreと一緒って知って驚いた)、xfceも十分軽いから別に構わないんだが、なんたってUSBにインストールしようってんだから軽いほうがいいよね。
でも、俺はXfceも優秀だと思うよ。(以上がXfceをBanしちゃうことに対する言い訳でした。)

とりあえず、いつもの通り

$ sudo apt-get update
$ sudo apt-get -yV upgrade
$ LANG=C xdg-user-dirs-gtk-update
$ sudo wget http://linuxmint-jp.net/sources.list.d/linuxmint-ja.list -O /etc/apt/sources.list.d/linuxmint-ja.list
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get -y install mint-gnome-ja
$ sudo apt-get -y install ibus-mozc
$ sudo apt-add-repository ppa:texlive-backports/ppa
$ sudo apt-get update
$ sudo apt-get -yV upgrade
$ sudo apt-get -y install texlive-lang-cjk
$ sudo apt-get -y install evince
$ sudo apt-get -y install g++
$ sudo apt-get -y install vim
$ sudo apt-get -y install openbox
$ sudo apt-get -y install wbar
$ sudo apt-get -y install wbar-config
$ sudo apt-get -y install openbox-xdgmenu
$ sudo apt-get -y install obmenu
$ sudo apt-get update
$ sudo apt-get -yV upgrade
$ sudo apt-get clean

で日本語化、TeX環境、vim、openboxと関連一式を整えておこう。
それから、Chromeをインストールする。
お約束の通り、この状態を[状態1]としてバックアップをとっておく。

それで、最近知ったんだが、emacsってコマンドラインでも動くんだね!
で、geditからemacsに乗り換えようかと思ったんだけど、vimが使いこなせばなかなか優秀って聞いたから、とりあえずvimに乗り換えようと思う。
emacsはlispでの拡張でメーラになったりいろいろ変身できるのが長所って聞くよね。
それでもvimを使ってみようと思ったので、geditとはおさらばしようと思う。

vimを使うにあたって参考にしたサイトはこちらだ。
サクラからvimに乗り換えた方のブログで、なかなか参考になる。
vimにもgvimとvimと2種類あって、どうやらこの方はgvimの方を使ってるみたいだね。
俺はコマンドラインで動かすのが好きなのでvimの方にチャレンジしているが。
このサイトも参考になりそうだなぁと思ったのでお気に入りに登録。


少し話がそれすぎた。

次に、

$obmenu

から

Add>Pipemenu
Label:Applications
id:applications
command:openbox-xdgmenu /etc/xdg/menus/applications.menu
にして、(mateの時とは違って、applications.menuがちゃんとあった。)

$ cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml

で、rc.xmlを
<keyboard>
  <!-- 長いので省略 -->
  <keybind key="W-space">
    <action name="ShowMenu">
      <menu>root-menu</menu>
    </action>
  </keybind>
  <keybind key="W-a">
    <action name="ShowMenu">
      <menu>applications</menu>
    </action>
  </keybind>
   <keybind key="W-t">
    <action name="Execute">
      <command>x-terminal-emulator</command>
    </action>
  </keybind>
   <keybind key="W-s">
    <action name="Execute">
      <prompt>Are you sure want to shutdown?</prompt>
      <command>shutdown -h now</command>
    </action>
  </keybind>
</keyboard>
というふうに編集した。(実際にはもっといっぱいキー割り当てをした。)
参考にしたサイトはこちらである。

ここで、thunarを入れ忘れたことに気がついた。

$ sudo apt-get -y install thunar

ってやってみるとすでに最新バージョンだと。
デフォルトで入ってるっぽいね。

で、このままだとWindows+sでシャットダウンされないのがわかるだろう。
shutdownコマンドはroot権限を必要とするからだ。
そこで、

$ sudo chmod +s /sbin/shutdown

として、rootユーザ以外もshutdownを使えるようにしてあげる。
これでopenboxから直接シャットダウンすることができる。

ついでに、~/.config/openbox/menu.xmlを編集して(obmenuを使っても良い)
menuにもシャットダウンボタンを追加しておいた。

ただ、一つ問題があってだな。
wbarのコマンド割り当てを
shutdown -h now
にしてしまうと、間違った時にも実行されてしまう。
とりあえず、
gksudo shutdown -h now
にして、パスワード入力を確認ログ代わりに使って見てるが、あまりよろしくないだろう。
確認ログを表示するプログラムを作って、そのプログラムから間接的にshutdown -h nowを実行するようにしておいて、wbarにはそのプログラムを実行するコマンドを割り当てるのが良い方法だが...
とりあえず、Tiny Core Linuxを起動してExitに何が割り当てられてるか見ようとしてみたが...わからん。わからんのでこの問題をとりあえず棚上げした。
明日から本気出すから問題ない。←


この状態を[状態2]としてバックアップを取っておこう。


xfceの時のterminalの透過がいいなぁと思ってたら、gnome-terminalでも透過設定はできるみたいで、ubuntuにopenboxを突っ込んだ環境で実行してみたら摩訶不思議。
openboxを透かして背景画像を見ているような挙動になりましたwww
ちなみに、guakeの場合も一緒。
openboxは透過には向いてないのかな?
まぁ、なにか設定があるんだろうけど、別に必要ないのでいいや。


そういえば、これだけLinuxをいじっておきながら、ホストOSはWindowsなんだよね。(Excelが使いたかったんです。)
で、コマンドプロンプトとTerminalってコマンドが違って使いにくいなぁとか思ってて、
でもCygwinはめんどくさそうということで、Gowをインストールしてみた。
ここからインストーラを落としてインストールしてみた。

> gow -l

で使えるコマンド一覧が見れるということだったのでやってみた。。。
Vimがある。
しかしながらですね、コマンドプロンプトがバグったような挙動(cdでフォルダ移動できなかったり...でも、一回C:\に移動すると使えるようになってたり...)になってて泣けてくる(´;ω;`)
この子ダメだ。いや、設定ができてないだけかもしれないけど。
というわけで早速アンインストール。
誰か使い方がわかる方いたら教えて下さい。

また話が脱線してしまった。
さて、ここまでやった段階でopenboxを起動してみた。
menu.xmlの構文エラーとか言ってる。
エラーが出ても、エラー以前の部分は正常に認識してくれるみたいなので、root-menuからterminalを起動して、viで~/.config/openbox/menu.xmlを見てみた。
確かに間違ってたので直して、Reconfigしてみたらちゃんと動いた。
今回はterminalが起動出来たけど、構文がはじめから間違っちゃった場合に強いのがwbarとwbar-configだよね。
あれなのさ、wbarってコマンドを割り当てるだけだから、wbarとwbar-configがあれば復旧可能なわけさ。
まぁ、linuxならCtrl+Alt+F1とかで直せって話ではあるが。

使ってみると悪くはない感じ。


さて、Cinnamon,Mate,KDE,XfceのどれをUSBにインストールするかだが...
Cinnamonはterminalの挙動がおかしくなるので却下。
KDEはそもそも8GBのUSBに入りそうにないので却下。
MateとXfceで迷うわけだが、安定と言われているMATEを採用しようかなと思います。

さて、次回は実際にUSBにインストールしてみたいと思います。



2014年1月6日月曜日

LinuxMintをUSBに入れよう第2弾

前回は、cinnamonをインストールしてみたけど、今回はKDEを試そうと思う。
バージョンは最新じゃない15ね。

でも、その前に、いきなりインストールではあれなので、前回同様仮想マシンでとりあえず行ってみようと思う。

で、とりあえずインストールしてるんだが...空き容量が7.9GBって必要ってあるんだが、持ってるUSBが8GB。
認識される容量はそれよりちょっと小さいんだが大丈夫なんだろうか?
まあいいや。
とりあえずOpenboxを入れるところまでやってみようと思います。
USBにインストールするのはXfceとTATEも試してみたからにするし。

で、インストール終わったからとりあえずシャットダウンしてるんだけど...できないwww
もういいよ。
KDEなんてしらない!

ってなわけで、予定変更。
MATEでチャレンジしてみることにしました。

というわけで、早速MATEを仮想マシンにインストール。
必要容量は6.1GBとのこと。
とりあえず8GBのUSBには入りそうだね。

$ LANG=C xdg-user-dirs-gtk-update
$ sudo apt-get update
$ sudo apt-get -yV upgrade

で、気づいたわけだが、
$ gedit
ってすると、何やらインストールされていないようなメッセージが...
あれ、俺の大好きなgeditちゃんはデフォルトでインストールされてないの!?
がっかり(´・ω・`)
というわけで、

$ sudo apt-get install gedit

なわけですが、標準のテキストエディタはなんなの?LeafPad?
plumaってエディタっぽい。
俺はgeditが好きなんだけどなぁ←お前の意見など知らん

$ sudo wget http://linuxmint-jp.net/sources.list.d/linuxmint-ja.list -O /etc/apt/sources.list.d/linuxmint-ja.list
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get -y install mint-gnome-ja
$ sudo apt-get -y install ibus-mozc
$ sudo apt-add-repository ppa:texlive-backports/ppa
$ sudo apt-get update
$ sudo apt-get -yV upgrade
$ sudo apt-get -y install texlive-lang-cjk
$ sudo apt-get -y install evince
$ sudo apt-get -y install g++
$ sudo apt-get -y install vim
$ sudo apt-get -y install openbox
$ sudo apt-get -y install wbar
$ sudo apt-get update
$ sudo apt-get -yV upgrade
$ sudo apt-get clean

さて、これを[状態1]と呼ぶことにしようか。
とりあえずここでバックアップをとっておく。

で、起動してみてびっくり。
デフォルトがopenboxになってたwww
ついでに、wbar-configをインストールしわすれてたので、

$ sudo apt-get -y install wbar-config

で、お約束の通りにこのサイトを参考にする。

$ sudo apt-get install openbox-xdgmenu
$ sudo apt-get install obmenu
$ sudo obmenu
で、このサイトの通りに、
Add>Pipemenu
Label:Applicatinos
id:applications
dommand:openbox-xdgmenu /etc/xdg/menus/applications.menu
にして、

$ cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml

で、rc.xmlを
<keyboard>
  <!-- 長いので中略 -->
  <keybind key="W-space">
    <action name="ShowMenu">
      <command>root-menu</command>
    </action>
  </keybind>
  <keybind key="W-a">
    <action name="ShowMenu">
      <command>applications</command>
    </action>
  </keybind>
</keyboard>
というふうに編集した。(すべて上記のサイトの通りである。)

とりあえず、openboxがバグったっぽい。
さて、困ったぞ、これじゃログアウトもできないじゃないか。
というわけで、Ctrl+Alt+F1をおして、

$ sudo killall -u [ユーザー名]

で強制ログアウトしちゃいましょう。
うん。できないっぽいね。
でも安心しよう。これは仮想マシンだ。
[状態1]まで戻しちゃいましょうか。
どうせ、編集中にrc.xmlをミスって変なふうにしちゃったんでしょう。

で、とりあえず

$ sudo apt-get -y install wbar-config
$ sudo apt-get install thunar

なわけですが、MateはCinnamonと違って、openboxでterminalを起動しても、文字が見えなくなることがありませんでした!

$ sudo apt-get install openbox-xdgmenu
$ sudo apt-get install obmenu
$ sudo obmenu

で、このサイトの通りに、
Add>Pipemenu
Label:Applicatinos
id:applications
dommand:openbox-xdgmenu /etc/xdg/menus/applications.menu
にして、

$ cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml

で、rc.xmlを
<keyboard>
  <!-- 長いので中略 -->
  <keybind key="W-space">
    <action name="ShowMenu">
      <command>root-menu</command>
    </action>
  </keybind>
  <keybind key="W-a">
    <action name="ShowMenu">
      <command>applications</command>
    </action>
  </keybind>
</keyboard>
というふうに編集した。(すべて上記のサイトの通りである。)
さて、今度はopenbox自体がバグることはなかったが、applications曰く、不正な出力とのこと。

$ ls /etc/xdg/menus/

としてみると、
applications.menuが無いわけで...
代わりに、mate-applications.menuとか、xfce-applications.menuがあったので、こちらを使ってみよう。

とりえず、mateの方を使ってみる。
それから、xmlの構文がどうとかって言われたから見てみたら、menuとcommandを間違ってるじゃないか!何がサイト通りだ。謝れ!←ごめんなさい(´・ω・`)
<keyboard>
  <!-- 長いので中略 -->
  <keybind key="W-space">
    <action name="ShowMenu">
      <menu>root-menu</menu>
    </action>
  </keybind>
  <keybind key="W-a">
    <action name="ShowMenu">
      <menu>applications</menu>
    </action>
  </keybind>
</keyboard>

さて、とりあえずgoogle-chromeをインストールしよう。
でね、chromeをインストール中にわかったんだけど、俺は64bit版ではなく、32bit版を使ってたみたいなんだよね。まぁいいか。
さて、とりあえずここでひとまず落ち着いたのでこれを[状態2]としてバックアップを取っておこうと思う。

それからね、tiny core linuxってさ、wbarにexitってのがついててシャットダウンできるじゃん。
俺もそれが欲しくなっちゃったのね。
だから、「wbar exit」でぐぐったら、お酒のバーが出てきた。
俺、酒は飲まないんだけどなぁ...って思ったけど。
さて、気をとり直して、「wbar exit -bar」でググった。
いろいろ出てきたけど、やっぱりよくわからない。
うん。諦めよう。

じゃあ、何をして遊ぼうかと考えたところ、rc.xmlをいじればいいんじゃね?って思ってしまったわけで...
とりあえず、Windows+tでterminalを起動するようにしてみた。
<keyboard>
  <!-- 長いので中略 -->
  <keybind key="W-t">
    <action name="Execute">
      <command>x-terminal-emulator</command>
    </action>
  </keybind>
</keyboard>
ってしてみるじゃん、
うん。いいね!
で、Windows+eでなんかができるみたいなんだけど、openboxでwindows+eを押すとエラーが出るじゃん。
で、rc.xmlを見てみた。
なんか、ファイルマネージャが起動するみたいだね。
Windowsがwindows+eでエクスプローラを起動させるから真似してみたのかな?
ホントは、geditを起動させたかったんだけど仕方ない。
windows+gでgeditを起動するようにしよう。
やり方は上と同じだから書かなくていいよね。
てか、rc.xmlを見ると使い方がわかってくるから、このファイルってopenboxの取扱説明書ってことでいいのかな?
で、俺が使うのは、terminal,chrome,gedit,thunarぐらいだから、それぞれの頭文字をショートカットキーに割り当ててみた。あ、thunarがterminalと被ったから、ファイルマネージャってことでfにしておいた。
うん。なかなかいいじゃん!

さて、openboxのメニューを出すじゃん、Exitってあるじゃん、ログアウトになっちゃうじゃん。
で、シャットダウンがしたいんだから、「openbox shutdown」でググればいいじゃんか!と思ったわけで早速ググってみた。
で、英語も読めないのにここを読んでみると...なになに?
~/.config/openbox/menu.xmlを編集すればいいの?というわけで見よう見まねで編集。
うん。動かないね。
なんというか、本当にシャットダウンしますか?ってポップアップは出てくるんだけどシャットダウンされない。
たぶん、管理者権限で実行できてないのが問題なんだとは思うが。
だって、sudoなんとか~って打ったらパスワード要求されるじゃん。

で、調べていると、ここに俺と同じ疑問を持った人がいるじゃん。
なになに
<action id="org.freedesktop.consolekit.system.stop">なんとか~ってふうに編集すればいいのか。
やってみた。
できぬ。解せぬ。
いや、解せぬのは俺の方だった。
わけわからん編集してるんじゃないよ!!!
ちゃんと英語読めよ。勝手に勘違いしてんなよ!!!

で、結論。sudoの代わりにgksudoを使う。
参考にしたのがこのサイト。お気に入りに登録させて頂きました。
てか、こういうふうにパスワード請求させるんだったらはじめの確認いらなくね?って思うわけです。
しかも、これじゃスーパーユーザのパスワード知ってる人しかシャットダウンできないじゃんか。と思うわけです。
まぁいいや。

それから、ログアウトするときにめっちゃ時間かかるなぁって思ったんだけど、ひょっとしてopenboxの終了じゃなくて、ログインマネージャ(mdm)の起動に時間がかかってるのかな?
よくわかんない。

で、軽量のログインマネージャってなんだろう?って考えると、テキストベースのログインが早いんだけど...
テキストベースでログイン後にopenboxを起動するのってできるのかな?って思うわけです。
確かに、ログイン後に

$startx

で起動できるっぽいんですが、
それだと、わざわざstartxって打たなきゃいけないのが面倒だなぁと思うわけです。
そこで自動起動にする方法はないものかとかんがえるのですが...

まぁ、いいや。
今の環境がなかなか使いやすいので、今のところはMateベースをUSBにインストールしようかなぁという感じです。
KDEはクビでいいや。

では、次回にXfceのカスタマイズを試してみてからどれをインストールするか決めたいと思います。