fvwm在執行命令的時候總會將引數擴充套件。引數是由'$'開始的,後面跟著單個字元或者括在括號內的單詞。如果fvwm遇到乙個沒有加引號的引數,那麼它 將會把這個引數擴充套件為字串。fvwm不會處理它不認識的引數。引數擴充套件的優先順序比引號高,如果需要得到'$',那麼請輸入'$$'。
如果命令帶有'-'號字首,那麼fvwm將不會執行引數擴充套件。這只適用於緊挨著'-'號的命令,因為通常在這樣的情況下引數擴充套件已經執行過了。當引數擴充套件和其他字首一起使用時,必須放在其他字首的前面。
比如說像下面這樣:
pick -exec exec xmessage '$[w.name]'這個命令將會開啟乙個對話方塊,裡面寫著
"$[w.name]",而不是擴充套件以後的內容。
這個長變數可能在它的名字裡面包含其它的變數,內部的變數將首先被擴充套件。
在fvwm的早期版本中提供一些單字元的變數,但是單字元變數會引起很多問題,所以現在已經沒有了。應該使用較長的變數名來替代。
例:#列印當前的桌面編號和頁面的水平編號和視窗的類(在這裡沒有擴充套件,因為沒有視窗)
echo $[desk.n] $[page.nx] $[w.class]注意:如果這個命令在視窗的焦點之外被執行,它將會列印
"$[w.class]"而不是類的名字。通常來說把滑鼠指標放在乙個視窗上面來獲得視窗焦點是不夠的。
current命令可以強制使視窗具有焦點。
current
echo $[desk.n] $[page.nx] $[w.class]
fvwm能夠識別的引數有:
$$字母'$'
$fvwm正在讀的這個檔案的絕對路徑。用來建立可重新定位的配置樹。如果在任何可讀檔案之外使用則返回'.'。
$0 to $9
分別標示傳遞到函式的第1個到第10個引數。如果相應的引數在函式中沒有定義,那麼這個引數會被命令列自動刪除。
$*表示傳遞到函式的所有引數,包括$9以後的引數。
$[n]
傳遞到函式的第n個引數,n是從0開始計數的。如果這個引數在函式中沒有定義,那麼這個引數會被命令列自動刪除。這個引數擴充套件時不帶引號。
( the parameter is expanded unquoted. )
$[n-m]
傳遞給函式的第n個到第m個引數。如果所有的引數在函式中都沒有定義,那麼這個
"$[...]"會被命令列自動刪除。如果只是部分引數有定義,那麼擴充套件所有已定義的引數,忽略其它。所有的引數擴充套件時都不帶引號。
$[n-]
傳遞給函式的從n開始的所有引數。如果所有的引數在函式中都沒有定義,那麼這個
"$[...]"會被命令列自動刪除。所有的引數擴充套件時都不帶引號。
$[*]
傳遞給函式的所有引數。和
$[0-]等效。
$[version.num]
fvwm的版本號
$[version.info]
fvwm的版本資訊,像
"(from cvs)",正式發行的版本沒有這個資訊。
$[version.line]
fvwm --version命令輸出的第一行
$[vp.x] $[vp.y] $[vp.width] $[vp.height]
當前視口
(viewport)的座標、寬度或者高度。
$[desk.n]
當前桌面的編號。
$[desk.name]
這個引數會被自動替換為第n個桌面的名字。桌面的名字是通過
desktopname命令來定義的。如果桌面沒有命名,那麼這個變數返回這個桌面的預設名字。
$[desk.width] $[desk.height]
整個桌面的寬度或者高度。也就是單個桌面的寬度或高度乘以x或者y方向上這裡桌面裡頁面的個數。
$[desk.pagex] $[desk.pagesy]
乙個桌面中x方向的頁面個數或者y方向的頁面個數。這兩個引數的值是通過
desktopsize命令來設定的。
$[page.nx] $[page.ny]
當前頁面的編號,也就是當前頁面離x和y軸的距離。編號是從0開始計數的。這裡頁面相當於gnome當中的區域。
$[w.id]
呼叫這個命令的視窗的id(用16進製表示,比如
0x10023c),或者如果沒有視窗和它關聯,那麼它的值就是字串
"$[w.id]"。
$[w.name] $[w.iconname] $[w.class] $[w.resource] $[w.iconfile] $[w.miniiconfile] $[w.iconfile.svgopts] $[w.miniiconfile.svgopts]
$[w.name]是視窗的名字
$[w.iconname]是圖示的名字
$[w.class]是resource的類
$[w.resource]是resource的名字
$[w.iconfile] 和
$[w.miniiconfile] 是圖示或者或者由
icon 或者
miniicon 定義的迷你圖示的檔名(這個檔案在硬碟上的絕對路徑)
$[w.iconfile.svgopts] 和
$[w.miniiconfile.svgopts] 是圖示或者迷你圖示的svg渲染選項,只有當fvwm編譯時加入了svg支援時才有效
如果以上這些命令沒有和任何視窗關聯,那麼這些命令會被沒有擴充套件的字串
"$[w.]"替代。
注意:上面的前4個變數可能包括任何型別的字元,所以使用這些變數需要引用。這意味著這個變數的值兩邊需要加上單引號,而且值裡面所有單獨的引號都需要在前面加上反斜槓。以確保下面這樣的命令:
style $[w.resource] icon norm/network.png
可以正常執行,即使這個變數的值含有像空格或者各種引號這樣特殊的符號。
$[w.x] $[w.y] $[w.width] $[w.height]
如果視窗沒有圖示話的話,這些引數分別表示當前視窗的座標或者寬度或者高度。如果視窗已經圖示話了或者沒有視窗相關聯的話,這些字串的值將被保留。
$[w.desk]
這個變數的值為視窗所在的桌面號,如果視窗是sticky風格的,那麼則為當前的桌面號。
$[w.layer]
這個變數的值為視窗所在的層。
$[cw.x] $[cw.y] $[cw.width] $[cw.height]
這個和$[w...]相似,不過返回的是視窗客戶端部分的geometry屬性,也就是說:邊框和標題欄不算在內。
$[i.x], $[it.x], $[ip.x] $[i.y], $[it.y], $[ip.y] $[i.width], $[it.width], $[ip.width] $[i.height], $[it.height], $[ip.height]
這個和$[w...]相似,不過返回的是圖示或者圖示標題($[it...])或者圖示所用($[ip...])
的geometry屬性
。$[pointer.x] $[pointer.y]
這兩個變數返回滑鼠游標在螢幕上的位置。如果游標不在這個螢幕上,那麼這倆個變數將不會被擴充套件
。$[pointer.wx] $[pointer.wy]
這兩個變數返回滑鼠游標在所選擇的視窗的位置。如果游標不在這個螢幕上,視窗被圖示話或者沒有視窗被選擇,
那麼這倆個變數將不會被擴充套件
。$[pointer.cx] $[pointer.cy]
這兩個變數返回滑鼠游標在所選擇視窗的子視窗(client portion)的位置。如果游標不在這個螢幕上,視窗被隱藏或者圖示話或者沒有視窗被選定時,
那麼這倆個變數將不會被擴充套件
。$[screen]
fvwm正在執行的螢幕編號,對於多屏使用者很有用。
$[fg.cs] $[bg.cs] $[hilight.cs] $[shadow.cs]
這些引數用來替代colorset中定義的前景色(fg),背景色(bg),高亮色(hilight)或者陰影顏色(shadow)。(用乙個正整數來替代引數裡面的)。例如 "$[fg.cs3]"將會被擴充套件為名字為colorset 3的前景色(像rgb:rrrr/gggg/bbbb 這樣的格式)。colorset的詳情請參見
colorsets。
$[schedule.last]
這個引數會用
schedule命令排程的最後一條命令的id替換自己,不管這個命令是否已經執行。
$[schedule.next]
在沒有明確指定其它的id的情況下,這個引數會用
schedule命令排程的下一條命令的id替換自己。
$[cond.rc]
返回最後乙個判斷語句的返回值。這個變數只在函式內部有效,而且不能被判斷語句用來作為判斷的條件。詳情請檢視命令列表中的
conditional commands章節。
$[func.context]
當使用mouse,
key 或者
pointerkey 命令時用來獲得執行命令的上下文本元。可以像下面這個例子這樣來用:
mouse 3 fs n windowshade $$[func.context]
$[gt.str]
返回當前區域目錄中str的翻譯。如果沒有找到翻譯則返回原文。詳見
localepath 章節。
$[...]
如果[ ]裡面的字串不是上面的任何乙個,fvwm將試著找乙個同名的環境變數來替換它,並將這個環境變數的值給這個引數(比如說
"$[pager]" 可以被
"more"替換)。如果找不到
則保留這個變數。
在addtofunc章節的描述中可以找到一些具體的例子。
php擴充套件學習筆記
要執行乙個web指令碼語言需要三個部分 1 分析輸入的 並翻譯和執行 2 功能部分,執行語言的功能要求 3 與web伺服器對話部分 zend執行第一部分和第二部分的一小部,php執行其餘部分。zend是語言的核心,根據一些預先定義的函式執行一些基本的功能。php包括所有的外部功能模組。php的擴充套...
PHP SPL擴充套件學習筆記
一.spl是幹嘛的 spl是用於解決典型問題 standard problems 的一組介面與類的集合。資料結構 1.實現雙向列表 spldoublylinkedlist implements iterator arrayaccess countable 2 splstack extends spl...
擴充套件KMP學習筆記
對於字串 s 定義 z i 為從位置 i 開始的 s 字尾與 s 的最長公共字首的長度。擴充套件 kmp 就是用於在 mathcal o n 複雜度下求解 z 函式的演算法。既然是擴充套件 kmp 那麼當然與 kmp 有一定的關係 這一點主要體現在思想上,兩者都在求解的過程中通過之前已經求解的答案來...