[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RP] rpws [next|previous] addition
From: |
Ivan Beschastnikh |
Subject: |
Re: [RP] rpws [next|previous] addition |
Date: |
Mon, 18 Apr 2005 16:42:12 -0500 |
User-agent: |
Mutt/1.5.6+20040818i |
here's another with a -w option to list the windows in all the workspaces- i
get lost sometimes ...
i don't know if its possible to highly the workspace number (reversing fg and
bg)
instead of having a character on the side to designate current workspace,
can this be triggered with some escape char in an echo ?
Also, i traverse the groups, gselect, and call windows to gather the titles
but is there a better way?
[attached]
ivan.
On Mon, Apr 18, 2005 at 10:42:02AM -0500, Ivan Beschastnikh wrote:
> modified new rpws version [attached].
>
> ivan.
>
> On Sun, Apr 17, 2005 at 01:04:32PM -0400, Shawn Betts wrote:
> > address@hidden (Ivan Beschastnikh) writes:
> >
> > > hey all,
> > >
> > > i've made a simple modification to my rpws to allow switching to
> > > previous/next workspace. Thought people might find it useful.
> > > i think the N/C-N and P/C-P bindings work best- defaults.
> >
> > Hi Ivan,
> >
> > I recently replaced the rpws script with a new one. If you decide to
> > recreate this change using the new rpws, let us know and I'll look at
> > putting it in CVS.
> >
> > -Shawn
> >
> >
> > _______________________________________________
> > Ratpoison-devel mailing list
> > address@hidden
> > http://lists.nongnu.org/mailman/listinfo/ratpoison-devel
> #!/usr/bin/perl -w
>
> #
> # Copyright (c) 2005 Mike O'Connor
> # All rights reserved.
> # Author Mike O'Connor <address@hidden>
> #
> # Modified by Shawn Betts.
> # Modified by Ivan Beschastnikh.
> #
> # code was adapeted from rpws that comes from ratpoison containing the
> following copyright:
> # Copyright (C) 2003 Shawn Betts
> # Author: Shawn Betts
> #
>
> use strict;
> use Fcntl qw (:flock);
> use Getopt::Std;
>
> my $ratpoison = $ENV{ "RATPOISON" } || "ratpoison";
> my $tmp=$ENV{ "TMP" } || "/tmp";
> my $lockfile = $ENV{ "RPWS_LOCKFILE" } || "$tmp/rpws.$<.lock";
>
> sub help
> {
> system("pod2usage", $0);
> print( "for more detailed documentation run \"perldoc $0\"\n" );
> }
>
> sub rp_call
> {
> my $result = `$ratpoison -c "@_"`;
> chomp( $result );
> chomp( $result );
> return $result;
> }
>
> sub ws_init_ws
> {
>
> my $num = shift;
>
> rp_call( "gnew wspl$num" );
> my $fd = fdump();
> rp_call( "setenv fspl$num $fd" )
> }
>
> sub fdump
> {
> return rp_call( "fdump" );
> }
>
> sub ws_init
> {
> my $num = shift;
>
> # Backup the frames
> my $fd = fdump();
>
> rp_call( "select -" );
> rp_call( "only" );
>
> my $i;
> for( my $i = 0; $i < $num; $i++ )
> {
> ws_init_ws( $i );
> }
>
> # Save number of workspaces
> rp_call( "setenv wsmax $num" );
>
> # Workspace 1 uses the 'default' group.
> # Start in workspace 1.
> $fd = fdump();
> rp_call( "gselect default" );
> rp_call( "setenv fspl1 $fd" );
> rp_call( "setenv wspl 1" );
>
> # restore the frames
> rp_call( "frestore $fd" );
>
> if( -e "$lockfile" )
> {
> unlink ("$lockfile" );
> }
> }
>
> sub ws_save
> {
> my $ws = rp_call( "getenv wspl" );
> my $fd = fdump();
> rp_call( "setenv fspl$ws $fd" );
> }
>
> sub ws_restore
> {
> my $which = shift;
>
> ws_save();
>
> if( $which == 1 )
> {
> rp_call( "gselect default" );
> }
> else
> {
> rp_call( "gselect wspl$which");
> }
>
> rp_call( "echo Workspace $which" );
> my $last = rp_call( "getenv fspl$which" );
> rp_call( "frestore $last" );
> rp_call( "setenv wspl $which" );
> }
>
> sub ws_prev ()
> {
> my $num = int(rp_call( "getenv wsmax" ));
> my $current = int(rp_call( "getenv wspl" ));
> my $new;
>
> ws_save();
>
> if ( $current == 1 )
> {
> $new=$num;
> rp_call ("gselect $new");
> }
> elsif ( $current == 2 )
> {
> $new=1;
> rp_call("gselect default");
> }
> else
> {
> $new=$current-1;
> rp_call("gselect $new");
> }
>
> rp_call( "echo Workspace $new" );
> my $newfs = rp_call( "getenv fspl$new" );
> rp_call( "frestore $newfs" );
> rp_call( "setenv wspl $new" );
> }
>
> sub ws_next ()
> {
> ws_save();
> my $current = int(rp_call( "getenv wspl" ));
> my $num = int(rp_call( "getenv wsmax" ));
> my $new;
>
> if ( $current == $num )
> {
> $new=1;
> rp_call ( "gselect default" );
> }
> else
> {
> $new=$current+1;
> rp_call ( "gselect $new" );
> }
>
> rp_call( "echo Workspace $new" );
> my $newfs = rp_call( "getenv fspl$new" );
> rp_call ( "frestore $newfs" );
> rp_call( "setenv wspl $new" );
> }
>
> sub add_aliases
> {
> my $n = shift;
> foreach my $i (1..$n) {
> rp_call ( "alias rpws$i exec $0 $i" );
> }
> }
>
> sub add_keys
> {
> my $n = shift;
> foreach my $i (1..$n) {
> rp_call ( "definekey top M-F$i rpws$i" );
> }
> }
>
> my $arg = shift @ARGV || 'help';
>
> if( $arg eq "help" ) {
> help();
> } elsif( $arg eq "init" ) {
> my $num = shift @ARGV;
> my %opts;
> ws_init( $num );
> getopts('ka', \%opts);
> add_aliases( $num ) if $opts{'a'} || $opts{'k'};
> add_keys ( $num ) if $opts{'k'};
> } elsif( $arg eq "-p" ) {
> ws_prev();
> } elsif( $arg eq "-n" ) {
> ws_next();
> } else {
> open LOCK, ">>$lockfile" or die "Cannot open lockfile: $lockfile";
> flock(LOCK, LOCK_EX);
> ws_restore( $arg );
> }
>
> __END__
>
> =head1 NAME
>
> rpws - Implements multiple workspaces in ratpoison
>
> =head1 SYNOPSIS
>
> rpws init n [-k] [-a] - setup rpws with n workspaces.
> -a sets up command aliases;
> -k sets up key bindings and aliases.
> rpws help - this documentation
> rpws -p - switch to previous workspace
> rpws -n - switch to next workspace
> rpws n - switch to this workspace
>
>
>
> =head1 DESCRIPTION
>
> B<rpws> implements multiple workspaces in ratpoison by making calls
> to fdump, freestore. It was adapted from rpws which comes with
> ratpoison in the contrib directory.
>
> =head1 USAGE
>
> Add the following line in ~/.ratpoisonrc
>
> exec /path/to/rpws init 6 -k
>
> This creates 6 aliases rpws1, rpws2, etc. It also binds the keys M-F1,
> M-F2, etc to each rpwsN alias.
>
> =head1 FILES
>
> rpws requires use of a lockfile. It defaults to using
> /tmp/rpws.<UID>.lock but this can be changed by setting the
> environment variable RPWS_LOCKFILE to your desired lockfile.
>
> =head1 AUTHOR
>
> Mike O'Connor <address@hidden>
>
> =head1 COPYRIGHT
>
> Copyright (c) 2005 Mike O'Connor
> All rights reserved.
>
> 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.
>
> _______________________________________________
> Ratpoison-devel mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/ratpoison-devel
rpws
Description: Text document