#!/usr/bin/env perl # $Source: /home/keck/gen/RCS/xup,v $ # $Revision: 4.13 $$Date: 2007/07/06 17:00:26 $ # Contents # 1 standard 2 notes 3 args 4 main 5 pod # ---------------------------------------------------------------------- #1# standard use strict; use warnings; (my $cmd = $0) =~ s%.*/%%; sub usage { print "Usage: $cmd -help\n"; } sub quit { (@_) ? print STDERR "$cmd quitting: @_\n" : usage; exit 1 } use X11::Tops; use Data::Dumper; sub perldoc { my ($perldoc, $less); for (split /:/, $ENV{PATH}) { $perldoc = "$_/perldoc" if -x "$_/perldoc"; last if $perldoc; next if $less; $less = "$_/less" if -x "$_/less"; } if ($perldoc) { $ENV{LESSCHARSET} = 'latin1'; exec $perldoc, $0 } elsif ($less) { exec $less, '+/^# Sorry.*', $0 } else { print "Sorry, there's no perldoc(1) or even less(1) in your \$PATH\n" . "The documentation can be found at the end of $0\n"; exit 1 } } # ---------------------------------------------------------------------- #2# notes # +taskbar[1-47] # 1.1 # started from gen/imgr 1.4 # 1.4 # warps # 1.6 # lowers too # 1.8 # level3s for fvwm # 1.9 # renamed from tmgr to xup # 1.10 # can raise fvwm IM # 1.11 # much simpler - uses Xtops & Xchars # raises fvwm IM without hack # 1.11 # much simpler - uses Xtops & Xchars # 1.15 # same as 1.10 except .xup changed to .xterms/chars [+taskbar2] # 2.1 # back to Xtops, & asking xl to raise if running [+taskbar4] # simplified back to one window argument & just a char # 2.2 # lowers as well as raises # 2.3 # argument can be an instance # 2.4 # -l # 3.1 # +taskbar7 # 4.1 # +taskbar7 # ---------------------------------------------------------------------- #3# args my $char; my $nowarp; while (@ARGV) { $_ = shift; perldoc() if /^-+(man|help)/; $nowarp = 1, next if /^-+n/; quit("illegal flag '$_'") if /^-/; $char = $_; last; } quit('no instances specified') unless defined $char; quit("too many arguments") if @ARGV; # ---------------------------------------------------------------------- #4# main my $xtops = X11::Tops->new->update_ids; for my $xtop (values %{$xtops->byid}) { next unless $xtop->char eq $char; if ($cmd =~ /up/ && $nowarp) { $xtop->raise; } elsif ($cmd =~ /up/) { $xtop->raise_and_focus; } else { $xtop->lower; } } __END__ # ---------------------------------------------------------------------- #5# pod # Sorry, there's no perldoc in your $PATH, so here's the raw pod =head1 NAME xup, xdn - raise or lower an X client's window. =head1 SYNOPSIS xup|xdn [-n] char =head1 DESCRIPTION Normally raises & warps to, or lowers, the specified X client. With -n doesn't warp. =head1 SEE ALSO xchar(1), xtb(1), X11::Tops(3) =head1 AUTHOR Brian Keck Ebwkeck@gmail.comE =head1 VERSION $Source: /home/keck/gen/RCS/xup,v $ $Revision: 4.13 $ $Date: 2007/07/06 17:00:26 $ xchar 0.2 =cut