xmonadを使ってみる。
xmonadっていうタイル型ウインドウマネージャを使ってみた。
設定ファイルがHaskellできれい。
他にもawesomeってのもあったが、luaって知らない言語だった。
まあ、Haskellもやったことないけど。
Ubuntuのバージョンは10.10。
インストール
インストールは
# apt-get install xmonad
これで、ログイン(gdm)のときに選択できるようになる。
ついでに
# apt-get install dwm-tools xmobar
もいれておきます。
dwm-toolsはdmenuのこと。
$ man xmonad
基本操作
最低必要な操作は、
mod-shift-q | xmonadの終了 |
mod-shift-return | terminalの起動 |
始めに使えると便利な操作は、
mod-shift-c | ウインドウを閉じる |
mod-{j,k,tab,shift-tab} | 他のウインドウにフォーカスする |
mod-{h,l} | ウインドウの大きさを変える |
mod-space | ウインドウのレイアウトを変える |
mod-[1..9] | ワークスペースの移動 |
mod-p | dmenuによるプログラムの起動 |
mod-q | xmonadの再起動 |
mod-qは設定ファイルをいじるとき、とても便利。
これのおかげで設定はかなりスムーズ。
modキーはデフォルトでは左のAlt。
設定
注意! Haskellは勉強したことないので、ここから下はかなり憶測です。
基本設定
まず、/usr/share/doc/libghc6-xmonad-doc/examples/xmonad.hs.gzに
設定ファイルの例があるので、コピーしてくる。
$ cp /usr/share/doc/libghc6-xmonad-doc/examples/xmonad.hs.gz . $ gunzip xmonad.hs.gz $ mkdir ~/.xmonad $ mv xmonad.hs ~/.xmonad/
このファイルは、基本的にはmy〜を定義していって
最後に
main = xmonad defaults
でdefaultsを実行。
defaultsっていうのはそのすぐ下で
defaults = defaultConfig { -- simple stuff terminal = myTerminal, focusFollowsMouse = myFocusFollowsMouse, borderWidth = myBorderWidth, modMask = myModMask, numlockMask = myNumlockMask, workspaces = myWorkspaces, normalBorderColor = myNormalBorderColor, focusedBorderColor = myFocusedBorderColor, -- key bindings keys = myKeys, mouseBindings = myMouseBindings, -- hooks, layouts layoutHook = myLayout, manageHook = myManageHook, handleEventHook = myEventHook, logHook = myLogHook, startupHook = myStartupHook }
と定義される。
なので、基本的にはmy〜の定義を変更するだけでかなり設定できる。
modキーとしてAltは使いたくないのでWindows(Super)に変更。
myModMask = mod4Mask
terminalはgnome-terminalを使う。
myTerminal = "gnome-terminal"
ワークスペース1,2に名前を付けてみる。
myWorkspaces = ["1:work","2:web"] ++ map show [3..9]
変更したら、mod+qで設定を反映する。
ダメなときはエラーが出る。
ごちゃごちゃしてるのはいやなので、いらないものを消してみる。
それでもうまく動いてくれるみたい。結局
-- -- .xmonad/xmonad.hs -- -- インポート import XMonad ------------------------------------------------------------------------ -- こまごました設定 -- ターミナルの指定 myTerminal = "gnome-terminal" -- modキーをWindowsに myModMask = mod4Mask -- ワークスペース myWorkspaces = ["1:work","2:web"] ++ map show [3..9] ------------------------------------------------------------------------ -- 設定の実行 -- 実行 main = xmonad myConfig -- 設定(上書きしなければデフォルトの値が用いられる) myConfig = defaultConfig { terminal = myTerminal, modMask = myModMask, workspaces = myWorkspaces }
となる。
xmobarの設定
これだけだと味気ないので、時間や日付もわかるようにしたい。
また、ワークスペースも表示してくれるとうれしい。
これは最初にいれたxmobarで実現できる。
$ man xmobar
これを用いるとCPUやメモリ、ネットワーク、バッテリー、天気なども
表示してくれるようになる。
GNU Screenのステータスバーのようなもの。
設定ファイルは~/.xmobarrcだが、これも設定例があるのでコピーしてくる。
$ cp /usr/share/doc/xmobar/examples/xmobarrc-example ~/.xmobarrc
デフォルトではいろいろ表示されるようになっているが、
必要ないものは使わない主義なので、
-- -- .xmobarrc -- Config { font = "xft:Sans-10:bold" , bgColor = "black" , fgColor = "grey" , position = Top , lowerOnStart = False , commands = [ Run Com "id" ["-un"] "uname" 36000 , Run Com "date"["+'%x(%a) %H:%M'"] "date" 10 , Run StdinReader ] , sepChar = "%" , alignSep = "}{" , template = "%StdinReader% }{ <fc=#ee9a00>%date%</fc> %uname%" }
とした。
もっぱら変更するのはcommandsの中と、templateの指定。
dateはcommandsの中で何も指定しないと普通に日本語で秒まで表示してくれるが、
Run Dateで指定すると英語になってしまう。
秒まで表示するとチカチカしていやなので書式指定したかったが、
locale?を指定する方法がわからなかったので、
普通のdateコマンドからの標準出力を用いることにした。
なにかいい方法があったら教えてください。
最後に、xmonad.hsにxmobarの設定を加えて終わり。
-- -- .xmonad/xmonad.hs -- -- インポート import XMonad import XMonad.Hooks.DynamicLog ------------------------------------------------------------------------ -- こまごました設定 -- ターミナルの指定 myTerminal = "gnome-terminal" -- modキーをWindowsに myModMask = mod4Mask -- ワークスペース myWorkspaces = ["1:work","2:web"] ++ map show [3..9] ------------------------------------------------------------------------ -- xmobarの設定 -- Command to launch the bar. myBar = "xmobar" -- 表示の指定 myPP = xmobarPP { ppCurrent = xmobarColor "#429942" "" . wrap "<" ">" } -- Keybinding to toggle the gap for the bar. toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b) ------------------------------------------------------------------------ -- 設定の実行 -- 実行 main = xmonad =<< statusBar myBar myPP toggleStrutsKey myConfig -- 設定(上書きしなければデフォルトの値が用いられる) myConfig = defaultConfig { terminal = myTerminal, modMask = myModMask, workspaces = myWorkspaces }
参考
xmonad - ArchWiki
適度に短く要点がまとまっているので、設定のときにかなり参考になりました。
Ctrl+Alt+ファンクションキーで真っ暗になる
どうやら他のttyにしたりするショートカットみたい。
取り合えずわかんなかったらCtrl+Alt+F7で戻れる。
http://ubuntu-ky.ubuntuforums.org/showthread.php?t=1167144
ウインドウ分割関連
ウインドウ周りの設定がうまくいった気がするのでさらしてみる。
.emacsは、
;; ;; ウインドウ関係 ;; ;; windmove (shift+cursor keys) (windmove-default-keybindings) (setq windmove-wrap-around t) ;; サイズ変更 (global-set-key (kbd "S-C-<left>") 'shrink-window-horizontally) (global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally) (global-set-key (kbd "S-C-<down>") 'shrink-window) (global-set-key (kbd "S-C-<up>") 'enlarge-window) ;; winhist (undo, redo) (require 'winhist) (winhist-mode 1) (global-set-key "\M-B" 'winhist-backward) (global-set-key "\M-F" 'winhist-forward) ;; windows (setq win:switch-prefix "\C-z") (define-key global-map win:switch-prefix nil) (define-key global-map "\C-z1" 'win-switch-to-window) (require 'windows) ;; 新規にフレームを作らない (setq win:use-frame nil) (win:startup-with-window) (define-key ctl-x-map "C" 'see-you-again)
みたいな感じ。
参考:http://www.bookshelf.jp/soft/meadow_30.html
aptでいれたライブラリのパスとか探す方法
pkg-configってのがあった。
例えば
$ pkg-config --libs gsl
でgsl使うオプションが出てくる。
他にもいろいろ機能あるっぽい。
詳しくはman pkg-configで。
GNOMEのキーバインドをEmacs風に変更する
UbuntuでEmacsみたいなキーバインドにする方法ないかなと思って探したら、
普通に正式なやり方があった。
UbuntuTips/Desktop/GnomeEmacsKeyTheme - Ubuntu Japanese Wiki
ThinkPad購入検討中
現在ThinkPadの購入を検討中なので、そのメモ。
店頭展示
ThinkPadは基本的に店頭では販売しないようで、近所の量販点にいっても展示してなかっ
た。とりあえずlenovoのページに紹介
されてたThinkPadがおいてある店をいくつか回ってみた。
結論としてはどこも値段は同様で品揃えもxシリーズに限って言えばx201、x201i、x101e、
売れ残りのx100eがおいてあるくらいだった。
株式会社若松通商 公式がThinkPad専門店だと教えてもらったので行って
みると、xシリーズの中古品、各種部品から新品のx201、x201i、x201sなどが置いてあっ
た。また値段も他の店より安く、英字キーボードや7からXPへのダウングレードも行って
くれるようだった。
web販売
lenovoのメーリスに入るとクーポンで安くなるらしいので、とりあえず入ってみた。まだ
メールは来ない。
keybind覚え書き
emacsやviで使っていないキーがちょろちょろ出てきたので、
意識的に使うように書いとく。
- emacs
- query-replace M-%
- mark buffer C-x h
- indent code or region C-M-\
- upper case M-u
- lower case M-l
- capitalize M-c
query-replaceはよく使うのについついM-x query-replaceで使ってた。
Esc Shift-% よりはAlt-Shift-% で指に覚えさせるのがいいのかな。
- vi
- c
- :s/old/new/g
- +,-,^
- H,M,L
- .,U
- E,w,W,B
- "
- z
,z.,z-
まだまだviは慣れてない感じ。
でも特に上6個はよく使うから勝手に覚えるはず。