= 2012年5月 = == 05/01 == === PeekMessageとXPeekEventは似てるけど違う === Windows APIの`PeekMessage()`はメッセージがない場合ただちに返ってくるが、Xlibの`XPeekEvent()`はイベントが来るまでブロックするらしい。Xlibで`PeekMessage()`相当のことをやりたい時は`XPending()`+`XNextEvent()`でできそう。 {{{#!highlight c numbers=no for (;;) { if (XPending(dpy)) { XNextEvent(dpy, &ev); /* ... */ } else { /* イベントがないときの処理 */ } } }}} == 05/03 == === 画面の消灯を防ぐ === {{{ xset s off # だけでは足りない xset dpms 0 0 0 }}} == 05/07 == === タイル配置について最近思うこと === 画面解像度がある程度大きく、なおかつ一画面に表示しているウィンドウ数が少ない場合、素直にタイル配置すると見づらくなる場合があるような気がする。特に端末エミュレータやテキストエディタなど文字が上から下に伸びていくタイプのものは、ウィンドウが縦に長いと視線の上下移動が必要になって疲れる、気がする。 ということで、スペースの有効活用という原則には明らかに反するが、こんな感じのタイル配置があってもいいのではないだろうか。(ウィンドウ間に隙間が空いてるのは手動で並べたため) {{attachment:desktop.png|こんな感じ|width=512 height=300}} 追記: * ウィンドウが1枚しかない場合どうするか * どういうウィンドウを小さく配置するか、の判定。絶対数(!=使用頻度)で言えばそれほど多くない気もするので、ブラックリスト方式が楽? * そもそも気のせいという説 さらに追記: * {上下,左右}方向に見て、ウィンドウが一枚しかない状態のときに余白をいれるようにすると多少見やすい、かもしれない * 縦横比が極端にならないようにすると同時に、視点を画面中央に近づける だいたいこんな感じ。 || {{attachment:tile3.png|nmaster=1|width=400 height=200}} || {{attachment:tile4.png|nmaster>=2|width=400 height=200}} || 05/10 さらにさらに追記: 上記のようなことを実現するパッチを書いた * [[attachment:clear/misc/dwm-6.0-moderatetile.diff]] * config.hで縦横のマージン(`vmargin`, `hmargin`)を設定する。値の範囲チェックやってない * 実装面ではオリジナルの`tile()`をパクりつつ適当に書き換えただけなので重複が多くあんまり良くない。後で何とかするかも * 穏健な(moderate)タイル。解像度高めの環境でないと効果は薄いというかただ画面が狭くなるだけで無意味 == 05/09 == === メモリを大量に食っているプロセスを確認 === USER,PID,SIZE,RSS,COMMAND。SIZEでソート {{{ ps aux | awk '{ print $1,$2,$5,$6,$11 }' | sort -k3,3n | tail }}} == 05/10 == === tmuxのstatus line === `status-{left,right}`に指定した文字列は`strftime()`に渡される。よって`date`コマンドの書式がそのまま使える(`#(date)`と自分で呼び出す必要がない)。manに書いてあった。 === FullSearchCached === * [[http://www.mail-archive.com/moin-user@lists.sourceforge.net/msg02035.html|参考]] 文字通り結果はキャッシュされる。キャッシュを更新したい場合`?action=refresh`をつければいいらしい == 05/23 == * muttで起動時にメールボックスを指定: `mutt -f` == 05/29 == === Timer on X === XlibにはWindowsでいうところの!SetTimer/KillTimerみたいなお手軽にタイマーを使える関数がない、というかタイマーイベントそのものがない。どうやら上位レイヤーのライブラリでどうにかしているらしいので、とりあえずXtとGTK+のソースをダウンロードしてきて調べてみた。 * Xtの場合: !XtAppAddTimeOut * GTK+の場合: gtk_timeout_add * Glibのg_timeout_addにほぼ投げてる いずれもメインループにあたる関数内(Xt:XtAppNextEvent, GTK+:gtk_main、Glibのg_main_loop_run)で処理を行なっているようで、それゆえタイマーの周期は必ずしも正確ではない。Xlibでやろうとする場合は上記ライブラリのような機構を自前で実装するしかなさそう。素直に上位レイヤーのライブラリを使いましょう、というところか。 * Xlibはスレッドセーフでないので、自前で別スレッドを作って同期するのは無理(Xlibにアクセスして良いのは1スレッドのみ) * [[http://www.eng.cam.ac.uk/help/tpl/graphics/X/signals.html|シグナルを使うのもダメらしい]] * [[http://lists.freedesktop.org/archives/xcb/2006-August/001839.html|XCBなら何とかできるらしい]] * Xlibと違って別スレッドに分けてしまうことができる == 05/31 == === powertop === Intel謹製のLinux向け省電力ツールで、topコマンドみたいなやつ。CPUの動作状態や、CPU時間を多く消費しているプロセスが分かる。あと、電源管理に関する設定状況を分析して提案をしてくれたりする。以下で入手できる。 * https://01.org/powertop/ 省電力設定に関しては以下がとても参考になる。 * http://www.lesswatts.org/