Login
Immutable PageDiscussionInfoAttachments
Diff for "clear/note/2011-09"

MMA
Differences between revisions 11 and 12
Revision 11 as of 2011-09-11 17:52:51
Size: 4422
Editor: clear
Comment:
Revision 12 as of 2011-09-11 18:07:05
Size: 4686
Editor: clear
Comment:
Deletions are marked like this. Additions are marked like this.
Line 63: Line 63:
こういうことがしたかったので作った。 こういうことがしたかったので作った。{{attachment:dwm-5.9-rotate.diff}}
Line 66: Line 66:

例によって`config.h`の`keys[]`に追加する必要がある。実装は、オリジナルの`zoom()`(フォーカスの当たっているウィンドウをmasterに持ってくる関数)とほとんど変わらない。

2011年9月

09/02

vim fileencodings

どういう順番で書けば良いのかいまいちよく分からず文字化けに悩まされていたが、ここを見てようやく理解した。

09/03

vim matchparen

vimを使っていると、かっこにカーソルが当たったときに対応するかっこがハイライトされるが、チカチカして目が痛くなったので切った。.vimrc

set noshowmatch

と書くのは誤りで(これは対応するかっこに「一瞬移動」する。しかもデフォルトではoff)、こう書けば良い。

let loaded_matchparen=1

これでかっこをハイライトするプラグインが読み込まれなくなる。つり合いを確認したい場合は%を使えばいい。

FreeBSDでCDを再生したい with mplayer

CD-DAを扱うためにaudio/cdparanoiaが必要。mplayerのconfigオプションに項目があるので忘れずにチェックを入れること。

09/04

dwm patch

作りたい。

  • ウィンドウ順序の回転(スタック配置時)
    • zoom(Modkey+Enter)の挙動
      • フォーカスのあるウィンドウとmasterを交換する
      • masterにフォーカスがある時はスタックの一番上と交換する
      • フォーカスは常にmasterに移動する
    • スタックの一番下にフォーカスを合わせてzoomすれば回転相当のことはできるが、面倒なので無条件で回転させたい
      • masterをスタックの一番上に持っていって、スタックの底がmasterになる
  • 設定ファイルによるフォント及び色の指定、できれば実行中のリロード
    • 再コンパイルと再起動が面倒なので。一貫性の面では悪化するが……
    • これ以上のことを変えたくなったときは素直にawesomeなりxmonadを使えばいいだろう

09/07

Window"s"なんだからウィンドウを重ねたくない

Windowsでもタイルっぽく配置してくれる何かが欲しくなってきた。以下考えたこととかを箇条書き。

  • http://www.atmarkit.co.jp/fwin2k/win2ktips/202quicktiling/quicktiling.html

    • 単純なやつなら昔からあったらしい。知らなかった
  • タイル「っぽく」というのはおそらく重要。1ピクセルの隙もなく詰めるとWindowsでは逆にやりにくいかもしれない
    • まずは単純に重なりを除去するプログラムとかから試すべきか
  • グローバルフック
    • SetWindowsHookEx()

    • DLL
    • dwm-win32のWin32部分のコードが参考になる
  • サイズ変更不可能でないやつはスルーしないといけない
    • GetWindowLongPtr()で特定ウィンドウのスタイルを取得してWS_THICKFRAMEとかWS_MINIMIZEBOXとかWS_MAXIMIZEBOXを持っていればOKだろう

  • あとWS_EX_TOOLWINDOWとかWS_EX_TOPMOSTがついてるやつにも気をつけないといけない

    • 前者は多分タイル化すべきでない。後者はどうするか
  • tile -> tiler -> 平ら -> ぺったんこ。よし名称は決まった

実現するかどうかは分からない。

focus-follows-mouse on Windows

上のを書いてて、グローバルフックでマウスを捕まえればWindowsでfocus-follows-mouseを実現できるのではないか、と考えた。滅茶苦茶重くなる可能性もあるが。

そんなことするまでも無く設定項目があった。コントロールパネル -> コンピューターの簡単操作 -> マウスの動作の変更 -> マウスポインターをウィンドウ上に合わせたときにウィンドウを選択します、にチェック。(Windows7、コントロールパネルは表示方法: カテゴリ)

ただし、フォーカスが当たったウィンドウは強制的に最前面に出てくる。twmとかdwmみたいにZオーダーが変わらないと便利な局面があるのだが……あと、小さいウィンドウはフォーカスを外してしまいがちで、捕まえるのが難しかったりする。

09/11

dwmでウィンドウの順序を回転する

   1 --- dwm.original.c	2011-09-04 14:38:30.232071429 +0900
   2 +++ dwm.c	2011-09-16 00:14:43.811560391 +0900
   3 @@ -206,6 +206,7 @@
   4  static void resizeclient(Client *c, int x, int y, int w, int h);
   5  static void resizemouse(const Arg *arg);
   6  static void restack(Monitor *m);
   7 +static void rotate(const Arg *arg);
   8  static void run(void);
   9  static void scan(void);
  10  static Bool sendevent(Client *c, Atom proto);
  11 @@ -1403,6 +1404,18 @@
  12  }
  13  
  14  void
  15 +rotate(const Arg *arg) {
  16 +	Client *c, *bottom;
  17 +
  18 +	if(!selmon->lt[selmon->sellt]->arrange)
  19 +		return;
  20 +	for(bottom = c = nexttiled(selmon->clients); c; c = nexttiled(c->next))
  21 +		bottom = c;
  22 +	if(bottom)
  23 +		pop(bottom);
  24 +}
  25 +
  26 +void
  27  run(void) {
  28  	XEvent ev;
  29  	/* main event loop */
  30 @@ -2067,3 +2080,4 @@
  31  	XCloseDisplay(dpy);
  32  	return EXIT_SUCCESS;
  33  }
  34 +
  35 

こういうことがしたかったので作った。dwm-5.9-rotate.diff

dwm_tile.png

例によってconfig.hkeys[]に追加する必要がある。実装は、オリジナルのzoom()(フォーカスの当たっているウィンドウをmasterに持ってくる関数)とほとんど変わらない。

clear/note/2011-09 (last edited 2011-09-22 01:07:33 by clear)