簡易ランチャー
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:
02:
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:
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 が立ち上がっているので、それをランチャーにも使おう、ということで
書いてみました。
ご参考までに。