fvwm學習筆記之命令擴充套件 by stack

2021-04-19 21:42:49 字數 4764 閱讀 1107

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 有一定的關係 這一點主要體現在思想上,兩者都在求解的過程中通過之前已經求解的答案來...