HOME xyzzy code 書き込む

簡易ランチャー


1. はじめに

いつも xyzzy が立ち上がっている人のための簡易ランチャーです。 メニューバーにランチャーが加わります。

2. インストール

付録の内容を siteinit.l に加えてダンプファイルを作成しなおしてください。 ソフトの登録は、以下のように、名称と立ち上げるプログラムを並べて書きます。
(launch "ftp"   "d:\\wbin\\ffftp\\ffftp.exe"
        "mail"  "c:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
        "www"   "c:\\Program Files\\Mozilla Firefox\\firefox.exe"
        "word"  "c:\\Program Files\\OpenOffice.org 1.9.79\\program\\swriter.exe"
        "calc"  "c:\\Program Files\\OpenOffice.org 1.9.79\\program\\scalc.exe"
        "draw"  "c:\\Program Files\\OpenOffice.org 1.9.79\\program\\sdraw.exe")

3. 使い方

メニューバーに”起動”というポップアップメニューができますので、 そこから立ち上げたいプログラムを選んでクリックします。

4. ソースコード

ソースを以下に示します。
01:     ;;;  segregation
02:     ;;;  (seg 3 '(1 2 3 4 5 6)) -> #((1 4) (2 5) (3 6))
03:     (defun seg (m ls0)
04:       (let ((a (make-array m)))
05:         (labels ((rec (i ls)
06:                    (if ls
07:                        (progn
08:                          (push (car ls) (aref a (mod i m)))
09:                          (rec (1+ i) (cdr ls)))
10:                      (dotimes (j m)
11:                        (setf (aref a j) (nreverse (aref a j)))))))
12:           (rec 0 ls0)
13:           a)))
14:     
15:     ;;; a simple launcher			      
16:     (defmacro launch (&rest apps)
17:       (let* ((a (seg 2 apps))
18:              (lsym (mapcar #'(lambda (name) (intern (concat "launch-" name))) (aref a 0))))
19:         `(progn
20:            ,@(mapcar #'(lambda (sym exe)
21:                          `(defun ,sym ()
22:                             (interactive)
23:                             (call-process ,exe)))
24:                      lsym (aref a 1))
25:            (add-hook '*post-startup-hook*
26:                      #'(lambda ()
27:                          (add-popup-menu *app-menu*
28:                                          (define-popup-menu
29:                                           ,@(mapcar #'(lambda (sym name)
30:                                                         `(:item nil ,name ',sym))
31:                                                     lsym (aref a 0)))
32:                                          "起動"))))))
33:     
34:     (launch "ftp"   "d:\\wbin\\ffftp\\ffftp.exe"
35:             "mail"  "c:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
36:             "www"   "c:\\Program Files\\Mozilla Firefox\\firefox.exe"
37:             "word"  "c:\\Program Files\\OpenOffice.org 1.9.79\\program\\swriter.exe"
38:             "calc"  "c:\\Program Files\\OpenOffice.org 1.9.79\\program\\scalc.exe"
39:             "draw"  "c:\\Program Files\\OpenOffice.org 1.9.79\\program\\sdraw.exe")
説明
03 関数 seg はリストをより分けて、リストの配列を返す関数です。
16 マクロ launch は関数を定義して、その関数をメニューに登録するマクロです。

5. 終わりに

せっかくいつも xyzzy が立ち上がっているので、それをランチャーにも使おう、ということで 書いてみました。
ご参考までに。