#!/bin/sh # # I find this handy for demos where I can magnify as much of the origonal # screen as possible to the full screen size and specified magnification. # License: LGPLv2 # Note this only allows for the xmag menu on the fullscreen display. # So you should make xmag fullscreen, ie remove titlebar etc (shift+F11 in gnome). test ! -z $1 && global mag := $1 || global mag := '2' proc fullscreen_xmag_source { #could also do: geometry=`xdpyinfo | grep dimensions | tr -s ' ' | cut -d' ' -f3` global geometry := $[xwininfo -root | grep -E "geometry" | sed 's/.* \([0-9]*x[0-9]*\).*/\1/] global width := $[echo $geometry | cut -dx -f1] global height := $[echo $geometry | cut -dx -f2] global xmag_menu := '20' echo $[expr $width / $mag]x$[expr '(' $height - $xmag_menu ')' / $mag] } xmag -source $[fullscreen_xmag_source] -mag $mag (CommandList children: [ (AndOr children: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "]")}) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mag) op: Equal rhs: {($ VSub_Number "$1")} spids: [38] ) ] spids: [38] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:mag) op:Equal rhs:{(2)} spids:[43])] spids: [43] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (FuncDef name: fullscreen_xmag_source body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:geometry) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(xwininfo)} {(-root)}) (C {(grep)} {(-E)} {(DQ (geometry))}) (C {(sed)} {(SQ <"s/.* \\([0-9]*x[0-9]*\\).*/\\1/">)}) ] negated: False ) ] ) left_token: spids: [59 81] ) } spids: [58] ) ] spids: [58] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:width) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name "$geometry")}) (C {(cut)} {(-dx)} {(-f1)}) ] negated: False ) ] ) left_token: spids: [85 97] ) } spids: [84] ) ] spids: [84] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:height) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name "$geometry")}) (C {(cut)} {(-dx)} {(-f2)}) ] negated: False ) ] ) left_token: spids: [101 113] ) } spids: [100] ) ] spids: [100] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:xmag_menu) op:Equal rhs:{(20)} spids:[116])] spids: [116] ) (C {(echo)} { (CommandSubPart command_list: (CommandList children: [(C {(expr)} {($ VSub_Name "$width")} {(/)} {($ VSub_Name "$mag")})] ) left_token: spids: [122 130] ) (x) (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(EscapedLiteralPart token:)} {($ VSub_Name "$height")} {(-)} {($ VSub_Name "$xmag_menu")} {(EscapedLiteralPart token:)} {(/)} {($ VSub_Name "$mag")} ) ] ) left_token: spids: [132 148] ) } ) ] spids: [51] ) spids: [47 50] ) (C {(xmag)} {(-source)} { (CommandSubPart command_list: (CommandList children:[(C {(fullscreen_xmag_source)})]) left_token: spids: [157 159] ) } {(-mag)} {($ VSub_Name "$mag")} ) ] )