「FVWM」- FvwmIconMan @20210202

FvwmIconMan,FVWM的图标管理器,通过配置可以实现类似于Windows中任务栏的功能,但又远不止如此。如图用红线框起来的部分(整个截图是一个Modules:FvwmButtons,而FvwmIconMan被包含在其中):
「FVWM」- FvwmIconMan @20210202

如何调用

该模块只能由fvwm产生,所以不能在行命令行的直接调用。

关于FvwmIconMan的介绍

FvwmIconMan是在TWM图标管理器之后建模的图标管理器。用户可以有多个图标管理器,每个图标管理器都有一个它管理的窗口类型列表。例如,用户可以有一个只列出Emacs窗口的管理器,另一个列出所有其他的东西。您还可以指定每个图标管理器使用的“分辨率”,例如,一个图标管理器可以管理所有桌面的窗口,另一个可以只管理当前桌面、页面、屏幕上的窗口。FvwmIconMan可以为它管理的窗口显示fvwm提供的微型图标。管理器可能有最大数量的列(垂直增长),最大行数(然后水平增长),或保持固定大小,同时调整窗口按钮的大小以适应(类似win95的任务栏) 。并且,当为X Shape扩展编译支持时,管理器窗口可以变形。

可以指定在收到鼠标或键盘事件时要执行的操作。例如,可以绑定Mouse-1来图标化所选窗口,以及绑定方向键,以在不使用鼠标的情况下浏览管理器窗口。

FvwmIconMan可以设置突出显示有键盘焦点的窗口,通过将选择事件(见下文)绑定到fvwm的Focus函数,来模拟TWM图标管理器的行为。

模块初始化

在初始化期间,FvwmIconMan会在配置文件中搜索下面介绍的选项。

强烈建议您使FvwmIconMan成为一个粘性(Sticky)窗口。如果你想使用FollowFocus选项,并绑定一个动作到Focus,那么你应该使FvwmIconMan是clicktofocus的。此外,使用Shape选项时,建议不要对FvwmIconMan窗口进行装饰。

调用(INVOCATION)

可以在配置文件中使用Module FvwmIconMan行来调用FvwmIconMan。如果在fvwm的初始化过程中产生FvwmIconMan,那么配置行应该放在StartFunction声明中,或者可以绑定到一个菜单、鼠标按钮、按键事件来调用它。

如果希望以瞬态模式下运行FvwmIconMan,例如使用内置窗口列表,可以将“-Transient”作为参数,调用“Module FvwmIconMan -Transient”就可以。在这种模式下,FvwmIconMan将直接在光标下弹出一个管理窗口,当鼠标按钮被释放时,它将执行相应的操作,然后退出。事情有些复杂,你可以指定FvwmIconMan创建多个管理器窗口,这在临时运行时是不合适的。所以,暂时运行时,FvwmIconMan只会创建一个管理器窗口。使用管理员标识“transient”为该管理器窗口指定选项。

FvwmIconMan可以接受一个别名作为参数。例如:Module FvwmIconMan FvwmIconMan-Variant2

配置选项概览(CONFIGURATION OPTIONS REFERENCE CHART)

这是一个简短的参考图表,描述了FvwmIconMan可用的选项:

Name Description Default
NumManagers number of managers 1
Action binds command to event Mouse 0 N sendcommand Iconify
Background default background gray
ButtonGeometry size of button in pixels ?
Colorset default colorset ?
DontShow list of windows to ignore ?
DrawIcons use mini icons false
FocusAndSelectButton ? flat grey black
FocusAndSelectColorset ? ?
FocusButton style for focused buttons up grey black ?
FocusColorset ? ?
FollowFocus show which win has focus false
Font 8x13 ?
Foreground default text color white
Format describes button label "%c: %i"
IconName manager icon name FvwmIconMan
IconAndSelectButton up black grey ?
IconAndSelectColorset ? ?
IconButton style for icon buttons up black grey
IconColorset ? ?
ManagerGeometry size of manager in buttons 0x1
MaxButtonWidth max width of a button ?
MaxButtonWidthByColumns ? ?
NoIconAction animate iconification NOP
PlainButton style for normal buttons up black grey
PlainColorset ? ?
ReliefThickness size of button relief 2
Resolution global/desk/page/screen page
Reverse normal, icon or none none
SelectButton style for selected buttons flat black grey
SelectColorset ? ?
Shape use shape extension false
Show list of windows to show ?
ShowOnlyIcons only icons visible false
ShowNoIcons icons are not displayed false
ShowTransient transient windows visible false
ShowOnlyFocused only focused visible false
Sort keep managers sorted name
SortWeight weight for sorting ?
Tips Tool Tips mode none
TipsDelays Tool Tips mapping delays 1000 300
TipsFont Font for Tool Tips default fvwm font
TipsColorset Tool Tips Colorset 0
TipsFormat describes Tips label the Format value
TipsBorderWidth Tool Tips border size 1
TipsPlacement Tips placement vs button updown
TipsJustification Tips Just vs button leftup
TipsOffsets Tips placement Offsets 3 2
Title manager title FvwmIconMan
TitleButton style for title button raisededge black grey
TitleColorset ? ?
UseWinList honor WinListSkip? true

配置选项详解

# 配置选项的两种形式

除了NumManagers选项外,剩余的所有选项都有两种形式:作用于所有的管理器;作用于指定的管理器。例如,用户可以让他的emacs的管理器有一个红色的前景色,让他的xterm的管理器有一个蓝色的前景色。因此配置行可以具有两种形式。

第一种,全局管理器配置:

?

*FvwmIconMan: <OptionName> <OptionValue>

?

这种是基于全局的,即对所有的管理器的<OptionName>选项使用<OptionValue>值。

第二种,特定管理器:

?

*FvwmIconMan: [id] <OptionName> <OptionValue>

?

这种是基于管理器的,管理器Id用于指定某个管理器,即对管理器Id为id的管理器的<OptionName>选项使用<OptionValue>值。管理器Id可以是一个正整数,也可以是字符串“transient”。整数id是指FvwmIconMan在正常运行时创建的管理员;id为“transient”的是指瞬时运行时由FvwmIconMan创建的单个管理器。

!!!旧的语法在管理器Id和OptionName之前使用星号而不是空格,但是现在已经过时了。

可用的选项如下

*FvwmIconMan: [id] Background background

*FvwmIconMan: [id] Colorset colorset
默认使用的colorset。覆盖背景色和前景色。

*FvwmIconMan: [id] DrawIcons value
如果你的FVWM版本支持在FvwmIconMan中使用迷你图标,则此选项将控制FvwmIconMan是否显示迷你图标。如果不支持,它会生成一条错误消息。
允许的value的取值为:“true”表示只为图标化的窗口的按钮显示迷你图标;“false”表示不显示迷你图标;“always”表示所有的按钮都显示迷你图标。

*FvwmIconMan: [id] FocusColorset colorset
像FocusButton工作,但使用颜色代替。样式设置仍然只能用FocusButton来应用。见FvwmTheme。

*FvwmIconMan: [id] FollowFocus boolean
如果为true,则按钮外观反映当前哪个窗口具有焦点。默认是false。

*FvwmIconMan: [id] Font font
指定用于按钮标签的字体。默认值是8x13。

*FvwmIconMan: [id] Foreground foreground
指定默认的前景色。

*FvwmIconMan: [id] IconName iconstring
指定该管理器窗口的窗口图标名称。图标字符串可以是单个单词,也可以是用引号括起来的字符串。默认是“FvwmIconMan”。

*FvwmIconMan: [id] IconAndSelectColorset colorset
像IconAndSelectButton一样,但使用颜色。样式设置仍然只能和IconButton一起来应用。见FvwmTheme。

*FvwmIconMan: [id] IconColorset colorset
像IconButton一样工作,但使用颜色。样式设置仍然只能和IconButton一起用。见FvwmTheme。

*FvwmIconMan: [id] NoIconAction action
指示FvwmIconMan在NoIcon样式窗口被图标化或取消图标时执行操作。相关坐标被追加到动作中,以便图标可以被追踪到FvwmIconMan按钮。示例操作是“*FvwwmIconMan:NoIconAction SendToModule FvwmAnimate animate”。action为空白或null操作将关闭此功能。

*FvwmIconMan: [id] Resolution resolution
指定管理器何时显示特定窗口的条目。resolution可能采用以下值之一:global, desk, page, screen, !desk, !page, !screen。如果是global的,则会显示相应类型的所有窗口(请参阅下面的show和dontshow选项)。如果是desk,那么只显示当前桌面上的那些窗口。如果是page,那么只显示当前页面上的那些窗口。如果screen,则只显示当前Xinerama屏幕上的那些窗口。!desk颠倒了desk,只显示那些不在当前桌子上的窗户。同样,!page只显示那些不在当前页面上的窗口,!screen只显示那些不在当前Xinerama屏幕上的窗口。默认是page。如果Xinerama未激活或仅使用一个屏幕,则page和screen是等效的。

此配置行在FvwmIconMan正在运行时也起作用,分辨率会动态更改。

*FvwmIconMan: [id] Reverse class
导致某些类型的按钮将其浮雕颠倒过来,从而颠倒了上下样式。这对扁平按钮没有影响。class可以是icon, normal, none。缺省值是none。

*FvwmIconMan: [id] Shape boolean
如果为True,则使用使窗口形状。如果你有多个Rows或Columns可能会有用。 如果FvwmIconMan未被编译支持Shape扩展,则会生成一条错误消息。 当使用形状窗口时,建议为无边框的FvwmIconMan创建一个fvwm样式,否则,fvwm会感到困惑。

*FvwmIconMan: [id] SortWeight weight pattern-list
将指定的weight分配给匹配pattern-list的窗口。该列表由type=pattern的模式组成,其中type是class, resource, title, icon之一;pattern是与fvwm中Style命令(简约shell模式匹配)中使用的格式相同的表达式。可以给出多种排序权重。每个窗口都按顺序与排序权重列表进行匹配,并从第一个匹配项中给出权重。较低权重的窗口首先放在管理器列表中。例如:

?

*FvwmIconMan: Sort weighted
*FvwmIconMan: SortWeight 1 class=XTerm title=special*
*FvwmIconMan: SortWeight 10 class=XTerm
*FvwmIconMan: SortWeight 5

?

在这个例子中,首先列出标题以“special”(权重1)开头的xterm窗口,其次是除了其他xterms(权重5)之外的其他所有项,其他xterm(权重10)最后列出。如果没有给出默认权重(空模式列表),则默认权重为0.仅当Sort类型设置为weighted时才有关。

*FvwmIconMan: [id] UseWinList boolean
如果为true,则使用WinListSkip样式标志。否则,根据show和dontshow列表,所有窗口都可能被管理。

以下两个选项控制哪些窗口由哪个Manager处理。管理器可以得到两个列表,一个窗口显示,一个窗口忽略。
如果只显示列表,则该管理器将只显示列表中的窗口。
如果只给出了DontShow列表,那么管理器将显示除了列表中的所有窗口。
如果给出了两个列表,则会显示一个窗口,如果它不在DontShow列表,而在Show列表中。
最后,如果没有给出名单,那么管理器将处理所有的窗口。每个列表由type = pattern的模式组成,其中type是class, resource, title, icon之一,pattern是与fvwm中Style命令(简约shell模式匹配)中使用的格式相同的表达式。模式中的引号将被视为表达的一部分。如果一个窗口可以由多个管理者处理,那么具有最低ID的管理者可以获得它。

*FvwmIconMan: [id] Show pattern list
如果一个窗口与列表中的某个模式匹配,则可以由该管理器处理。

*FvwmIconMan: [id] DontShow pattern list
如果一个窗口与列表中的某个模式匹配,则不由该Manager处理。

*FvwmIconMan: [id] ShowTransient boolean
在列表中显示瞬态窗口(默认为false)。

*FvwmIconMan: [id] ShowOnlyIcons boolean
如果boolean为true,则只显示图标化的窗口。

*FvwmIconMan: [id] ShowNoIcons boolean
如果boolean为true,则只显示未图标化的窗口。

*FvwmIconMan: [id] ShowOnlyFocused boolean
如果boolean为true,则只显示获得焦点的窗口。

控制FvwmIconMan的样式及行为

*FvwmIconMan: NumManagers num
正整数num用于指定管理器的总数。在处理任何一个管理器的特定的选项之前,需要声明多少个FvwmIconMan,该配置应该是放在第一位的。

默认:1

*FvwmIconMan: [id] Title title-string
指定该管理器窗口的窗口标题字符串。title-string可以是单个单词,也可以是用引号括起来的字符串。这在管理器窗口的标题栏(如果有的话)和按钮的标题栏(管理器为空时,绘制的按钮)中显示。

默认:FvwmIconMan

*FvwmIconMan: [id] ManagerGeometry geometry
指定管理器初始化时的大小及形状,以按钮的个数为单位。如果height为0,那么管理器将使用width作为列数,并且一旦窗口多于width列,将垂直增长。同样,如果width为0,它将使用height作为行数,并水平增长。如果两者都不为零,那么管理器将会是这个大小,并保持这种状态。当创建列时,按钮将变窄以适应。如果geometry的Y为负坐标,则窗口管理器将向上生长,否则,它会向下增长。

按钮(BUTTONS)的外观控制

*FvwmIconMan: [id] MaxButtonWidth width
定义按钮宽度的最大值(以像素为单位)。默认情况下没有最大值。值为0将重置默认值。最大值仅用于非增长管理器(ManagerGeometry选项指定非零宽度和高度)。

*FvwmIconMan: [id] MaxButtonWidthByColumns col
这是设置按钮宽度的另一种方法。col是图标的列数。按钮宽度由FvwmIconMan的总宽度除以col确定。例如,如果FvwmIconMan管理器的宽度是1024,则MaxButtonWidthByColumns是4,那么MaxButtonWidth是256。在配置时,如果不知道管理器的宽度(例如,吞下的FvwmIconMan)时,这非常有用。

*FvwmIconMan: [id] Format formatstring
一个printf类型的格式字符串,用于描述为每个在Manager中的按钮上显示的字符串。可能的标志是:%t,%i,%c,%r,对应着窗口标题、图标标题、类、资源名称。默认是“%c:%i”。警告:m4保留了字格式,所以如果你使用m4,采取适当的行动。

*FvwmIconMan: [id] PlainButton style [forecolor backcolor]
指定普通按钮的外观。style可以是flat, up, down, raisededge, sunkedge,描述了按钮是如何绘制的。颜色选项都是可选的,如果没有设置,则使用默认颜色。如果在单色屏幕上,那么style选项将被忽略,但仍是必须设置的。

*FvwmIconMan: [id] ReliefThickness num
num是一个整数,指定非扁平按钮边缘的浮雕的厚度是多少像素。将其设置为0将显示扁平按钮,就好像FocusAndSelectButton,FocusButton,IconAndSelectButton,IconButton,PlainButton,SelectButton,TitleButton的值都被设置为flat。如果num是负数,按钮将被倒置,就好像对所有类使用了Reverse。

*FvwmIconMan: [id] FocusAndSelectButton style [forecolor backcolor]
与PlainButton选项相同,但指定了两个都选中的按钮的外观,并具有键盘焦点。

*FvwmIconMan: [id] FocusAndSelectColorset colorset
像FocusAndSelectButton一样,但使用颜色代替。样式设置仍然只能应用于FocusAndSelectButton。见FvwmTheme。

*FvwmIconMan: [id] TitleButton style [forecolor backcolor]
与PlainButton选项相同,但指定标题按钮的外观(即Manager为空时,显示的按钮)。Manager的标题是在标题按钮中绘制的。

*FvwmIconMan: [id] SelectButton style [forecolor backcolor]
与PlainButton选项相同,但指定光标悬停在按钮上时,按钮外观。

*FvwmIconMan: [id] SelectColorset colorset
像SelectButton一样,但使用颜色。样式设置仍然只适用于SelectButton。见FvwmTheme。

*FvwmIconMan: [id] PlainColorset colorset
像PlainButton一样,但使用颜色。样式设置仍然只能应用于PlainBUtton。见FvwmTheme。

*FvwmIconMan: [id] IconAndSelectButton style [forecolor backcolor]
与PlainButton选项相同,但是指定了窗口被图标化并且按钮被选中的按钮的外观。

*FvwmIconMan: [id] IconButton style [forecolor backcolor]
与PlainButton选项相同,但是指定了窗口被图标化的按钮的外观。

*FvwmIconMan: [id] FocusButton style [forecolor backcolor]
与PlainButton选项相同,但指定窗口获得键盘焦点的按钮的外观。

*FvwmIconMan: [id] Sort value
用于设置多个按钮的排序方式:

?

  • 如果value是name,那么Manager中就是按名字排序的。默认是“name”。
  • 如果value是namewithcase,那么它是按名称敏感的大小写排序。
  • 如果value是id,则Manager中列表按照窗口ID排序。窗口ID在创建窗口后永远不会改变。
  • 如果value是weighted,那么Manager中的按钮是按权重排序(参见的SortWeight选项的说明)。
  • 如果value为none,这不会排序。

?

*FvwmIconMan: [id] ButtonGeometry <geometry>
以像素为单位指定单个按钮的初始时大小。如果指定的高度是0,则按钮高度由字体大小确定。
注意:<geometry>的X和Y坐标会被忽略。

控制提示(TIPS)的有关选项

*FvwmIconMan: [id] Tips value
该选项用于控制当光标在按钮上时是否显示提示。value可以是always、needed、false。默认为false,不显示提示。always,总是显示提示。needed,仅当FvwmIconMan中按钮中的字符串没有完整显示时才显示提示。当FvwmIconMan也在运行的时候,这个配置行也可以动态修改。

*FvwmIconMan: [id] TipsDelays delay [mappeddelay]
当光标在按钮上时,FvwmIconMan等待delay毫秒后显示提示。在提示已经显示时,当光标光标移到另一个按钮时,FvwmIconMan在显示新提示之前等待mappeddelay毫秒。其中delay和mappeddelay是以毫秒为单位的超时值。如果未给出mappeddelay,则假定其值为delay。默认值为1000 300。

*FvwmIconMan: [id] TipsFont fontname
指定提示的字体。默认是fvwm的Font。

*FvwmIconMan: [id] TipsColorset colorset
提示的字体颜色。默认colorset为0。

*FvwmIconMan: [id] TipsFormat formatstring
类似于Format选项,用于指定提示的格式。默认值为Format的格式字符串。formatstring可以是:%t,%i,%c,%r,分别对应着窗口标题、图标标题、类、资源名称。默认是“%c:%i”。

*FvwmIconMan: [id] TipsBorderWidth pixels
指定提示窗口的边框宽度(以像素为单位)。缺省值是1。

*FvwmIconMan: [id] TipsPlacement value
value可以是up, down, right, left, updown, leftright。该值指定提示窗口相对于其按钮的位置。默认为updown,屏幕上半部分的按钮则会在按钮下方显示提示,否则提示位于按钮上方。

*FvwmIconMan: [id] TipsJustification value
value可以leftup, rightdown, center。在放置提示窗口之后,指定提示窗口相对于按钮的对齐方向。默认是leftup,如果一个提示放在它的按钮的上方或下方,那么提示和按钮的左边界是对齐的。如果提示放置在按钮的左侧或右侧,则leftup对齐顶部边界。rightdown和center的作用,像leftup,但作用在不同的方向。对齐由TipsOffset选项进行调整。

*FvwmIconMan: [id] TipsOffsets placementoffset justoffset
其中,placementoffset和justoffset是TipsPlacement和TipsJustification配置选项的像素偏移量。默认是3 2。

事件绑定(BINDING)

*FvwmIconMan: [id] Action type binding
将FvwmIconMan命令绑定到事件。type可以是以下值之一:Key,Mouse,Select。有关Action参见下面的ACTIONS部分中描述。

动作(ACTIONS)

ACTIONS是用于绑定到事件的命令,类型可以是:按键、鼠标单击、鼠标进入窗口管理器按钮 - 由动作类型“Key”,“Mouse”和“Select”表示。

通常,按下按钮时,会执行绑定到鼠标点击的操作。 在瞬态模式下,因为假定FvwmIconMan被绑定到某个鼠标事件,当按钮被释放时执行该动作。 提示:在这种情况下,FvwmIconMan仍然跟踪鼠标按键和任何修饰键,所以如果你绑定meta-button3,当meta-button3事件发生时,那么确保你想要执行的动作将被执行 (这将是按钮释放,假设你保持你的手指在元键上)。

绑定的语法是:

键盘动作的绑定语法: Key <Keysym> <Modifiers> <FunctionList>
Keysym和Modifiers与fvwm中Key命令类似的。

鼠标动作的绑定语法: Mouse <Button> <Modifiers> <FunctionList>
Button和Modifiers与fvwm中Mouse命令类似的。

选择动作的绑定语法: Select <FunctionList>

FunctionList是由逗号分隔的一系列命令。它们按从左到右的顺序执行,在一个共享的上下文中(当前只包含一个指向“当前”按钮的指针)。如果在执行动作时选择了一个按钮(通常是通过坐在它上面的鼠标指针),则当前按钮被初始化为该按钮。否则,它没有指向任何东西。

大多数可用的命令会修改这个“当前”按钮,或者通过移动它,使其成为选择的按钮,或者发送命令给fvwm作用在由该按钮表示的窗口上。请注意,虽然当前按钮被初始化为所选按钮,但所选按钮并不隐式地跟随它。这样,用户可以发送命令到各个窗口,而不必改变选择哪个按钮。

命令有五种类型的参数:Integer, Manager, Window, Button, String。字符串是与fvwm完全相同的字符串,即可以是引号,也可以是单引号而不是引号。再次,可以将一系列命令绑定到事件,绑定方法是列出它们并用逗号分隔。

Window和Button类型在.fvwm2rc文件中看起来完全一样,但被解释为指定一个托管窗口或代表一个窗口的FvwmIconMan按钮。它们可以是一个整数(这是解释为模块N,其中N是按钮的数量 - 所以0是第一个,-1是最后一个),或者一个字符串:Select, Focus, Up, Down, Right, Left, Next, Prev。Select和Focus指的是当前选定或聚焦的按钮或窗口。Up, Down, Right, Left指在管理器窗口中当前按钮的上方、下方、右侧、左侧的按钮或窗口,允许在管理器窗口周围导航。 Next和Prev指定当前按钮之前或之前的窗口、按钮、管理器,允许导航在管理器窗口中绘制的一维窗口列表。如果管理器已排序,则“Next”和“Prev”将按排序顺序在窗口中移动。

Manager类型可以是整数、Next、Prev。其含义类似于Button类型的含义,但是从Manager的整体指标来看,仅限于非空的Manager。

目前定义了以下函数:

bif Button Integer/String

A relative branch instruction. If Button is Select or Focus, then take the branch if there is a
selected button or a focused button. If Button is an integer, then branch if nonzero. If it is one of
Up, Down, Right, Left, Next, Prev, then the branch is taken when the current button can move in that
direction. If the branch is taken, then Integer commands are skipped. No backwards branches are
allowed.

?

bifn Button Integer/String

The complement of bif. The branch is taken if Button evaluates to false, by the criteria listed for
bif.

?

gotobutton Button

Sets current button to Button. If Button is an integer, then the current button is set to Button mod‐
ulo the number of buttons, in the whichever manager contains the selected button, if any.

?

gotomanager Manager

Sets button to button 0 of Manager. This will only go to a visible, nonempty manager. So an integral
argument is taken modulo the number of such managers.

?

jmp Integer/String

Executes a relative jump of Integer instructions. Backwards jumps are not allowed. The jump is com‐
puted relative to the instruction following the jmp.

?

label String

Provides a label that previous instructions can jump to. It will not be visible to subsequent jump
instructions, and the same label can be used multiple times in the same instruction list (though it
would be perverse to do so.)

?

print String

Prints String to the console. Useful for debugging actions.

?

printdebug

Prints defined actions to the console. Should only be used by developers. To enable this command, set
CONFIG and FUNCTIONS variables to ‘1‘ in the modules/FvwmIconMan/debug.h and recompile this module.

?

quit
退出FvwmIconMan。

refresh
Causes all manager windows to redraw themselves.

ret
Stop executing the entire action.

searchback String

Sets button to button before the current one whose printed string in the manager window matches speci‐
fied String, which may contain wildcards.

?

searchforward String

Sets button to button after the current one whose printed string in the manager window matches speci‐
fied String, which may contain wildcards.

?

select
Selects the current button, if any. If a select action has been specified, it will then be run. There‐

fore, it is considered unwise to set the select button in the select action.

?

sendcommand <Command>
将命令<Command>发送到按钮代表的窗口上。

warp
Warps cursor to current button, if any.

示例(EXAMPLES)

gotobutton select, gotobutton Down, select
Selects the button below the currently selected button. Since the current button is already initialized to
the selected button, this may be shortened to "gotobutton Down, select".

gotobutton Up, select
Selects the button above the currently selected button.

gotobutton 0, select
Selects the first button of the current manager. If there is no current manager, which is the case when no
button is selected, then this does nothing.

gotobutton -1, select
Selects the last button of the current manager.

gotobutton focus, select
Selects the button corresponding to the focused window.

gotobutton focus, Iconify
Sends the fvwm command Iconify to the focused window. Note that this does not change the selected button.

bif Next 3, gotobutton 0, select, ret, gotobutton Next, select
If a button is selected, and it‘s the last button, go to button 0. If it‘s not the last button, go to the
next button. Otherwise, do nothing. Basically, this action cycles through all buttons in the current manager.

bif select 7, bif focus 3, gotomanager 0, select, ret, gotobutton focus, \

select, ret, gotobutton down, select
This is good for sending to FvwmIconMan with a SendToModule command. If there is a selected button, it moves
down. Otherwise, if there is a focused button, it is selected. Otherwise, button 0 of manager 0 gets
selected.

?

bif select Select, bif focus Focus, gotomanager 0, select, ret, label Focus, \

gotobutton focus, select, ret, label Select, gotobutton down, select
Same as previous, but using the label instruction.

?

In addition to being bound to keys and mice, actions can be sent from fvwm to FvwmIconMan via the SendToMod‐
ule command. Don‘t quote the command when using SendToModule. Also, due to a bug in the current version of
fvwm, don‘t quote FvwmIconMan either.

简单配置示例(SAMPLE CONFIGURATIONS)

This first example is of a the simplest invocation of FvwmIconMan, which only has one manager, and handles
all windows:

##############################################################
# Load any modules which should be started during
# fvwm initialization
ModulePath /usr/lib/X11/fvwm:/usr/bin/X11
Module FvwmIconMan

# Make FvwmIconMan title-bar-less, sticky, and give it an icon
Style "Fvwm*" Icon toolbox.xpm,NoTitle,NoHandles,Sticky
Style "FvwmIconMan" HandleWidth 5, Handles, BorderWidth 5

##############################################################
##############################################################
#Definitions used by the modules

*FvwmIconMan: NumManagers 1
*FvwmIconMan: Resolution global
*FvwmIconMan: Background slategrey
*FvwmIconMan: Foreground white
*FvwmIconMan: Font 7x13
*FvwmIconMan: ButtonGeometry 100x0
*FvwmIconMan: ManagerGeometry 1x0-0+0

This example is the Reader‘s Digest version of my personal configuration. It has two managers, one for emacs
and one for everything else, minus things with no icon title. Only windows on the current page are displayed.
The use of the drawicons and shape options requires that fvwm and FvwmIconMan are compiled with the correct
options. Note how the geometry and show options are specified per manager, and the others are common to all:

Style "FvwmIconMan" NoTitle, Sticky, WindowListSkip, BorderWidth 0
Style "FvwmIconMan" HandleWidth 0

Key F8 A N SendToModule FvwmIconMan bif select Select, bif focus Focus, \

gotomanager 0, select, sendcommand WarpToWindow, ret, label Focus, \
gotobutton focus, select, sendcommand WarpToWindow, ret, label Select, \
gotobutton prev, select, sendcommand WarpToWindow
Key F9 A N SendToModule FvwmIconMan bif select Select, bif focus Focus, \
gotomanager 0, select, sendcommand WarpToWindow, ret, label Focus, \
gotobutton focus, select, sendcommand WarpToWindow, ret, label Select, \
gotobutton next, select, sendcommand WarpToWindow

?

*FvwmIconMan: NumManagers 2
*FvwmIconMan: Resolution page
*FvwmIconMan: Background steelblue
*FvwmIconMan: Foreground white
*FvwmIconMan: Font 7x13
*FvwmIconMan: UseWinList true
*FvwmIconMan: DrawIcons true
*FvwmIconMan: Shape true
*FvwmIconMan: FollowFocus true
*FvwmIconMan: Sort name
*FvwmIconMan: PlainButton up white steelblue
*FvwmIconMan: SelectButton down white steelblue
*FvwmIconMan: FocusButton up white brown
*FvwmIconMan: FocusAndSelectButton down white brown
*FvwmIconMan: TitleButton raisededge white steelblue
*FvwmIconMan: NoIconAction "SendToModule FvwmAnimate animate"

*FvwmIconMan: 1 Title "Emacs windows"
*FvwmIconMan: 1 IconName "FvwmIconMan: Emacs"
*FvwmIconMan: 1 Format "%i"
*FvwmIconMan: 1 Show resource=emacs resource=gemacs
*FvwmIconMan: 1 ManagerGeometry 1x0-400+0
*FvwmIconMan: 1 ButtonGeometry 200x0

*FvwmIconMan: 2 Title "All windows"
*FvwmIconMan: 2 IconName "FvwmIconMan: all"
*FvwmIconMan: 2 Format "%c: %i"
*FvwmIconMan: 2 DontShow icon=Untitled
*FvwmIconMan: 2 ManagerGeometry 2x4-0+0
*FvwmIconMan: 2 ButtonGeometry 200x0

*FvwmIconMan: transient Geometry 194x100
*FvwmIconMan: transient DontShow icon=Untitled
*FvwmIconMan: transient Action Mouse 0 A sendcommand select select Iconify

*FvwmIconMan: Action Mouse 1 N sendcommand Iconify
*FvwmIconMan: Action Mouse 2 N sendcommand WarpToWindow
*FvwmIconMan: Action Mouse 3 N sendcommand "Module FvwmIdent FvwmIdent"
*FvwmIconMan: Action Key Left N gotobutton Left, select
*FvwmIconMan: Action Key Right N gotobutton Right, select
*FvwmIconMan: Action Key Up N gotobutton Up, select
*FvwmIconMan: Action Key Down N gotobutton Down, select
*FvwmIconMan: Action Key q N quit

UNFINISHED BUSINESS

There is one bug that I know of. A honest to goodness solution to this would be appreciated. When an icon
manager is set to grow upwards or leftwards, on some machines it may wander occasionally.

It doesn‘t handle windows without resource names as gracefully as it should.

上一篇:【每日Leetcode-第三天】无重复字符的最长子串


下一篇:sscanf