From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4751 invoked from network); 5 Sep 2005 12:21:09 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 5 Sep 2005 12:21:09 -0000 Received: (qmail 20017 invoked from network); 5 Sep 2005 12:21:01 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 5 Sep 2005 12:21:01 -0000 Received: (qmail 8214 invoked by alias); 5 Sep 2005 12:20:54 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9384 Received: (qmail 8204 invoked from network); 5 Sep 2005 12:20:54 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 5 Sep 2005 12:20:54 -0000 Received: (qmail 18977 invoked from network); 5 Sep 2005 12:20:54 -0000 Received: from mxfep01.bredband.com (195.54.107.70) by a.mx.sunsite.dk with SMTP; 5 Sep 2005 12:20:49 -0000 Received: from puritan.petwork ([213.112.43.228] [213.112.43.228]) by mxfep01.bredband.com with ESMTP id <20050905122048.VOKF27082.mxfep01.bredband.com@puritan.petwork> for ; Mon, 5 Sep 2005 14:20:48 +0200 Received: by puritan.petwork (Postfix, from userid 1000) id A88C4ADFEA; Mon, 5 Sep 2005 14:20:49 +0200 (CEST) Date: Mon, 5 Sep 2005 14:20:49 +0200 From: Nikolai Weibull To: Zsh Users Subject: [ANN] zap-0.1.0 Message-ID: <20050905122049.GC8837@puritan.pnetwork> Mail-Followup-To: Zsh Users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="EeQfGwPcQSOJBaQU" Content-Disposition: inline User-Agent: Mutt/1.5.8i X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.4 --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline As a sort of semi-response to DervishD's refactoring thread, I'm proud to announce my initial release of the Zsh Application Protocol (ZAP). There's not really a lot of code in this package yet, but it provides a comfortable framework for writing quick hacks that nevertheless act like real applications, with nicely formatted --help output and easy-to-use options specification. I've also attached a sample application, which is nothing but a rewrite of the Workspace manager for the Ratpoison window manager. Beyond that the documentation is non-existant, but I'll write something up if anyone seems to care about it. Anyway, I hope that this may be useful and if it is I'll put some more work into it for a 0.2 release, nikolai -- Nikolai Weibull: now available free of charge at http://bitwi.se/! Born in Chicago, IL USA; currently residing in Gothenburg, Sweden. main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);} --EeQfGwPcQSOJBaQU Content-Type: application/x-tar-gz Content-Disposition: attachment; filename="zap-0.1.0.tar.gz" Content-Transfer-Encoding: base64 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 OTwK/gtgbj5bAFAAAA== --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=rpws #! /bin/zsh # contents: Workspace script for ratpoison(1) window manager. # arch-tag: 18711864-f9c7-4a47-99f6-63d2673c26fd # # Copyright (C) 2003 Shawn Betts # Copyright (C) 2004 Nikolai Weibull # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA setopt extendedglob autoload -U zap-init zap-init $0:t "1.0.0" SELF=$0 RATPOISON=ratpoison FRAMES=( "(frame :number 0 :x 242 :y 3 :width 796 :height 1018)" ) local -a optdesc optdesc=( '' '' ' [WORKSPACE]' '' 0 0 -1 '' '' "Workspace support script for the ratpoison \ X11 window manager." '' 0 0 -1 -b --bindings 'set up keyboard bindings for workspace switching' '' 0 0 0 -i --initialize 'initialize workspace support' '' 0 0 0 '' 'WORKSPACE' 'workspace to switch to' '' 0 0 0 ) rp-call () { $RATPOISON -c "$*" } select-workspace () { rp-call gselect ${${1/#/ws}:/ws1/default} rp-call frestore $(rp-call getenv fs$1) rp-call setenv ws $1 } save () { rp-call setenv fs$(rp-call getenv ws) $(rp-call fdump) } restore () { save $1 rp-call echo Workspace $1 select-workspace $1 } initialize-workspace () { (( $1 != 1 )) && rp-call gnew ws$1 rp-call setenv fs$1 ${FRAMES[$1]:-$(rp-call fdump)} } initialize () { rp-call select - rp-call only for i in {1..6}; do initialize-workspace $i done select-workspace 1 } bindings () { rp-call bind M-1 exec $SELF 1 rp-call bind M-2 exec $SELF 2 rp-call bind M-3 exec $SELF 3 rp-call bind M-4 exec $SELF 4 rp-call bind M-5 exec $SELF 5 rp-call bind M-6 exec $SELF 6 } zap-parse-options optdesc "$@" (( $ZAP_OPTIONS[(I)--bindings] || $ZAP_OPTIONS[(I)-b] )) && bindings (( $ZAP_OPTIONS[(I)--initialize] || $ZAP_OPTIONS[(I)-i] )) && initialize if (( $#ZAP_ARGUMENTS > 0)); then for workspace in "$ZAP_ARGUMENTS[@]"; do if [[ $workspace == <1-6> ]]; then restore $workspace else zap-error 1 "unrecognized workspace:" " workspace: $workspace" fi done fi # vim: set sts=2 sw=2: --EeQfGwPcQSOJBaQU--