2013年8月25日日曜日

xmonadとHaskell(その1)

インストールとか


・本体
archlinuxの場合、xmonadxmonad-contribパッケージをインストール。
haskell諸々は依存関係で勝手にインストールしてくれる。

・それ以外
xmonadそのものには、他のウインドマネージャで、画面の上や下にあるステータスバーとかパネルと呼ばれるものが無い。なので、別途、好みのものを用意する。

ツールバーそのものが、dzen2やxmobar。
そして、dzen2を選択すると、これはそれほど賢いものでは無くて、主な機能は、単に与えられたテキストを表示するだけのものなので、システムの情報を表示したい(CPU使用率、メモリ使用率、ネットワーク使用状況等)なら、自分で情報を得て、それをそのツールバーに渡すことになる。なので、この情報収集のためにconkyを使う。
また、プログラム呼び出し用のメニューがdmenu。

うちでは、xftフォントを使うために

dzen2-git(aur)
conky
dmenu-xft(aur)

辺りをインストール。

xmonadの導入解説にはどこもパネルの作成の紹介があるし、ここのカスタマイズで結構を頭を悩ませるのだけれど、これ自体はあんまりxmonadとは関係ない。そして、パネルについては他の選択肢として、xfce4-panel等、高機能なパネルだけ呼び出して使うとか、DEとの連携をしてパネルはそっちに任せることも出来るらしい。アプレット等が使える派手で高機能なのがお好みなら、dzenの設定をガリガリ書くよりも、あるものを使ったほうが良さげ(by 2ch タイル型WMスレ)

起動

.xinitrcとか起動スクリプトで

exec xmonad

する。
startxで直接、displayマネージャーでも、xdmやslimの場合は上記でOK。

kdmやgdmの場合のヒントは以下(セッション選択のファイルを作る)
2.3 How can I use xmonad with a display manager? (xdm, kdm, gdm)

うちの~/.xsession



DEを使っていればいらないかもしれない、昔ながらの最低限の設定。
xmonad自体でカーソルを制御しないので、xsetrootで調節。
壁紙も設定。fehが定番っぽいけど、デュアルスクリーンでもうまく設定できるNitrogenが便利。

xmonadに関係ないけれど、コンポジット系統(ウインドウを透明にしたり、影つけたりできる)は、バグの少ないCompton(xcompmgrからの派生)が良いらしい。
また、xrandrのデュアルスクリーンもxmonadで使える。


そんな感じで、起動すると何にもなくて寂しいxmonadが立ち上がる。(もしかしたら、真っ暗で立ち上がってるのさえわからないかもしれない)

alt + Shift + Enter で、xtermが立ち上がる。

alt + Shift + q で、xmonad終了。

設定ファイル ~/.xmonad/xmonad.hs

というわけで、いよいよHaskellに対面!
xmonadの設定ファイルとして~/.xmonad/xmonad.hsを以下の内容で作ってみる。

これがxmonadの設定ファイルで、はじめてのHaskell
urxvtが3つ立ち上がってるところ。まだ、パネル等の飾りはありません。


<<追記>>
xmonadとHaskellについてのメモが長くなったので目次を追記

xmonadとHaskellのメモの目次



2013年8月24日土曜日

xmonadとHaskell(その0)

ウインドマネージャを少し前にawesomeからxmonadに変えてみた。
http://xmonad.org/


xmonadはHaskellという言語で動いているんだけれど、このHaskellって言語は、以前から「わけわからん」っていう評判をなんとなく聞いていた。

Haskellで書かれている設定のsampleになる基本的なファイルを見ても構文がパッと見では、イマイチよくわからない。それでも、いくつもの設定の例を見つつ、xmonadのページのリファレンスを見ているとなんとなく設定だけは出来るようになった。

でも、「lispよくわからんけどemacsの設定は適当に書いてる」的な感じよりももっと心もとないため、せっかく色々と楽しくできそうなのに、設定のアレンジを自分ではできないのがもどかしい。

そこで、Haskellの本を買ってきて読んでみた。やっぱ難しくて、眠くなることしばし。でも、はじめてオブジェクト指向の概念に触れた時にように、今まで考えたことのない見慣れないもの、使ったことのない思考回路を刺激されるのは楽しい。

本の中では、一般的な問題の解決をプログラミングの例とかをコンソール上でやるんだけれども、出来るならXmonadを使って遊ぶほうがきっと面白いし、親しめるに違いない。

考え方が整理できたら良いなというメモ。

2012年11月25日日曜日

jnethack再び

前にインストールしたjnethack用のPKGBUILDファイルがどっかに行ってしまった。
誰かネットで同じようなことしてる人はいないかと検索したら発見。なのでメモ。

Nosの日記「JNetHackをビルドする」

というか、うちのページを参考にしてくれたようでつらつらと見てみると、マニュアルがインストールされないと書いてあった。

試してみると確かにされない。
jnethackのパッチがマニュアルページのパスを変えているのでひっかからないっぽい。
sed処理の
 
/usr/man/man6
/usr/local/man/man6
 
にするととりあえずはインストールしてくれる。
けれど、マニュアルページ自体nethackと同じファイルなので、パッケージはコンフリクトする。
なので、結局マニュアルページはインストールしないように
 

make PREFIX=$pkgdir install manpages

make PREFIX=$pkgdir install

とかどうでしょう?
って感じのことをそのブログの人に伝えてみたかったんだけれど、
コメント書き込みの際の画像に出てる文字列を打ち込む認証が全然通らなくて
書き込めなかった。。
 
で本題は、Nosさんの日記に紹介されていたCocotっていうプログラム。
jnethackの文字化けの面倒くささを解決してくれる!!
Nosさんが適当にPKGBUILDファイルを書いてくれているので、コピペ&makepkg -sで作れます。
んで、エイリアスもコピペ!
 
 
 



 昔の自分のスクリーンショットと比べると、お墓が綺麗になったw

2012年10月5日金曜日

久しぶりのスクリーンショット

なんとなくプロンプトが完成したので
久しぶりのスクリーンショット



画像の張り方を忘れた、、クリックしたら大きくなるのってどうするのかな?
ともったら、公開モードにしたら大きくなった。

んー、画像にしてみると、色が真っ暗っぽいなぁ。




2012年10月4日木曜日

zshとかgithubとか

 近頃、メモ書きをちょこちょこして下書きになったままのものが沢山あった。

C-h でマニュアルが開く
C-q で現在のコマンドラインをスタックして、新たな別のラインが使える

こんな感じの短い書き散らかしとか。
まとめ用の無い断片ばかりだったので、適当に日記。


こないだ、archlinuxをインストールした時、ライブCDでzshを体験したのを機に、zshを使ってみることにした。昔から「凄い」らしいということは聞いていたけれど、凄すぎてシェルとは別物的になって、スクリプトとか管理者泣かせというような評判も聞いていた。

趣味の人としては、何かを管理するわけじゃなく、シェルでガシガシ作業することもないので、なんでもよいんだけれど、、、

arhclinuxでは、zsh用の便利にカスタマイズされた設定ファイル集としてgrml-zsh-configというパッケージがある、適当にフラグ的な変数を設定していくだけで、便利っぽい。

でも、zshに馴染むため、ネットで適当に.zshrcを説明してるようなページを見ながらお試し中。で、不毛とわかりつつもプロンプトの設定にハマり中。色々とゴテゴテつけてみても、うっとおしくてシンプルなのに戻って行くんだけれど、とりあえずは考えたくなる。(っていうか、そもそもzshの場合プロンプトのテーマってのがあって、デフォルトでもかっこいいのが適当に選べたりもする。)

ところが、実際に書いてみると、趣味プログラムな人としては、書くこと自体で勉強になった気になれてよい。

何かを書いてみるとバージョン管理もしてみたい。subversionを少し使った事があったけれど、いつも目にするGitを初めて体験してみる。そもそも、Gitってlinuxカーネルを管理してる、自分には関係のないたいそうなシステムだと思っていたら、知らないうちにあちこちで目にするようになった。

そこで、githubの事をネットでみてみると、面白そうだったので、登録!


2012年9月18日火曜日

rubyのgemとかbundler

昨日のではどうもすっきりしないので、gem管理について色々巡ってみた。
結果、railsするなら、アプリケーションディレクトリの中にbundlerでgemをインストールして、そこだけで完結した環境を作るってのが分かりやすいらしい。

つまり、システム全体でのgem環境、ユーザーのgem環境は自分で面倒をみつつ、アプリはアプリで独立。

で、うちでは特にRUBYな人ではない今は、RVMまで考えず、gem環境をユーザーで管理する。

$HOME/.gemrcでユーザー設定(/etc/gemrcがグローバル設定)できる。昨日書いてたユーザー権限で$HOME以下へのインストールはこのあたりで設定されていた。あと、ドキュメント作らないオプションを追加。中身はこんな感じ。
gem: "--no-ri --no-rdoc --user-install"


それと、ユーザーのgem環境については、 ~/.gem/を削除したら、振り出しに戻れると考えれば何をしても気が楽。
 
railsについては以下の流れでやる。

ユーザー環境でrailsをインストール。

railsアプリを作るときに --skip-bundleフラグを付ける。
  $ rails new myapp --skip-bundle

アプリケーションのディレクトリに入り、Gemfileを編集してbundlerでgemをインス トールするが、インストール先をアプリケーションのディレクトリ内にする。
  $ bundle install --path vendor/bundle




以後のrails関連コマンドの呼び出しは「bundle exec」を付けて呼び出す。 
   $ bundle exec rails generate controller hoge

付け足しとしては、Gemfileに以下の2個のgemを入れる
gem 'execjs'
gem 'therubyracer'


Ruby on Railsのための環境とか

Railsの環境構築は各ディストリビューションのパッケージマネジメントとの関係もあってめんどくさそう。

関連のwiki項目
  1. Ruby
  2. Ruby On Rails 
  3. RVM(Ruby Version Manager)

このめんどくささは、rubyのライブラリとかの管理がシステムとは無関係に、ruby独自のrubygemsっていう機能で管理できるところかな。また、archlinuxのためにパッケージ化してpacman経由でインストールして管理できるようになっているみたいだけれど、この「どっちでもいける」ってのもめんどくささの原因かも?

あわせて、gemはシステムへのインストールとユーザーディレクトリへのインストールを選択できるところも「どっちでもいける」要素。

更には、RVMとかするとrubyのバージョンさえ混在させることができて、とっても「どっちでもいける」状態。

なので、決めてメモする。
もともとrailsしたいなぁっていうお気楽な動機だったので、それが実現できればよい!って方針で。

rubyは、公式リポジトリから1.9.xをインストール。1.9系列はrubyパッケージ自体にgemが入っているので、そのままでgemが使える。

% gem help command

% gem help example
を適当に見て、使い方を確認する。

gemは、ホームディレクトリにインストールすることにする。
ホームディレクトリにインストールするには、ユーザー権限でインストールを実行する。sudoとかしちゃダメ。

インストール先は ~/.gem/の中。
この、ディレクトリ以下に実行ファイルも置かれるので、そのディレクトリをpathにいれる。
export PATH="$PATH:$HOME/.gem/ruby/1.9.1/bin"


あわせて、bundlerっていうgemから導入するアプリは、デフォルトでシステムにインストールしようとするので、以下の環境変数を予め設定しておく。これをしないと、インストール時にルートパスワードを求められてびっくりする。

export GEM_HOME="$HOME/.gem/ruby/1.9.1"

いよいよ、railsのインストール。
持ってる本がrails3.0.5バージョンの解説をしていて、現在の3.2系とは動きが大分違う。そこで、慣れるまで本の通りの動作にして勉強したいので、バージョン指定して本で解説されている3.0.5をインストール。ドキュメントも入れないオプションもつけてみる。

% gem install rails --version 3.0.5 --no-rdoc --no-ri