⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrxvtset.pl

📁 Mrxvt是一个小巧
💻 PL
字号:
#!/usr/bin/perl -w## All portions of code are copyright by their respective author/s.# Copyright (c) 2004     Avi Yagodnick  <aviy@bezeqint.net># Copyright (c) 2006     mark olesen## 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., 675 Mass Ave, Cambridge, MA 02139, USA.## ---------------------------------------------------------------------------## Mark Olesen: 2006-01-10# Complete code re-write (uses warnings/strict) as all perl code should.# The entire program is a set of callbacks for Getopt::Long## ---------------------------------------------------------------------------use strict;use Getopt::Long;( my $Script = $0 ) =~ s{^.*/}{};our ( $VERSION, $DATE ) = do {    my ( $ver, $date ) =      q{$Id: mrxvtset.pl,v 1.2 2006/02/24 23:51:44 jimmyzhou Exp $} =~      m{\s+(\d+\.\d+).*?\s+(\d{4}[-/]\d{2}[-/]\d{2})};    $date =~ s{/}{-}g;    # ISO-formatted    ( $ver, $date );};my %config = (    ## set it to your favourite location you wish    pixmap => "/tmp/rxvtpixmap-" . getpwuid($<) . ".xpm",);## conversion of file formats#sub convert_pixmap {    my ($val) = @_;    -f $val or return undef;    return $val if $val =~ /\.(xpm)$/;    if ( $val =~ /\.(gif|jpe?g|png)$/i ) {	system( convert => $val => $config{pixmap} );	chmod 0666 => $config{pixmap};	return $config{pixmap};    }    return undef;}## lookup table with the xterm codes#my %opcode = (    title => 0,    # change title and iconName    ##  XTerm_name		(0)    ##  XTerm_iconName		(1)    ##  XTerm_title		(2)    ##  XTerm_Color		(4)  /* change colors */    cursor    => 12,    # Xterm_Color_cursor: change actual 'Cursor' color    pointer   => 13,    # Xterm_Color_pointer: change actual 'Pointer' color    highlight => 17,    # XTerm_Color_RV: change actual 'Highlight' color    bold      => 18,    # Xterm_Color_BD: change actual 'Bold' color    underline => 19,    # Xterm_Color_UL: change actual 'Underline' color    ##  XTerm_logfile		(46) /* not implemented */    fn => 50,           # Xterm_font: restrict our use to font numbers    ##  XTerm_Menu		(10) /* set menu item */    pixmap => 20,       # new bg pixmap    fg     => 39,       # Xterm_restoreFG: change default fg color    bg     => 49,       # Xterm_restoreBG: change default bg color    ##  XTerm_dumpscreen	(55) /* dump scrollback and all screen */    tabtitle => 61,     # Xterm_tab: change tab title    ##  Xterm_tabterm		(62) /* change tab and terminal title */    newtab => 63,       # create a new tab with title    ##  Xterm_prevtab		(64) /* switch to previous tab */    ##  Xterm_nexttab		(65) /* switch to next tab */    ##  Xterm_tint		(66) /* change tinting color */    ##  Xterm_shade		(67) /* change shade level */    ##  Xterm_encode		(68) /* change encoding */    tb => 69,           # Xterm_hide: hide/show tabbar    ##  Xterm_opacity		(70) /* set opacity level */    tabbtn => 71,       # hide/show tabbar buttons    tabfg  => 72,       # change active tab fg    tabbg  => 73,       # change tabbar/active tab bg    itabfg => 74,       # change inactive tab fg    itabbg => 75,       # change inactive tab bg    trans  => 76,       # toggle transparency    left   => 77,       # Xterm_moveleft: move active tab to left    right  => 78,       # Xterm_moveright: move active tab to right    ##  Xterm_verybold		(79) /* toggle bold font for color text */    ##  Xterm_hotkeys		(80) /* toggle hotkeys */    ##  Xterm_saveconfig	(81) /* save configuration */    ##  Xterm_bgfade		(82) /* set bgfade degree */    ##  Xterm_termenv		(83) /* set TERMENV type */);## process high/low/toggle commands#sub high_low_toggle {    my ( $type, $val, $opcode ) = @_;    print "\033[?${opcode}$val\007"      if $val =~ s/^(1|y|t).*$/h/i    # high      or $val =~ s/^(0|n|f).*$/l/i    # low      or $val =~ s/^$/t/              # toggle}# XTerm OSCs:# ESC ] Ps;Pt (ST|BEL)# process xterm toggle commandssub xterm_osc {    my ( $type, $val, $opcode ) = @_;    # warn "$type <$val>\n";    my $op = $opcode || $opcode{$type};    if ( defined $op ) {        print "\033]${op};$val\007";    }    else {        warn "programming error for xterm_osc '$type'\n";    }}# ---------------------------------------------------------------------------sub usage {    $! = 0;    # clean exit    warn @_, "\n" if @_;    die << "USAGE";usage: $Script  { SETTINGS }SETTINGS:  -fg        COLOR     change foreground color  -fg        0-15      change foreground to a particular color index  -bg        COLOR     change background color  -bg        0-15      change background to a particular color index  -cursor    COLOR     change cursor color    (alias: -cr)  -pointer   COLOR     change pointer color   (alias: -pr)  -bold      COLOR     change bold color      (alias: -bd)  -underline COLOR     change underline color (alias: -ul)  -highlight COLOR     change highlight (reverse video) color (alias: -rv)  -tabfg     COLOR     change active    tab foreground  -tabbg     COLOR     change active    tab background  -itabfg    COLOR     change inactive  tab foreground (alias: -tabifg)  -itabbg    COLOR     change inactive  tab background (alias: -tabibg)  -pixmap    FILE      if file is not xpm, uses 'convert'.                       Note special names: "none", "full", "tiled"                       (NB: full/tiled seem to be broken)  -fn        [INDEX]   font number 0-6 or +/-, empty for default  -title     STRING    change terminal title and icon name  -tabtitle  STRING    change tab title (*)  -newtab    STRING    create new tab with title (*)  -left                move active tab to left  -right               move active tab to right  -tb                  toggle tabbar visibility (*)  -tbb                 toggle tabbar button visibility (alias: tabbtn) (*)  -tr                  toggle transparency (alias: trans) (*)  -mb [Y|N|empty]      set, unset or toggle menubar   visibility  -sb [Y|N|empty]      set, unset or toggle scrollbar visibilityChange (m)rxvt parameters on the fly.NB: 'COLOR' can be a color name or specificationNB: aterm only supports some options (does not support fg)(*) - mrxvt onlyversion $VERSION ($DATE)copyright (c) 2006 Mark Olesen <Mark.Olesen\@ArvinMeritor.com>USAGE}# ---------------------------------------------------------------------------my %opt;@ARGV or usage("missing settings");GetOptions(    \%opt,    "help|h" => sub { die "\n"; },    # reverts to usage    # select fonts by number or relative (-/+)    # ---------------    "fn:s" => sub {	my ( $type, $val ) = @_;	if ( $val =~ /^([-+]|\d+)$/ or $val =~ s/^(default|normal)?$// ) {	    xterm_osc( $type => "#$val" );	}    },    # foreground color - ensure reset screen works    # ---------------    "fg=s" => sub {	my ( $type, $val ) = @_;	xterm_osc( fg => $val );    },    # background color - problematic with / without pixmap    # ---------------    "bg=s" => sub {	my ( $type, $val ) = @_;	## use the direct method if an index was specified	if ( $val =~ /^\d+$/ ) {	    xterm_osc( bg => $val );	}	else {	    ## let us sneak in pixmaps here too!	    my $xpm = convert_pixmap($val);	    unless ( defined $xpm ) {		$xpm = $config{pixmap};		## cheat - set background color indirectly (via a pixmap)		local *FILE;		open FILE, ">$xpm"		  or warn "Cannot write to pixmap '$xpm'\n"		  and return;		print FILE << "PIXMAP";/* XPM */static char *rxvtbg[] = {/* columns rows colors chars-per-pixel */"1 1 1 1","x c $val",/* pixels */"x"};PIXMAP		chmod 0666 => $xpm;		close FILE;	    }	    xterm_osc( pixmap => $xpm );	}    },    # background pixmap control    # ---------------    "pixmap=s" => sub {	my ( $type, $val ) = @_;	if ( $val eq "none" ) {	    xterm_osc( pixmap => "" );	}	## this part seems to be very broken !	elsif ( $val eq "full" ) {	    print "\033[m";	    xterm_osc( pixmap => ";100x100+50+50;?" );	}	elsif ( $val eq "tiled" ) {	    print "\033[m";	    xterm_osc( pixmap => ";;0" );	}	elsif ( -f $val ) {	    my $xpm = convert_pixmap($val);	    defined $xpm	      or warn "skipping unknown file format\n"	      and return;	    xterm_osc( pixmap => $val ) if -f $val;	}	else {	    warn "skipping non-existent file\n";	}    },    #    # high/low/toggle    #    "sb:s" => sub { high_low_toggle( @_, 30 ) },    # scrollbar visibility    "mb:s" => sub { high_low_toggle( @_, 10 ) },    # menubar visibility    #    # the following use xterm_osc() directly    #    (	map { ( $_ => \&xterm_osc ) } (	    "cursor|cr=s",        # change cursor color	    "pointer|pr=s",       # change pointer color	    "bold|bd=s",          # change bold color	    "underline|ul=s",     # change underline color	    "highlight|rv=s",     # change highlight color	    "tb",                 # toggle tabbar visibility	    "tabbtn|tbb",         # toggle tabbar button visibility	    "tabfg=s",            # change active tab fg	    "tabbg=s",            # change active tab bg	    "itabfg|tabifg=s",    # change inactive tab fg	    "itabbg|tabibg=s",    # change inactive tab bg	    "trans|tr",           # toggle transparency	    "left",               # move active tab to left	    "right",              # move active tab to right	    "title=s",            # change terminal title and icon name	    "tabtitle=s",         # change tab title	    "newtab=s",           # create new tab with title	)    ),  )  or usage();# use Data::Dumper;# warn Dumper(\%opt);# --------------------------------------------------------------- end-of-file

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -