Windows Manager

キーボードから手を離して,マウスを握るのがメンドクサイ方の為のツールです.
キーボードから,ウィンドウの移動や最大化,最小化等をする事ができます.
Windowsユーザだけど,sevilwm(http://shinh.skr.jp/sevilwm/ )的な事をやりたくて作り ました.
適当バージョンなので,readmeも適当です.ごめんなさい.

schemeからウィンドウ関係のWindowsAPIを,少しだけ呼べるようにしたものなので,WSH で良いような気がしますが気にしません.

何ができる?

ショートカットキーでウィンドウを動かしたり,リサイズしたりできます.
設定ファイルは,プログラミング言語Schemeで記述可能なので,複雑な処理をする事も可能です.
配布時に付いてくるuser.scmでは

  • ウィンドウの移動
    Ctrl+Win+[hjkl]で選択されているウィンドウを移動させれます.
  • ウィンドウのリサイズ
    Ctrl+Shift+Win+[hjkl]で選択されているウィンドウをリサイズできます.
  • 高速(?)なウィンドウ切り替え
    Alt+TabとAlt+Shift+Tabが,昔のWindows風になります.
  • 方向指定可能なAlt+Tab
    Alt+[hjkl]で,指定した方向にあるような気がするウィンドウを選択します.
  • 最小化
    Alt+Space
  • 最大化<->普通の切り替え
    Alt+Enter
  • 一行コンソール
    Alt + 「変換」
  • emacs風キーバインド

などができます.(set-key....launcher)のコメントアウトを外せば,ランチャにもなります.
また,Alt+Ctrl+dで,WindowsManagerのコンソールを開く事ができます.
コンソール上では直接Schemeで命令を入力する事ができます.

hjklって何?

vi標準のカーソル移動のキー.Nethack辺りのゲームをやればすぐ慣れます.もちろん, 好きなキーを割り当てる事もできますが,ホームポジションからすぐに入力できて便利.

ダウンロード

終了の仕方

コンソールを表示(Ctrl+Alt+D)した状態で

(quit)

と入力すれば終了できます.

使い方

チュートリアル(?)を用意しました.
./Tutorial
まだ,適当です...

設定のしかた

user.scmを適当に書き換えてください.

ライセンス

NYSL(http://www.kmonos.net/nysl/)です.

A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、
   ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。

  A-1. フリーウェアです。作者からは使用料等を要求しません。
  A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。
  A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。
  A-4. 変更したものや部分的に使用したものは、あなたのものになります。
       公開する場合は、あなたの名前の下で行って下さい。

B. このソフトを利用することによって生じた損害等について、作者は
   責任を負わないものとします。各自の責任においてご利用下さい。

C. 著作者人格権は 岩崎直木 に帰属します。著作権は放棄します。

D. 以上の3項は、ソース・実行バイナリの双方に適用されます。

 ただし,本ソフトウェアの一部に,tinyschemeのコードを含むため,下記のライセンス も適用されます.

                         LICENSE TERMS

Copyright (c) 2000, Dimitrios Souflis
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

Neither the name of Dimitrios Souflis nor the names of the
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR 
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

更新履歴

  • 2007/11/08 ver0.07
    • unset-keyのパフォーマンス改善
    • emacs.scmの改善?
    • key-click, key-down, key-up
      それぞれ,仮想キーコードで指定されたキーを,クリック,押す,離す動作をします.
    • 他細かい変更
  • 2007/10/29 ver0.06
    • set-keymap
      (set-keymap mod-control #\n vk-down) な風に,キーの置き換えを出来るマクロ
    • malloc
    • structマクロ
      http://www.f13g.com/?blog/2007-10-27
      を参照してください.
    • backtracing
      (backtracin 1)の状態でerrorが起こるとbacktraceを出力.
      動作は怪しい.
    • emacs.el
      超適当emacs風キーバインド
    • 仮想デスクトップのマルチディスプレイ環境対応
      プライマリデスクトップ以外には仮想デスクトップを作りません.(私好みに,,,)
      • enum-monitors
  • 2007/10/17 ver0.05
    • ライブラリを少し整理(launch.scm, window.scm)
    • 仮想デスクトップ (virtuadesktop.scm)
    • switch-desktopを大分修正した
    • create-windowの仕様変更.set-window-procedure追加
    • 他たくさん
  • 2007/09/13 ver0.04
    • set-timer, get-time-left, set-time-left実装
    • PuTTY,MediaPlayerと共通にするために,Windowの最大化をAlt+Enterにした.最小化をAlt+Spaceに変えた.(user.scm)
    • WM_SYSCOMMANDによるclose-window, minimize-window, maximize-windowを追加.(api.scm)
    • get-window-long, set-window-long
    • enum-child-windows
    • winapi関数実装
      (winapi "Sleep" 1000)
      のようにWindowsAPIを呼び出せるようになりました.ただし,全ての引数はlongとして扱われます.
    • 方向指定可能なウィンドウ切り替えをまともに実装?
  • 2007/08/28 ver0.03
    • sleepの実装
    • toggle-taskbarの実装が素敵になった
    • set-foreground-windowが,強力になった(前面に無理やりする)
    • launch, create-window, destroy-window, get-system-metrics, post-quit-message実装
    • ランチャ,一行コンソールのコードをuser.scmに追加
    • タスクバー非表示のときに,最大化されたウィンドウがおかしくなるのを修正.
  • 2007/08/22 ver0.02
    • ウィンドウ移動の際のガイドに,最大化状態のウィンドウを含めないようにした(winmove.scm)
    • winmove.scmに含まれたバグをつぶした気がする.
    • その他いくつか
  • 2007/07/27 ver0.01
    • 初公開

コメント

バグや要望があればどうぞ.

  • 何ができる?の「最小化」と「最大化<->普通」のコマンド説明が逆かな、と -- komuro 2007-11-11 00:31:07 (日)
  • 指摘ありがとうございます.readmeの方は直したのですが,こっちの方は忘れていました -- Naoki 2007-11-11 03:29:10 (日)

お名前: