「FVWM」- FvwmIconMan

FvwmIconMan,FVWM的图标管理器,通过配置可以实现类似于Windows中任务栏的功能,但又远不止如此。如图用红线框起来的部分(整个截图是一个FvwmButtons,而FvwmIconMan被包含在其中):
如何调用
该模块只能由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只会创建一个管理器窗口[……]

READ MORE

「FvwmPager」

FvwmPager是什么?
FvwmPager是FVWM中的虚拟工作空间,类似于其他Linux发行版中的Workspce概念,但是FvwmPager功能更加强大,支持配置虚拟桌面(“无限”扩大显示器大小)。FvwmPager的样子如下:
模块语法格式
FvwmPager [ -transient ] [ name ] [ firstdesk [ lastdesk ] ]
FvwmPager必须由fvwm产生,所以不能在命令行里进行调用。
[ name ] 模块别名。
[ firstdesk [ lastdesk ] ] FvwmPager会显示firstdesk和lastdesk之间的所有桌面。对于以下几种情况:

如果lastdesk被省略,则只显示firstdesk所代表的桌面。
如果firstdesk和lastdesk都省略,则FvwmPager中显示的是当前桌面。如果切换了桌面,显示的也是切换前的桌面(即,保持不变)。
如果使用星号(*)代替firstdesk,那么切换桌面后,FvwmPager中将显示当前切换到的桌面。

使用FvwmPager模块的配置示例 调用方法如下,将如下行放入配置文件中:

Module FvwmPager 0 3

或者

Module FvwmPager *

或者放入弹出菜单中:

AddToMenu Module-Popup Modules Title
+ Audio Module FvwmAudio
+ Auto Module FvwmAuto 200
+ Buttons Module FvwmButtons
+ Console Module FvwmConsole
+ Ident Module FvwmIdent
+ Banner Module FvwmBanner
+ Pager Module FvwmPager 0 3

或者

+ Pager Module FvwmPager *

如果Pager使用了-transient选项,则下一次释放按钮时,Pager会关闭。请注意,这个选项只在FvwmPager的窗口样式是“Sticky”时才起作用(参见fvwm手册页)。并且也应该使用“StaysOnTop”风格。
例:

Style FvwmPager Sticky, StaysOnTop
*FvwmPager: Rows 1
*FvwmPager: Columns 1
Mouse 3 R C Modu[……]

READ MORE

「FvwmScript」- 用于创建图形用户界面的工具

模块FvwmScript允许您构建许多图形应用程序,如桌面附件、带弹出菜单的按钮面板、模式对话框……
在启动时,FvwmScript读取命令行中指定的文件(Module FvwmScript path/to/file)。该文件包含脚本,并且此脚本未包含在Fvwm的配置文件中。
使用键盘可以完全控制FvwmScript脚本。 (Shift)-Tab环绕在小部件周围;Return模拟鼠标单击;箭头可以移动光标或更改小部件的值;Escape“取消”菜单和PopupMenu。
调用模块
可以通过在.fvwm2rc文件中插入Module FvwmScript name_of_script行来调用FvwmScript。文件“name_of_script”可以以斜杠开头,在这种情况下,它是一个绝对路径,并且读取该文件。如果“name_of_script”不是以斜杠开头,则FvwmScript将在几个不同的位置查找。如果.fvwm2rc包含命令行*FvwmScript:Path path_of_the_script_directory,则FvwmScript将尝试在该目录中查找。如果这不起作用,FvwmScript将尝试系统配置目录和用户配置目录,如fvwm手册页中的“Read”命令所述。
如果要在fvwm初始化期间生成FvwmScript,则可以将启动FvwmScript的命令单独放置在一行上,或者可以绑定到菜单或鼠标按钮或按键,以稍后调用它。
配置选项
可以在配置文件中使用以下命令(有关详细信息,请参阅fvwm(1),MODULE COMMANDS部分)。仅当脚本中未使用相应的脚本命令时,才使用它们,即这些命令不能和脚本混在一起。
*FvwmScript: DefaultFont font 指定要使用的默认字体。 如果未使用此命令或带有Font命令的脚本指定,则假定使用fixed字体。
*FvwmScript: DefaultFore color 指定要使用的默认前景色。 如果未使用此命令或使用ForeColor命令在脚本中指定,则使用黑色。
*FvwmScript: DefaultBack color 指定要使用的默认背景颜色。 如果未使用此命令或使用BackColor命令在脚本中指定,则使用grey85。
*FvwmScript: DefaultHilight color 指定要使用的默认高亮颜色。 如果未使用此命令或在带有HilightColor命令的脚本中指定,则使用grey100。
*FvwmScript: DefaultShadow color 指定要使用的默认阴影颜色。 如果未使用此命令或使用ShadowColor命令在脚本中指定,则使用grey55。[……]

READ MORE

「FVWM」 – 控制窗口状态

本文介绍的命令用于控制窗口的状态。
Close
如果窗口接受删除窗口协议,则会向窗口发送一条消息,要求它正常删除自身。如果窗口不理解删除窗口协议,那么窗口将像Destroy命令一样被销毁。
注意:如果窗口接受删除窗口协议,但没有自行关闭,则不会删除该窗口。
Destroy
销毁应用程序窗口,通常会导致应用程序崩溃。
Delete
向窗口发送消息,要求它自行删除,经常导致应用程序退出。
Iconify [bool]
如果窗口尚未图标化,则将其标记为图标化;如果窗口已经图标化,则将其取消标记。可选参数bool是一个布尔参数。“True”表示只允许图标化,而“False”表示禁止图标化。使用“toggle”在图标化和非图标化状态之间切换。
有许多样式选项会影响图标的外观和行为(例如StickyIcon,NoIcon)。
为了向后兼容,可选参数bool也可以是表示“True”的正数,或者是表示“False”的负数。 请注意,此语法已过时,将来将被删除。
Maximize [flags] [bool|forget] [horizontal[p]] [vertical[p]]

Without its optional arguments (or if the bool bit has the value “toggle”) Maximize causes the window to alternately switch from a full-screen size to its normal size. To force a window into maximized (normal) state you can use a “True” or “False” value for the bool argument.

With just the parameter “forget” a maximized window reverts back into normal state but keeps its current maximized size. This can be useful in conjunction with the commands ResizeMaximize and ResizeMoveMaximize. If the window is not maximized, nothing happens.

With the optional arguments horizontal and vertical, which are expressed as percentage of a[……]

READ MORE

「FVWM」- 配置命令章节列表

命令说明按照如下的章节进行了分组:

菜单命令(Menu commands)
杂项命令(Miscellaneous commands)
窗口的移动和放置(Commands affecting window movement and placement)
焦点和鼠标移动(Commands for focus and mouse movement)
控制窗口状态(Commands controlling window state)
鼠标,键盘,手势绑定(Commands for mouse, key and stroke bindings)
控制窗口样式(The Style command (controlling window styles))
窗口样式(Other commands controlling window styles)
控制虚拟桌面(Commands controlling the virtual desktop)
用户函数及SHELL命令(Commands for user functions and shell commands)
条件命令(Conditional commands)
模块命令(Module commands)
会话管理命令(Quit, restart and session management commands)
颜色集(Colorsets)

按照对新人有帮助的顺序进行了分组。
参考文献
Fvwm Manual[……]

READ MORE

「FVWM」 – 控制Window的样式

出于可读性考虑,本节中的命令不按字母顺序排序。 Style命令的描述可以在本节末尾找到。
FocusStyle stylename options
与Style命令完全相同,但只接受以“FP”开头的焦点策略相关的样式。可以删除前缀,但需要花费一点时间。FocusStyle旨在使配置文件更具可读性。比如:
FocusStyle * EnterToFocus, !LeaveToUnfocus
Style * FPEnterToFocus, !FPLeaveToUnfocus

上述两行配置是等价的。
DestroyStyle style
删除名为style的样式。更改立即生效。 请注意,style不是通配符搜索字符串,而是区分大小写的字符串,应与原始Style命令指定的style完全匹配。
删除带星号(”*”)的样式名是可执行的,但不是推荐的做法。 例如:
DestroyStyle Application*

这将删除名为“Application*”的样式的所有设置,而不是所有以“Application”开头的样式。
WindowStyle options
在所选窗口上设置属性(样式)。选项与Style命令完全相同。
DestroyWindowStyle
删除所选窗口上由WindowStyle命令设置的样式。更改立即生效。
UpdateStyles
所有窗口的样式和外观的所有待定的更新都会立即应用。 例如,如果在FVWM函数内触发的Style、WindowStyle、TitleStyle命令。
Style stylename options …
Style,该命令用于将窗口的属性设置为默认值以外的值,或者设置窗口管理器的默认样式。
stylename,可以是窗口的名称、类、可见名、资源字符串。它可能包含通配符’*’和’?’,它们以通常的Unix文件名方式匹配(通配符的形式)。单个Style命令中的多个样式选项从左到右读取,就好像它们是在单独的命令中一个接一个地发出的一样。 给定样式始终覆盖之前指定的所有冲突样式,即最后指定的样式优先级更高。
注意:没有名称的窗口(WM_NAME)的名称为“Untitled”;没有类的窗口(WM_CLASS,res_class)被赋予“NoClass”类;没有资源字符串的窗口(WM_CLASS,res_name)被赋予资源名“NoResource”。
如果窗口设置了资源名“fvwmstyle”,则在选择样式时,除了任何窗口名称外,还会使用该资源的值。
options,以逗号分隔的样式列表,其中包含一个或多个以下样式关键字。每组样式名称用斜杠(’/’)分隔,通常组内样式之间是互斥的。这些组中的最[……]

READ MORE

「FVWM」 – 杂项命令

# WindowList [(conditions)] [position] [options] [double-click-action]
创建窗口列表菜单,并弹出,其中显示当前桌面上每个窗口的Title和Geometry。
其中,“Geometry”格式为:“desk(layer):x-geometry sticky”,其中desk和layer是相应的数字,sticky是空的或大写字母“S”。图标化窗口的“Geometry”显示在括号中。从窗口列表弹出菜单中选择一个项会导致函数“WindowListFunc”的执行,并以该窗口的窗口ID作为$0传入函数。默认的“WindowListFunc”如下所示:
AddToFunc WindowListFunc
+ I Iconify off
+ I FlipFocus
+ I Raise
+ I WarpToWindow 5p 5p

如果这些默认值不适合您,您可以销毁内置的“WindowListFunc”并创建自己的默认值。
窗口列表菜单使用“WindowList”菜单样式(如果已定义),请参阅MenuStyle命令。示例:
MenuStyle WindowList SelectOnRelease Meta_L

否则使用默认菜单样式。要切换回默认菜单样式,使用命令:
DestroyMenuStyle WindowList

来移除默认的样式。
(conditions)
该参数可用于从窗口列表中排除某些窗口。有关详细信息,请参阅Current命令。
只有符合给定条件的窗口才会显示在窗口列表中。下面的options反之亦然:可以选择窗口列表中不包含的窗口。conditions总是覆盖options。
position
该参数与Menu中的相同。
options
传递给WindowList的选项,使用用逗号分隔,可以是:

Geometry / NoGeometry / NoGeometryWithInfo, NoDeskNum, NoLayer, NoNumInDeskTitle, NoCurrentDeskTitle, MaxLabelWidth width, TitleForAllDesks, Function funcname, Desk desknum, CurrentDesk, NoIcons / Icons / OnlyIcons, NoNormal / Normal / OnlyNormal, NoSticky / Sticky / OnlySticky, NoStickyAcrossPages / StickyAcrossPages / OnlyStickyAcrossPage[……]

READ MORE

「FVWM」- 与模块相关命令

关于模块
一个模块是一个独立的程序,作为一个单独的Unix进程运行,但是命令要传输给fvwm来执行。用户可以编写他们自己的模块来做任何操作,而不会影响fvwm本身的完整性。
模块必须由fvwm产生,以便它可以为fvwm和模块进行通信设置两个管道。管道在启动时为已经打开,管道的文件描述符作为命令行参数提供。
在X会话期间,使用Module命令可以随时通过fvwm生成模块。模块可以在X会话期间一直存在,也可以执行单个任务并退出。如果在fvwm被告知退出时,有模块仍处于活动状态,那么fvwm关闭通信管道并等待从模块传来的一个SIGCHLD信号,指示它已经检测到管道关闭并退出。如果模块无法检测到管道关闭,fvwm在大约30秒后退出。同时执行的模块数量受操作系统的最大同时打开文件数限制,通常在60到256之间。
模块只是传输命令给fvwm命令引擎。命令的格式与配置设置文件中的相同。某些辅助信息也被传送,如在示例模块FvwmButtons中。
模块的配置行
Fvwm维护着一个模块配置行的数据库,该数据库里包含了模块的配置信息。模块配置行格式如下:

*<ModuleName>: <Config-Resource>

其中,<ModuleName>是实模块名称或别名,比如:*TopPanel: Colorset 10或者*FvwmButtons: Colorset 10,其中TopPanel为FvwmButtons的别名,在加载模块的时候会用到这个别名。
这个数据库最初是从配置文件(或从-cmd config命令的输出)中加载的,并且可以之后可以由用户(通过FvwmCommand)或模块进行修改。
当模块运行时,它们读取数据库的适当部分。(这个数据库的概念类似于X resource数据库)。
以下的命令也是用于操作模块配置数据库的。
*module_config_line
用于定义模块配置。module_config_line由模块名称(或模块别名)和模块资源行组成。新的语法允许在模块名称和行的其余部分之间使用分隔符(冒号和可选空格),建议避免冲突。

*FvwmPager: WindowBorderWidth 1
*FvwmButtons-TopRight: Geometry 100×100-0+0
*FvwmButtons-Bottom: Geometry +0-0

DestroyModuleConfig module_config
删除模块的配置条目,以便可以输入新的配置行,有时这也是回退到之前的模块设置的唯一方法。使用该命令这将改变模块在fvwm会话期间运行的[……]

READ MORE

「FVWM」 – 鼠标、键盘、手势的绑定

Key [(window)] Keyname Context Modifiers Function
将键盘键绑定到指定的FVWM命令。语法与Mouse绑定的语法相同,只是用Keyname替换了鼠标按钮编号。通常,按下键时激活键绑定。
Keyname,是/usr/include/X11/keysymdef.h中定义的标准X11键名(没有XK_前缀),或keysym数据库/usr/X11R6/lib/X11/XKeysymDB。只保证在”没有修饰键“或”仅保持Shift键“的情况下生成的键名可以正常工作。
Context,该字段如同在Mouse绑定中的定义,指的是上下文窗口。但是,按下某个键时,上下文窗口是具有键盘焦点的窗口。这不一定与指针所在的窗口相同(使用SloppyFocus或ClickToFocus)。请注意,使用“R”(根窗口)上下文的键绑定无法与SloppyFocus和ClickToFocus一起正常工作。如果遇到问题,请改用PointerKey命令。如果要将键绑定到具有SloppyFocus或ClickToFocus的窗口,当指针不在窗口上时,该窗口应该起作用,fvwm假定指针位于客户端窗口上(即,您必须使用’W’上下文)。菜单的特殊上下文“M”可用于(重新)定义菜单控件。它可以单独使用,也可以与’T’,’S’,’I’,'[‘,’]’,’-‘和’_’一起使用。有关详细信息,请参阅“Menu绑定”部分。
Modifiers,该字段如同在Mouse绑定中的定义,修饰键,前缀键。
Function,要执行的FVWM命令。如果Function为’-‘,则删除绑定。
以下示例在按下Alt-Ctrl-Shift-F11时弹出内置窗口列表,无论鼠标指针位于何处:
Key F11 A SCM WindowList

将键绑定到标题栏按钮会导致该按钮的显示。有关详细信息,请参阅Mouse命令。
Mouse [(window)] Button Context Modifiers Function
定义鼠标绑定。
Button
Button,是鼠标按钮编号。如果Button为”0“,则任何按钮都执行指定的Function。请注意,只有鼠标按钮1到5会被X11完全支持。上述任何数字仅部分有效。复杂功能不能与这些按钮一起使用,也不能用任何需要按住按钮拖动指针的操作。这是由于X11的限制。默认情况下,允许的最高按钮数为”9“。
Context
Context,描述绑定的适用位置。有效上下文为:

R:根窗口
W:应用程序窗口
D:桌面应用程序(如kdesktop或Nautilus桌面)、
T:窗口标题栏
S:窗口四周(侧面、顶部、底部栏)[……]

READ MORE

「FVWM中,用户函数及SHELL命令」

PipeRead command [Quiet]
使FVWM中command的输出中读取FVWM命令来执行。command由/bin/sh执行,如同你在shell中执行的那样。如果command超过一个字,则需要进行引用。该功能可以根据目录的内容构建动态菜单。如果使用了Quite关键字,则命令没有找到也不会产生信息。
如下示例:

AddToMenu HomeDirMenu
PipeRead ‘for i in $HOME/*; \
do echo “+ $i Exec xterm -e vi $i”; done’

在PipeRead在执行命令的时候,会修改光标的状态。然而,有些命令(如xwd)需要控制光标的状态,这种有PipeRead的情况下会无效。如果要禁用PipeRead修改光标状态的功能,可以使用如下FVWM命令:

BusyCursor Read off

PipRead命令会同步执行。如果你想用Exec执行某些东西,但是需要同步执行command,可以这么做:

PipeRead ‘command 1>&2’

重定向会使所有的command输出进入stderr,而不是被FVWM按序列执行的命令。如果命令可以执行则PipeRead返回1。有关返回码的含义查看Conditional Commands部分。
Read filename [quiet]
使fvwm从名为filename的文件中读取配置命令。 如果使用了关键字Quiet,则在没有找到文件的情况下不会产生任何消息。 如果filename不以斜杠(’/’)开头,则fvwm会查找用户的数据目录,然后查找系统数据目录,用户的数据目录默认为$HOME/.fvwm,可以通过设置FVWM_USERDIR环境变量来覆盖它。 如果给定的文件可以被读取,则返回1;否则返回-1(有关返回代码的含义,参阅Conditional Commands部分)。
SetEnv variable value
设置环境变量variable的值value,类似于shell的export或setenv命令。变量会被由FVWM直接产生的进程继承。该命令与FvwmM4模块结合时非常有用。如下示例:

SetEnv height HEIGHT

该命令使FvwmM4将由fvwm启动的进程可以使用$height环境变量,值为HEIGHT。如果value中包含空格,则需要对value进行引用。如果没有给出value,则会删除变量。[……]

READ MORE

「FVWM」- Window Styles

# BorderStyle state [style] [–[!]flag …]
定义边框样式。
state
“Active”, “Inactive”。如果忽略,则同时为二者。如果style和flag在括号中,则可以每行指定多个state值。
style
可用按钮样式的子集。并且只能是TiledPixmap(与斜角颜色相匹配的均匀像素图以这种方式效果最佳)或者Colorset。如果没用指定style,则可以在不重置style的情况下,修改flag值。
flag
如果以`!`为前缀,则表示相反效果。
HiddenHandles 隐藏四个角(对!Handles窗口无效),但是作用还在。默认禁用。 NoInset 补充HiddenHandles,不再绘制内斜面。趋向于扁平 Raised 升起(default). Sunk 下沉 Flat 扁平
To decorate the active and inactive window borders with a textured pixmap, one might specify:

BorderStyle Active TiledPixmap marble.xpm
BorderStyle Inactive TiledPixmap granite.xpm
BorderStyle Active — HiddenHandles NoInset

To clear the style for both states:

BorderStyle Simple

To clear for a single state:

BorderStyle Active Simple

To unset a flag for a given state:

BorderStyle Inactive — !NoInset

标题栏按钮可以使用ButtonStyle的UseBorderStyle边框样式。[……]

READ MORE

「Linux」- Tiling Window Manager

相关连接
Tiling Window Management and i3wm config additions[……]

READ MORE

「XMonad」

xmonad,动态平铺X11window管理器。使用Haskell编写和配置。在普通window管理器中,需要花费很多时间对齐和搜索window,而xmonad会使用自动布局算法进行管理,可以动态重新配置,以最大限度地利用屏幕。window管理器的所有功能都可以从键盘访问:鼠标是完全可选的。在Haskell中配置了xmonad,用户可以在配置文件中实现自定义布局算法。 xmonad的原则是可预测性:用户应该事先知道将由任何动作产生的window排列。
默认情况下,xmonad提供了三种布局算法:tall、wide、fullscreen。在tall、wide模式下,窗户被平铺并布置成防止重叠并最大化屏幕使用。一组window在虚拟屏幕上分组在一起,每个屏幕都有自己的布局,可以动态重新配置。通过Xinerama支持多个物理显示器,允许同时显示多个屏幕。
通过利用具有丰富的静态类型系统的现代函数式语言的表现力,xmonad提供了一个完整的,特色的window管理器,不超过1200行代码,重点在于正确性和稳定性。使用类型系统提供的静态保证和基于类型的自动化测试的组合来检查window管理器的内部属性。这样做的好处是代码很容易理解,易于修改。
xmonad将每个window放入“workspace”。每个workspace可以有任意数量的window,可以通过mod-j和mod-k进行循环。 Windows也可以全屏显示,水平平铺或垂直平铺。您可以使用mod-space切换布局模式,这将通过可用的模式进行循环。
当使用多个显示器(Xinerama)运行时,每个屏幕上只有一个workspace可见。 mod-{w,e,r}在屏幕之间切换焦点,而shift-mod-{w,e,r}将当前window移动到该屏幕。当xmonad启动时,工作区1在屏幕1上,工作区2在屏幕2等上。当将workspace切换到已经可见的工作区时,将交换当前和可见的workspace。
截图
下面的这几张图都是盗的:
默认的快捷键
mod指的是键盘上的`Alt’键。
mod-shift-return 启动终端。
mod-shift-c 关闭获得焦点的Window
mod-space 通过可用的布局算法,轮流处理。
mod-shift-space 将当前workspace的布局重置为默认的布局。
mod-n 将window调整到正确的大小。
mod-tab 将焦点切换到下一个window
mod-shift-tab 将焦点切换到上一个window
mod-j 将焦点切换到下一个窗口
mod-k 将焦点切换到上一个窗口
mod-m 将焦点切换到主窗口
mo[……]

READ MORE

「Linux下,xmonad安装」

使用发行版的源直接安装

#!/bin/bash

apt-get install xmonad

使用源码安装xmonad
xmonad分为两部分:

The core package:启动和运行xmonad的基本程序。
The contrib package:增强xmonad功能的扩展模块。

像这种不涉及系统管理的安装,我还是习惯从源码安装。xmonad的安装需要Haskell工具链。
安装GHC 首先需要安装GHC Haskell编译器。 我还是选择从源码里安装GHC。各个发行版里应该都有,名字类似ghc之类的。如果发行版里没有,去官网上下载也可以。
安装X11库 安装X11相关的C库。从源码安装或使用软件包管理器安装都可以里安装都可以。libx11-dev、libXinerama-dev、libXext-dev是几个典型需要安装的库,一定要安装头文件。
安装Cabal-Install 安装Cabal-Install是为了安装xmonad需要的依赖:

#!/bin/sh

cabal install X11
cabal install mtl

安装xmonad的core package 从Github下载源码,进入源码目录,执行:

#!/bin/sh

runhaskell Setup configure –prefix=/usr/local
runhaskell Setup build
runhaskell Setup install

安装的可执行程序
xmonad 主程序文件。平铺式窗口管理器。
xmonad-session 作为一个session来启动XMonad窗口管理器。 SHELL脚本。
gnome-flashback-xmonad 启动带有XMonad的GNOME Flashback session来作为窗口管理器。
参考文献
dpkg -L xmonad[……]

READ MORE

「Linux,xmonad命令使用说明」

xmonad – a tiling window manager
Description

xmonad is a minimalist tiling window manager for X, written in Haskell. Windows are managed using automatic
layout algorithms, which can be dynamically reconfigured. At any time windows are arranged so as to maximize
the use of screen real estate. All features of the window manager are accessible purely from the keyboard: a
mouse is entirely optional. xmonad is configured in Haskell, and custom layout algorithms may be implemented
by the user in config files. A principle of xmonad is predictability: the user should know in advance pre‐
cisely the window arrangement that will result from any action.

By default, xmonad provides three layout algorithms: tall, wide and fullscreen. In tall or wide mode, win‐
dows are tiled and arranged to prevent overlap and maximize screen use. Sets of windows are grouped together
on virtual screens, and each screen retains its own layout, which may be reconfigured dynamically. Multiple
physical monitors are supported via Xinerama, allowing simultaneous display of a number of screens.

By utilizing the expressivity of a modern functi[……]

READ MORE

「XMonad」- 相关资源、常见问题处理

学习资料
http://www.ruanyifeng.com/blog/2017/07/xmonad.html
相关工具
gmrun vimperator dzen, Homepage, Git Repo xmobar[……]

READ MORE

「dmenu」

dmenu是用于X的动态菜单,最初是为dwm设计的,可以有效管理大量用户定义的菜单项。
安装
阅读源码目录下的README文件,里面介绍了安装方法。
构建dmenu需要安装Xlib的头文件。
安装的可执行程序
dmenu dmenu_run,SHELL脚本文件。 dmenu_path,SHELL脚本文件。 stest
参考文献
Homepage git repo[……]

READ MORE

「i3wm」

i3/i3: A tiling window manager
参考文献
i3 User’s Guide[……]

READ MORE

「Linux Desktop」- 系统托盘

问题描述
该笔记将记录:在 Linux Desktop 中,与系统托盘(System Tray)相关的内容,以及常见问题处理;
解决方案
System Tray
freedesktop/System Tray Protocol Specification
在 GNOME 中,参考 GNOME/System Tray 笔记;
在其他桌面中,需要使用独立的托盘程序:stalonetray
Application Indicator
What is the difference between indicators and a system tray?

其能够视为 System Tray 的替代品,但是两者并不相同: 1)所示如图,信封图标包含 Chat Mail Broadcast 三个应用,因为它们都属于消息通讯类型的应用 —— 即 Indicator 就是用来包含同类应用程序,每个 Indicator 内包含多个同类型的应用程序; 2)但是,在实际实践中,各应用程序都会创建自己的 Indicator 图标,所以说是 System Tray 的替代品;
参考文献
System Tray Protocol Specification unity – What does indicator-application-service do? – Ask Ubuntu DesktopExperienceTeam/ApplicationIndicators – Ubuntu Wiki

章节列表
「Stalonetray」- 系统托盘 「stalonetray」 「GNOME」- 启用系统托盘图标(System Tray)[……]

READ MORE

「GNOME」- 启用系统托盘图标(System Tray)

问题描述
在 GNOME 3.16 中,系统托盘被隐藏到桌面左下角。当鼠标移动到那里时将自动显示,当鼠标移走后将自动隐藏。
在 GNOME 3.26 中,系统托盘图标被彻底隐藏。这就不是很方便,我们需要使用系统托盘,比如显示输入法状态等等。
至于为什么隐藏及相关讨论,可以参考(1)Status Icons and GNOME;(2)By what logic was system tray removed? 讨论。隐藏原因并不是我们的关注重点,我们也无法阻拦,所有就不再讨论这些内容。
该笔记将记录:在 GNOME 3 中,如何启用系统托盘功能。
解决办法
虽然官方已经移除该功能,但是有相应的扩展可以使用。
# 07/13/2019 目前,我们使用 TopIcons Plus by phocean 扩展
TopIcons Plus
我目前使用的扩展是 TopIcons Plus by phocean,可以到官方 GNOME Shell Extensions 站点下载。
安装方法不再介绍,可以参考 GNOME Shell Extensions 笔记。(我们直接从仓库中安装,因为仓库的应用经过官方测试,可靠性更高)
系统托盘消失
如果 Tray offset 属性设置的值“不对”,会导致打开 Activities 时,系统托盘消失。目前我们设置的参数为 2(具体情况可能取决于顶栏的控件数?)
插件不再维护
Pausing (stopping?) TopIcons-Plus #91
# 03/21/2021 在 Ubuntu 20.04 中,该插件(通过 APT 从源中安装)已经开始出现问题:Icon Size 属性无法改变图标大小;
KStatusNotifierItem/AppIndicator Support
插件地址:https://extensions.gnome.org/extension/615/appindicator-support
注意事项,应用程序需要支持 Indicator 特性。
参考文献
How to restart GNOME Shell from command line? GitHub/phocean/TopIcons-plus[……]

READ MORE

「Stalonetray」- 系统托盘

「stalonetray」是什么?
它是用于X11的独立的「系统托盘」,如下截图:
下面的截图是Windows中的「系统托盘」,有时候我们也称之为「状态栏」:
它具有完整的XEMBED支持及最小依赖:仅依赖X11库。
「stalonetray」几乎可以与任何符合EWMH标准的窗口管理器一起工作,比如:FVWM、OpenBox、Enlightenment、ion3等等。
安装方法
方法一、使用源码编译安装
进入源码目录:

#!/bin/bash

# 下载源码:https://sourceforge.net/projects/stalonetray/files/
# 略…

# 解压,进入源码目录
tar -xf stalonetray-0.8.3.tar.bz2
cd stalonetray-0.8.3

# 编译安装
autoreconf -i
./configure –prefix=/usr/local
make && make install

方法二、从发行版的源中安装

#!/bin/bash

# Kali GNU/Linux Rolling
apt-get install stalonetray

安装的可执行程序
stalonetray 主要的可执行程序。执行该命令后将会显示一个窗口,包含窗口中显示了托盘图标。
参考文献
访问Stalonetry主页 查看在线手册 News:http://stalonetray.sourceforge.net/news.html Hints:http://stalonetray.sourceforge.net/wmhints.html archwiki/stalonetray:https://wiki.archlinux.org/index.php/stalonetray[……]

READ MORE

「stalonetray」

有两种方式控制stalonetray的行为:(1)命令行选项;(2)配置文件。命令行选项的优先级高于配置文件,所以,可以通过命令行选项覆盖配置文件中的设置。
对于命令行选项,它有两种格式:一种长的(比如:–background color);一种短的(比如:-bg color)。
对于配置文件,默认读取$HOME/.stalonetrayrc文件。配置文件中的键值对是不区分大小写的,每行一个配置。井号(#)表示注释。可以通过-c/–config来指定配置文件的位置。
对于标示类型的选项(参数为bool值),它的参数是可以忽略的。如果忽略,则默认为true。false表示禁用该选项。另外:true\yes\1是等价的;false\no\0是等价的。
命令语法格式
stalonetray [option…]
命令支持的选项及配置参数
注意事项 以下内容中,带–或者-的为命令行参数,其他的为配置文件选项。比如:–geometry geometry_spec, geometry geometry_spec:–geometry为命令行选项;geometry为配置文件中的选项;geometry_spec:为参数。
-h, –help 显示帮助信息并退出。
-c filename, –config filename 指定配置文件的位置,来代替默认的$HOME/.stalonetrayrc。
控制图标摆放及增长
–geometry geometry_spec, geometry geometry_spec 将stalonetray的初始geometry设置为geometry_spec。使用标准X表示法来指定:widthxheight[+x[+y]],但其中width和height并不是像素,而是图标槽数量。默认值:1×1+0-0。
–max-geometry geometry_spec, max_geometry geometry_spec 与geometry选项类似,但用于控制托盘中图标的最大行数和最大列数。格式为x*y。x表示水平图标个数,y表示总行数。 默认值:0x0,表示无限制。
–grow-gravity gravity, grow_gravity gravity 指定托盘图标增长方向(N,S,W,E,NW,NE,SW,SE)。 例如:如果指定NW,则托盘的窗口将垂直向下并向右水平增长(相对于窗口左上角或西北角);在W的情况下,托盘的窗口只能水平向左生长,并且将垂直向上和向下增长,保持其中心的位置。注意:后者的行为是0.8版本之后才有的。默认值:NW。
–icon-gravity gravity, icon_gravity gravity[……]

READ MORE

「FCITX」- Free Chinese Input Toy for X

轻量级输入法框架,旨在为Linux提供环境无关环境的语言支持。它支持很多不同的语言,并提供了许多有用的非CJK功能。
参考文献
Fcitx项目在GitHub的主页 Fxitx官方Wiki 在ArchWiki中Fcitx页面 官网中Fcitx输入法的下载页面[……]

READ MORE

「FCITX」- 安装

通过仓库安装
在 Kali GNU/Linux Rolling、Ubuntu 等 Debian 衍生版中,执行如下安装命令:

apt-get install fcitx fcitx-bin fcitx-tools fcitx-libs-dev fcitx-table-wbpy

我们这安装的是中文输入法(fcitx-table-wbpy);
通过编译安装
源码目录下的 INSTALL 文件
以下内容参考了源码目录下的 INSTALL 文件,并进行整理。详细内容请仔细阅读 INSTALL 文件;
第一步、源码获取
访问 GitHub 仓库,获取源码,拉取 master 分支:

git clone https://github.com/fcitx/fcitx

第二步、安装需要的依赖
Dependency ===================== LibX11, Cairo-Xlib for GUI Wget for download data file (if it a full tarball, no need for this)
Optional Dependency ===================== pango-cairo for better font rendering (recommended) opencc for new Simplified Chinese to Traditional Chinese engine dbus for kimpanel support doxygen for build doc qt for qt im module, and qt based config plugin gtk for gtk im module. gir for gobject introspection support for fcitx-gclient
第三步、构建安装

# 创建构建目录,并进入目录(保持源码目录干净)
mkdir build && cd build

# 准备配置
# 如果要指定安装路径使用:cmake .. -DCMAKE_INSTALL_PREFIX=<installdir>
cmake ..

# 构建安装
make && make install

#1 Could not find a package configuration file provided by “ECM” (requested version 0.0.11)
原因:这是因为缺少了 cmake 的附加模块;
解决:需要安装 extra-cmake[……]

READ MORE

「createPYMB,readPYBase,readPYMB,mb2org,scel2org(1)」-

Fcitx的Pinyin输入法相关工具
命令语法格式
createPYMB <PinyinFile> <PhraseFile>
readPYBase [-b <PinyinMBFile>] [-h]
readPYMB [-f <PhraseMBFile>] [-s] [-h]
mb2org [-b <PinyinMBFile>] [-f <PhraseMBFile>] [-s] [-h]
scel2org [-o <Phrase File>] [-h]
命令描述
这几个命令都与Fcitx的Pinyin输入法相关,可以用于创建、转化词库。
命令支持的选项及含义
-b <PinyinMBFile> 如果未指定该选项,它会读取系统中默认的pybase.mb文件。
-f <PhraseMBFile> 如果未指定,它会读取用户默认的PhraseMBFile文件,该文件名为~/.config/fcitx/pyusrphrase.mb。
-s 如果指定该选项,它使用系统格式读取PhraseMBFile文件,否则会以用户格式来读取它。
-h 显示帮助信息并退出。
PinyinFile 这种文件是一个由拼音以及一个字符构成的条目的列表,拼音和字符之间使用逗号分隔,每个条目在文件中占据一行。Fcitx的源码目录中有一个名为gbkpy.org的文件,该文件是一个PinyinFile文件。
PhraseFile 这种文件是一个单引号分隔的拼音以及短语构成的条目的列表,每个条目占据了一行。在Fcitx中默认的PhraseFile文件可以在GoogleCode上下载。
PinyinMBFile 这种文件是PinyinFile的二进制格式。
PhraseMBFile 这种文件是PhraseFile的二进制格式。~/.config/fcitx/pyuserphrase.mb文件为用户的PhraseMBFile。该文件有两种格式:系统格式;用户格式。系统格式只能由createPYMB命令生成,用户格式只能在使用Fcitx的Pinyin输入法时自动生成。
命令的输出
createPYMB
该命令会生成pybase.mb文件和pyphrase.mb文件。其中,pybase.mb是PinyinMBFile文件,而pyphrase.mb是PhraseMBFile文件。
mb2org, readPYBase, readPYMB
这三个命令会将结果打印到标准输出。
命令readPYBase与readPYMB主要用于更多地打印与Pinyin[……]

READ MORE

「fcitx(1)」-

用于XIM中文输入法框架
命令语法格式
fcitx [OPTION]
命令描述
本文简短的介绍fcitx命令。
Fcitx是一个中文输入法,其设计不依赖于任何桌面环境。它包括默认输入的Pinyin和Table,但它也可以支持其他输入法。
命令支持的选项及含义
-r 替换正在运行的fcitx。
-d 作为守护进程运行。这是默认的。
-D 不要作为守护进程运行。
-s[sleep time] 覆盖配置文件中的延迟启动时间设置。如果[sleep time]为0,表示立即启动。
-u, –ui[ui name] 强制使用指定的用户界面。
–enable[addon A,addon B] 覆盖配置文件中的附加组件启用设置,通过该选项指定要启用的附加组件。多个附加组件名之间使用逗号分隔。
–disable[addon A,addon B] 覆盖配置文件中的附加组件禁用设置,通过该选项指定要禁用的附加组件。多个附加组件名之间使用逗号分隔。该选项的优先级高于–enable选项。
-v 显示版本信息并退出。
-h 显示帮助信息并退出。z
相关环境变量
XMODIFIERS 如果设置了$XMODIFIERS,fcitx将运行由$XMODIFIERS指定的名称,否则使用名称fcitx。参考官网中对该环境变量的说明。
相关手册
更多更多详细的内容可以参考官网中的介绍。
参考文献

man 1 fcitx, version 2010-12-16
XIM的输入法协议介绍

更新日志

06/29/2018 创建文章[……]

READ MORE

「fcitx-autostart(u)」-

功能简述
启动Fcitx输入法
常用命令
启动 Fcitx 输入法:

# fcitx-autostart

语法格式

fcitx-autostart

命令描述
命令 fcitx-autostart 是个 Shell 脚本,它通过 fcitx-remote 命令检查 Fcitx 是否已经启动。如果 Fcitx 没有启动,则调用 fctix 命令来启动Fcitx 输入法。如果 Fcitx 已经启动,则打印 Fcitx is running correctly. 消息。
命令选项

参考文献

cat /usr/bin/fcitx-autostart[……]

READ MORE

「fcitx-configtool(u)」-

Fcitx输入法配置工具
命令语法格式
fcitx-configtool
命令描述
它是一个Shell脚本,用于配置Fcitx输入法。该工具的行为如下:

如果安装GUI配置工具(Fcitx-Configtool),则该命令运行GUI配置工具来配置Fcitx输入法;
如果没有安装GUI配置工具,则会启动编辑器对配置文件进行编辑。配置文件位于$HOME/.config/fcitx/conf $HOME/.config/fcitx/config中。

命令支持的选项及含义

参考文献

在Fcitx主页中对Configtool的介绍
如何编译安装Configtool工具

更新日志

06/30/2018 创建文章[……]

READ MORE

「fcitx-dbus-watcher(u)」-

无相关手册和文档。目测是用于监控DBus套解字文件,非用户工具。
更新日志

06/30/2018 创建文章[……]

READ MORE

「fcitx-diagnose(u)」-

环境诊断
命令行语法格式
fcitx-diagnose
命令描述
命令fcitx-diagnose是一个Shell脚本,它通过对Fcitx运行的环境进行检查,并报告其中的问题。
命令支持的选项及含义

参考文献

cat /usr/bin/fcitx-diagnose

更新日志

06/30/2018 创建文章[……]

READ MORE